<?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>208575</bug_id>
          
          <creation_ts>2020-03-04 08:51:43 -0800</creation_ts>
          <short_desc>Add an SPI to allow UserStyleSheet injection to target a specific WKWebView</short_desc>
          <delta_ts>2020-04-02 15:35:45 -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>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208644</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=209934</see_also>
          <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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625534</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-04 08:51:43 -0800</bug_when>
    <thetext>Add an SPI to allow UserStyleSheet injection to target a specific WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625545</commentid>
    <comment_count>1</comment_count>
      <attachid>392421</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-04 09:10:31 -0800</bug_when>
    <thetext>Created attachment 392421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625546</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-04 09:10:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/59773690&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625575</commentid>
    <comment_count>3</comment_count>
      <attachid>392433</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-04 09:57:10 -0800</bug_when>
    <thetext>Created attachment 392433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625620</commentid>
    <comment_count>4</comment_count>
      <attachid>392433</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 10:50:47 -0800</bug_when>
    <thetext>Comment on attachment 392433
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:47
&gt; +- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly  userContentWorld:(_WKUserContentWorld *)userContentWorld;

Nit: extra space.

&gt; Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp:457
&gt; +                page-&gt;injectUserStyleSheet(userStyleSheet);

Why do we need a separate way to inject a stylesheet?  Can&apos;t we just use the existing way, but if there is a page id and it&apos;s different than the current page id, do nothing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625622</commentid>
    <comment_count>5</comment_count>
      <attachid>392433</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-04 10:55:15 -0800</bug_when>
    <thetext>Comment on attachment 392433
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:53
&gt; +- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly  userContentWorld:(_WKUserContentWorld *)userContentWorld

Extra space here too

&gt;&gt; Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp:457
&gt;&gt; +                page-&gt;injectUserStyleSheet(userStyleSheet);
&gt; 
&gt; Why do we need a separate way to inject a stylesheet?  Can&apos;t we just use the existing way, but if there is a page id and it&apos;s different than the current page id, do nothing?

I know the answer - WebCore page&apos;s don&apos;t know their page id, so the page id check has to be up in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625684</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-04 12:05:48 -0800</bug_when>
    <thetext>Committed r257870: &lt;https://trac.webkit.org/changeset/257870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626125</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-05 09:29:13 -0800</bug_when>
    <thetext>Some followup work in bug 208644.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392421</attachid>
            <date>2020-03-04 09:10:31 -0800</date>
            <delta_ts>2020-03-04 09:57:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208575-20200304181030.patch</filename>
            <type>text/plain</type>
            <size>25186</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhODhkNjVmYjEzYTYx
Y2RmNjNmNjY2OTU0MjU1MDgzN2YzOWFiOS4uZGE0ZDIyYmU4MzEzNzBhMjk3N2M3ZWQyMTMzZWIw
ZDE4ZWU5OGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTA0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBh
bGxvdyBVc2VyU3R5bGVTaGVldCBpbmplY3Rpb24gdG8gdGFyZ2V0IGEgc3BlY2lmaWMgV0tXZWJW
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1
NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NzczNjkwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gbWVtYmVyIHRvIFVzZXJTdHlsZVNoZWV0IHdoaWNoIGluZGljYXRlcyB3aGV0aGVy
IHRoZSBVc2VyU3R5bGVTaGVldCBpcyBzdXBwb3NlZAorICAgICAgICB0byBiZSBpbmplY3RlZCBm
b3IgYWxsIFdLV2ViVmlld3MsIG9yIG9ubHkgYSBzcGVjaWZpYyB0b3AtbGV2ZWwgV0tXZWJWaWV3
IGFzc29jaWF0ZWQgd2l0aCBhIFBhZ2Ugd2l0aCB0aGUgZ2l2ZSBJRC4KKworICAgICAgICBJbiBF
eHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKSwgVXNl
clN0eWxlU2hlZXRzIHdpdGggYSBzcGVjaWZpZWQgcGFnZUlEIGFyZSBpZ25vcmVkLiBJbnN0ZWFk
LAorICAgICAgICB3ZSBub3cgYWxzbyBjb25zaWRlciBDU1NTdHlsZVNoZWV0cyBsaXN0ZWQgaW4g
dGhlIG5ldyBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzIHdoaWNoIGNvbnRhaW5zIHBhZ2Utc3Bl
Y2lmaWMgc3R5bGVzaGVldHMKKyAgICAgICAgdG8gYmUgaW5qZWN0ZWQgZm9yIHRoZSBhc3NvY2lh
dGVkIERvY3VtZW50LgorCisgICAgICAgIFRoZSBuZXcgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hl
ZXQoKSBtZXRob2QgYWxsb3dzIHRoZSBhZGRpdGlvbiBvZiBhIFVzZXJTdHlsZVNoZWV0IG9uIGl0
cyBkb2N1bWVudHMnIEV4dGVuc2lvblN0eWxlU2hlZXRzLAorICAgICAgICBhbmQgd2lsbCBjYWxs
IHRoaXMgbWV0aG9kIGVpdGhlciBmb3IgdGhlIG1haW4gZnJhbWUncyBEb2N1bWVudCwgb3IgYWxs
IERvY3VtZW50cywgZGVwZW5kaW5nIG9uIHRoZSBVc2VyU3R5bGVTaGVldCdzIGNvbmZpZ3VyYXRp
b24uCisKKyAgICAgICAgRmluYWxseSwgdGhlc2UgbmV3IHRhcmdldGVkIFVzZXJTdHlsZVNoZWV0
cyBjYW4gYmUgcmVtb3ZlZCB2aWEgUGFnZTo6cmVtb3ZlSW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgp
IGFuZAorICAgICAgICBFeHRlbnNpb25TdHlsZVNoZWV0czo6cmVtb3ZlUGFnZVNwZWNpZmljVXNl
clN0eWxlU2hlZXQoKS4KKworICAgICAgICAqIGRvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVT
aGVldHM6OmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjpyZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6ZGV0YWNoRnJvbURv
Y3VtZW50KToKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuaDoKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5qZWN0VXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlSW5qZWN0ZWRVc2VyU3R5bGVT
aGVldCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9Vc2VyU3R5bGVT
aGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNoZWV0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0OjpwYWdlSUQgY29uc3QpOgorCiAy
MDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZS1hZGQgYEluc3BlY3RvckZyb250ZW5kSG9zdGAgc3VwcG9ydCBmb3Ig
bW92aW5nIHRoZSBpbnNwZWN0ZWQgd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdmNDk3N2YzNzI3MDZkMzMw
YWFlZjFjMzkzMzUwMGFjNDA2NDI5MjUuLmY3MDJmNjIyYjMzYjdhODE0ZmY2ZWExZmNmZjg5MTk1
NDM2ZjA3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDMtMDQgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93
IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZpZXcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk3NzM2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgV2ViQ29yZSBhZGRzIGEgbmV3IE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBtZW1iZXIgdG8gVXNlclN0eWxlU2hlZXQsIHdlIG5vdyBlbmNv
ZGUgdGhhdCBtZW1iZXIgdG8gYmUgcHJlc2VydmVkCisgICAgICAgIGFjcm9zcyBVSSBhbmQgV2Vi
IHByb2Nlc3Nlcy4KKworICAgICAgICBVc2luZyB0aGlzIG5ldyBtZW1iZXIsIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlciBub3cgZGV0ZXJtaW5lcyB0aGF0IGEgVXNlclN0eWxlU2hlZXQgbWVhbnQg
dG8gdGFyZ2V0IGEgc3BlY2lmaWMgcGFnZQorICAgICAgICB3YXMgYWRkZWQgaW4gYWRkVXNlclN0
eWxlU2hlZXRJbnRlcm5hbCgpLCBmaW5kcyB0aGUgbWF0Y2hpbmcgV2ViUGFnZSwgYW5kIGNhbGxz
IGluamVjdFVzZXJTdHlsZVNoZWV0KCkgb24gaXRzIGJhY2tpbmcgUGFnZQorICAgICAgICBvYmpl
Y3QuIENvbnZlcnNlbHksIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclN0eWxl
U2hlZXRJbnRlcm5hbCgpIHdpbGwgY2FsbCBpbnRvIFBhZ2U6OnJlbW92ZUluamVjdGVkVXNlclN0
eWxlU2hlZXQoKS4KKworICAgICAgICBGaW5hbGx5LCB3ZSBvZmZlciBhIG5ldyBpbml0aWFsaXpl
ciBvbiBfV0tVc2VyU3R5bGVTaGVldCB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZpZXcsIGFu
ZCBpdHMgcGFnZSdzIElEIHdpbGwgYmUgc2V0IG9uIHRoZQorICAgICAgICBiYWNraW5nIFVzZXJT
dHlsZVNoZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1b
X1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yV0tXZWJWaWV3OmZvck1haW5GcmFt
ZU9ubHk6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXRJbnRlcm5hbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclN0eWxlU2hlZXRJ
bnRlcm5hbCk6CisKIDIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCmluZGV4IDNiNTZhMjJiMDBlYmUwZjBjYTJm
ZWE1MTRhY2VjNzBhOGI0ZDEwZGUuLjcwNTA1NTIxYTcxMDllMWI5YmJmN2ViYzRmMzMyNTEyZTg4
YTZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcApA
QCAtMTI3LDcgKzEyNywxNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKCFvd25pbmdQYWdlKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2VTcGVjaWZpY1N0eWxlU2hlZXQg
OiBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzKSB7CisgICAgICAgIGlmIChwYWdlU3BlY2lmaWNT
dHlsZVNoZWV0LT5jb250ZW50cygpLmlzVXNlclN0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIG1f
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMuYXBwZW5kKHBhZ2VTcGVjaWZpY1N0eWxlU2hlZXQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBw
ZW5kKHBhZ2VTcGVjaWZpY1N0eWxlU2hlZXQpOworICAgIH0KKwogICAgIG93bmluZ1BhZ2UtPnVz
ZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoVXNlclN0eWxlU2hlZXQoWyZdKGNvbnN0IFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkgeworICAgICAgICBpZiAodXNlclN0eWxlU2hlZXQu
cGFnZUlEKCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHVzZXJTdHlsZVNo
ZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgbV9kb2N1bWVu
dC5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ1LDYgKzE1NSwy
MyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRD
YWNoZSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6Omlu
amVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2Vy
U3R5bGVTaGVldCkKK3sKKyAgICBhdXRvIHNoZWV0ID0gY3JlYXRlRXh0ZW5zaW9uc1N0eWxlU2hl
ZXQoY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fZG9jdW1lbnQpLCB1c2VyU3R5bGVTaGVldC51cmwo
KSwgdXNlclN0eWxlU2hlZXQuc291cmNlKCksIHVzZXJTdHlsZVNoZWV0LmxldmVsKCkpOworICAg
IG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMuYXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKKyAgICBp
bnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKK30KKwordm9pZCBFeHRlbnNpb25T
dHlsZVNoZWV0czo6cmVtb3ZlUGFnZVNwZWNpZmljVXNlclN0eWxlU2hlZXQoY29uc3QgVXNlclN0
eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGJvb2wgcmVtb3ZlZFN0eWxlU2hlZXQg
PSBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoW3VzZXJTdHls
ZVNoZWV0XShhdXRvJiBjc3NTdHlsZVNoZWV0KSB7CisgICAgICAgIHJldHVybiBjc3NTdHlsZVNo
ZWV0LT5jb250ZW50cygpLm9yaWdpbmFsVVJMKCkgPT0gdXNlclN0eWxlU2hlZXQudXJsKCk7Cisg
ICAgfSk7CisKKyAgICBpZiAocmVtb3ZlZFN0eWxlU2hlZXQpCisgICAgICAgIGludmFsaWRhdGVJ
bmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOworfQorCiB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRz
OjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKQogewogICAgIG1faW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGVWYWxpZCA9IGZhbHNlOwpAQCAtMjEwLDYgKzIzNyw4IEBAIHZvaWQgRXh0
ZW5zaW9uU3R5bGVTaGVldHM6OmRldGFjaEZyb21Eb2N1bWVudCgpCiAgICAgICAgIHNoZWV0LT5k
ZXRhY2hGcm9tRG9jdW1lbnQoKTsKICAgICBmb3IgKGF1dG8mIHNoZWV0IDogbV9hdXRob3JTdHls
ZVNoZWV0c0ZvclRlc3RpbmcpCiAgICAgICAgIHNoZWV0LT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsK
KyAgICBmb3IgKGF1dG8mIHNoZWV0IDogbV9wYWdlU3BlY2lmaWNTdHlsZVNoZWV0cykKKyAgICAg
ICAgc2hlZXQtPmRldGFjaEZyb21Eb2N1bWVudCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCmluZGV4IDU5ZGIxODJmNGI3YzhmOWU1MDBlMTQyZDY0
ZjI0MTgyMmE4MmJkNTguLjViZTVhOThmYTdiZmE4ZjBmNDRlMGFhOTVmMTA1NTI4YjM5M2Y4M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCkBAIC00Niw2ICs0
Niw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldENv
bnRlbnRzOwogY2xhc3MgU3R5bGVTaGVldExpc3Q7CitjbGFzcyBVc2VyU3R5bGVTaGVldDsKIAog
Y2xhc3MgRXh0ZW5zaW9uU3R5bGVTaGVldHMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNzIsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUFkZENvbnRlbnRFeHRl
bnNpb25TaGVldChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0eWxlU2hlZXRDb250ZW50cyYp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KGNv
bnN0IFVzZXJTdHlsZVNoZWV0Jik7CisgICAgdm9pZCByZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5
bGVTaGVldChjb25zdCBVc2VyU3R5bGVTaGVldCYpOwogICAgIFN0cmluZyBjb250ZW50Rm9ySW5q
ZWN0ZWRTdHlsZVNoZWV0KGNvbnN0IFJlZlB0cjxDU1NTdHlsZVNoZWV0PiYpIGNvbnN0OwogCiAg
ICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKQEAgLTg4LDYgKzkxLDcgQEAgcHJpdmF0ZToK
IAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fdXNlclN0eWxlU2hlZXRzOwog
ICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fYXV0aG9yU3R5bGVTaGVldHNGb3JU
ZXN0aW5nOworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fcGFnZVNwZWNpZmlj
U3R5bGVTaGVldHM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fY29udGVudEV4dGVuc2lvblNoZWV0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVmZDk3YjM5NzAxYWJmYjhmZWE2ZjdiMWIyNjhiMGM5
ZTRlZWEyODMuLmYxMzk2YWUwODMyODhmNzUxYjE0YjAxZjFmYzI5ZDNlZTM2ZjgxYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQ
cm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUg
IlVzZXJJbnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVk
ZSAiVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRl
LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgpAQCAtMzAxNSw0ICszMDE2LDI4IEBA
IHZvaWQgUGFnZTo6cmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpCiAgICAgZm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKFNlbGVj
dGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVl
ZGVkKTsKIH0KIAordm9pZCBQYWdlOjppbmplY3RVc2VyU3R5bGVTaGVldChVc2VyU3R5bGVTaGVl
dCYgdXNlclN0eWxlU2hlZXQpCit7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJh
bWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+ZXh0
ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1c2Vy
U3R5bGVTaGVldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KFsmXSAo
RG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgICAgICBkb2N1bWVudC5leHRlbnNpb25TdHls
ZVNoZWV0cygpLmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFBhZ2U6OnJlbW92ZUluamVjdGVkVXNl
clN0eWxlU2hlZXQoVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGlmICh1
c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7
CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQor
ICAgICAgICAgICAgZG9jdW1lbnQtPmV4dGVuc2lvblN0eWxlU2hlZXRzKCkucmVtb3ZlUGFnZVNw
ZWNpZmljVXNlclN0eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICAg
ICAgZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lmaWNVc2Vy
U3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAzN2NhMjQ5N2JiM2E2Y2E4YmFm
MWE1ZmI0NWVhYmNmNjgyYjk4OTZiLi45MDhjMTU0YmVhZmQ3ODI2YmQyNGFlMmY3M2NiODQ4YThl
ZDQ3YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTQxLDYgKzE0MSw3IEBAIGNsYXNzIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2Vy
Q29udGVudFVSTFBhdHRlcm47CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU3R5
bGVTaGVldDsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNl
bGVjdGlvbjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC03MjIsNiArNzIzLDkgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBzaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhjb25zdCBVUkwm
KSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5qZWN0VXNlclN0eWxlU2hlZXQo
VXNlclN0eWxlU2hlZXQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUluamVjdGVk
VXNlclN0eWxlU2hlZXQoVXNlclN0eWxlU2hlZXQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
TmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclN0eWxlU2hlZXQuaAppbmRleCBjNDc0NzY3ZTdjOThiYjQ4YTg4M2NiNzNiNjk4
OTA1ZjYwMWQ3NjAxLi41MGU0YWQ5Y2YxNjIxYmQ5ZjQ4NjIzZjFkOTdkODQwOWRmNjIzOTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCkBAIC0yNSw5ICsyNSwxMSBAQAogIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclN0
eWxlU2hlZXRUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQxLDEzICs0MywxNCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVzZXJTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmlu
Zz4mJiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCkKKyAgICBV
c2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxTdHJpbmc+JiYgd2hpdGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWws
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCiAgICAgICAg
IDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX3do
aXRlbGlzdChXVEZNb3ZlKHdoaXRlbGlzdCkpCiAgICAgICAgICwgbV9ibGFja2xpc3QoV1RGTW92
ZShibGFja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMp
CiAgICAgICAgICwgbV9sZXZlbChsZXZlbCkKKyAgICAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgewogICAgIH0KIApAQCAtNTcsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsYWNrbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxhY2tsaXN0OyB9CiAgICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJu
IG1faW5qZWN0ZWRGcmFtZXM7IH0KICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGV2ZWw7IH0KKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3Vy
Y2U7CkBAIC02NSw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibGFj
a2xpc3Q7CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwog
ICAgIFVzZXJTdHlsZUxldmVsIG1fbGV2ZWw7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IG1fcGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNWFkYjM3ZDhiNWJkZWYw
MGE1NjZmNGEwMmRiNjRiYjk1ZGFiMDAyNC4uZmIwZTk0YTNhOWUwYWVjMWI0ODEzMjY2YjliZTlm
Y2RlNmQ3YjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0yMTMwLDYgKzIxMzAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8VXNlclN0
eWxlU2hlZXQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVXNlclN0eWxlU2hlZQog
ICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQuYmxhY2tsaXN0KCk7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bSh1c2VyU3R5bGVTaGVldC5sZXZlbCgpKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJT
dHlsZVNoZWV0LnBhZ2VJRCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hl
ZXQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNo
ZWV0KQpAQCAtMjE1OCw3ICsyMTU5LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVT
aGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUVudW0obGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICB1c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3Zl
KHdoaXRlbGlzdCksIFdURk1vdmUoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsK
KyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAgICBkZWNv
ZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgdXNlclN0eWxlU2hlZXQgPSBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgV1RGTW92
ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzLCBsZXZlbCwg
V1RGTW92ZSgqcGFnZUlEKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXgg
MzM4M2U5ZmI2ZjJjM2Q1NDIwOTBlMGNmZjU1MTllMmRjNTgwNTAxNC4uMmIwOGMzYjAyNjQ3OGRl
ZWE2NmU0MjVkODQ5NGRkYWIyY2NmNGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKQEAgLTQzLDYgKzQzLDcgQEAg
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKQogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihC
T09MKWZvck1haW5GcmFtZU9ubHk7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvcldL
V2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1h
aW5GcmFtZU9ubHkgIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAq
KXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hp
dGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNr
bGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCB1c2VyQ29udGVudFdv
cmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZDsKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seToo
Qk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmluZyAq
PiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4g
KilsZWdhY3lCbGFja2xpc3QgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVzZXJDb250ZW50V29y
bGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkOwogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDRlYzlmOGMxMjc1MWFmNDA5MjQzMjEz
ZDEzZjc2MTAyYjVkNTZiOTMuLmJkODlkODQ4OGFhYzMzOTEzYzg0MDEzZGMyNzZjYTAxNzRlODMx
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2Vy
U3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlclN0eWxlU2hlZXQubW0KQEAgLTQ4LDYgKzQ4LDE5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JN
YWluCiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvcldLV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkg
IHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxk
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5p
cXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUg
dGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CisgICAgV2ViS2l0OjpJbml0aWFs
aXplV2ViS2l0MigpOworCisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsg
fSwgIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCwgW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJh
bWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5T
U3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVu
dFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBhMmQ3OGU2Nzc2NzFh
MjI5YzNmNGYwMmI0N2I5N2NhYTU2MDkzMDlhLi44YmYzM2VkNzM5YzI1YWVjYmU0ZjA3MTY5YjIx
NDcwOGFmMzE1OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNDUx
LDYgKzQ1MSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxl
U2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcgogICAgIGlmICh1c2VyU3R5bGVT
aGVldElkZW50aWZpZXIgJiYgc3R5bGVTaGVldHNJbldvcmxkLmZpbmRNYXRjaGluZyhbJl0oYXV0
byYgcGFpcikgeyByZXR1cm4gcGFpci5maXJzdCA9PSB1c2VyU3R5bGVTaGVldElkZW50aWZpZXI7
IH0pICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoYXV0byBwYWdlSUQg
PSB1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkgeworICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UoKnBhZ2VJRCkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICBw
YWdlLT5pbmplY3RVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBzdHlsZVNoZWV0c0luV29ybGQuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHVzZXJT
dHlsZVNoZWV0SWRlbnRpZmllciwgV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpKTsKIH0KIApAQCAt
NDg3LDggKzQ5NCwxOSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNl
clN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdAogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvJiBzdHlsZXNoZWV0cyA9IGl0LT52YWx1ZTsKLSAgICBib29sIHNoZWV0c0No
YW5nZWQgPSBzdHlsZXNoZWV0cy5yZW1vdmVGaXJzdE1hdGNoaW5nKFt1c2VyU3R5bGVTaGVldElk
ZW50aWZpZXJdKGF1dG8mIHBhaXIpIHsKLSAgICAgICAgcmV0dXJuIHBhaXIuZmlyc3QgPT0gdXNl
clN0eWxlU2hlZXRJZGVudGlmaWVyOworCisgICAgYm9vbCBzaGVldHNDaGFuZ2VkID0gc3R5bGVz
aGVldHMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0oYXV0byYgcGFpcikgeworICAgICAgICBpZiAo
cGFpci5maXJzdCAhPSB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byYgdXNlclN0eWxlU2hlZXQgPSBwYWlyLnNlY29uZDsK
KyAgICAgICAgaWYgKGF1dG8gcGFnZUlEID0gdXNlclN0eWxlU2hlZXQucGFnZUlEKCkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZSgqcGFnZUlEKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2ViUGFn
ZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+cmVtb3ZlSW5qZWN0ZWRV
c2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKICAgICBpZiAoIXNoZWV0c0NoYW5nZWQp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzJk
MzU2NDBlNDg0OTkwN2E5YjZkOTA0YTRiNjI5MjRlNzljYjhmOC4uNTBmODMzMDJlM2QwNjAwZTFk
YjY0ZjE1MTIxNDBjODdmN2UwZmE0MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAzLTA0ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBhbGxvdyBV
c2VyU3R5bGVTaGVldCBpbmplY3Rpb24gdG8gdGFyZ2V0IGEgc3BlY2lmaWMgV0tXZWJWaWV3Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NzczNjkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVzdHMgZm9yIHRoZSBuZXcgU1BJIHdo
aWNoIGNoZWNrOgorICAgICAgICAKKyAgICAgICAgMS4gdGhhdCBzcGVjaWZ5aW5nIGZvcldLV2Vi
Vmlldzogd2hlbiBpbml0aWFsaXppbmcgYSBfV0tVc2VyU3R5bGVTaGVldCB3aWxsIGluamVjdCB0
aGUgcHJvdmlkZWQgQ1NTIHNvdXJjZSBpbiB0aGUKKyAgICAgICAgICAgc3BlY2lmaWVkIFdLV2Vi
VmlldyBhbG9uZSwKKyAgICAgICAgMi4gdGhhdCBhIFdLV2ViVmlldy1zcGVjaWZpYyBfV0tVc2Vy
U3R5bGVTaGVldCBjYW4gYmUgcmVtb3ZlZCwKKyAgICAgICAgMy4gdGhhdCBhIFdLV2ViVmlldy1z
cGVjaWZpYyBfV0tVc2VyU3R5bGVTaGVldCBjYW4gYmUgYWRkZWQgdHdpY2UgYW5kIHJlbW92ZWQg
b25jZSBhbmQgYmUgcmVtb3ZlZCBhcyBleHBlY3RlZCwKKyAgICAgICAgNC4gYW5kIHRoYXQgYSBX
S1dlYlZpZXctc3BlY2lmaWMgX1dLVXNlclN0eWxlU2hlZXQgaXMgYXV0b21hdGljYWxseSByZW1v
dmVkIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisKIDIwMjAt
MDMtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgU1BJIF9XS1Jlc291cmNlTG9hZEluZm8ubG9hZGVkRnJvbUNhY2hlCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29u
dHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDlhNDI5OWRjYzkxYmE4MDYxNWQ4ZWE3MWNmNjlhNjkw
OGFkYzRiNDMuLjkwM2FlN2MxYjlkYzgwOGQ4YzFmMjFmNzM1MWM0ZTc3MTY4NDM3OTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0zMjgsNiArMzI4LDcgQEAgc3RhdGljIE5TU3Ry
aW5nICpmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCA9IEAid2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQKIHN0YXRpYyBjb25zdCBjaGFyKiBncmVlbkluUkdCID0gInJnYigwLCAxMjgs
IDApIjsKIHN0YXRpYyBjb25zdCBjaGFyKiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7CiBz
dGF0aWMgY29uc3QgY2hhciogd2hpdGVJblJHQiA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKK3N0YXRp
YyBjb25zdCBjaGFyKiBibHVlSW5SR0IgPSAicmdiKDAsIDAsIDI1NSkiOwogCiBzdGF0aWMgdm9p
ZCBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJp
bmcgKnNjcmlwdCwgY29uc3QgY2hhciogY29sb3IpCiB7CkBAIC01MDMsNiArNTA0LDkzIEBAIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0UmVtb3ZlQWxsQnlOb3Jt
YWxXb3JsZCkKICAgICBFWFBFQ1RfRVEoc3R5bGVTaGVldEFzc29jaWF0ZWRXaXRoV29ybGQyLmdl
dCgpLCBbdXNlckNvbnRlbnRDb250cm9sbGVyIF91c2VyU3R5bGVTaGVldHNdWzFdKTsKIH0KIAor
VEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdPbmx5
U3BlY2lmaWNXZWJWaWV3KQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHRhcmdldFdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApXSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gb3RoZXJXZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKV0pOworCisgICAgW3RhcmdldFdlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8
Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxd
OworICAgIFtvdGhlcldlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dy
b3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworCisgICAgW3RhcmdldFdl
YlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFtvdGhlcldlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgZXhwZWN0U2NyaXB0
RXZhbHVhdGVzVG9Db2xvcih0YXJnZXRXZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQsIHJlZEluUkdCKTsKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKG90aGVyV2Vi
Vmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisKKyAgICBSZXRh
aW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNo
ZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0
V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzp0YXJnZXRXZWJWaWV3Lmdl
dCgpIGZvck1haW5GcmFtZU9ubHk6WUVTIHVzZXJDb250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsK
KyAgICBbW3RhcmdldFdlYlZpZXcgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVy
IF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlw
dEV2YWx1YXRlc1RvQ29sb3IodGFyZ2V0V2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2Ny
aXB0LCBncmVlbkluUkdCKTsKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKG90aGVy
V2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7Cit9CisKK1RF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nT25seVNw
ZWNpZmljV2ViVmlld1JlbW92YWwpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkg
c3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKKyAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBleHBl
Y3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNj
cmlwdCwgcmVkSW5SR0IpOworCisgICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdv
cmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwor
ICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tf
V0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBm
b3JXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyB1c2VyQ29udGVu
dFdvcmxkOndvcmxkLmdldCgpXSk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnVzZXJD
b250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CisK
KyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91
bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CisKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0udXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0
LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQo
KSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7Cit9CisKK1RFU1QoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nT25seVNwZWNpZmljV2ViVmll
d1JlbW92YWxBZnRlck11bHRpcGxlQWRkaXRpb25zKQoreworICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJM
Om5pbF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwor
CisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3Jv
dW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKworICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVu
dFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0
V29ybGQiXTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBh
ZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hl
ZXRTb3VyY2UgZm9yV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZm9yTWFpbkZyYW1lT25seTpZRVMg
dXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0
aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQu
Z2V0KCldOworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgp
LCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOworCisgICAgW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5
bGVTaGVldC5nZXQoKV07CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZp
ZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CisKKyAgICBbW3dl
YlZpZXcgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVVc2VyU3R5
bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1Rv
Q29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7Cit9
CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5n
T25seVNwZWNpZmljV2ViVmlld1JlbW92YWxBZnRlck5hdmlnYXRpb24pCit7CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9k
eT4iIGJhc2VVUkw6bmlsXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0
KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworCisgICAgUmV0YWluUHRyPF9X
S1VzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRo
TmFtZTpAIlRlc3RXb3JsZCJdOworICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5
bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2U6c3R5bGVTaGVldFNvdXJjZSBmb3JXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmb3JNYWluRnJh
bWVPbmx5OllFUyB1c2VyQ29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7CisgICAgW1t3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6
c3R5bGVTaGVldC5nZXQoKV07CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdl
YlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CisKKyAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBi
bHVlOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Io
d2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBibHVlSW5SR0IpOworfQorCiBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0UmVtb3ZlKQogewogICAgIFJl
dGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRDb250cm9sbGVyID0g
YWRvcHROUyhbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392433</attachid>
            <date>2020-03-04 09:57:10 -0800</date>
            <delta_ts>2020-03-04 10:55:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208575-20200304185709.patch</filename>
            <type>text/plain</type>
            <size>25635</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhODhkNjVmYjEzYTYx
Y2RmNjNmNjY2OTU0MjU1MDgzN2YzOWFiOS4uZGE0ZDIyYmU4MzEzNzBhMjk3N2M3ZWQyMTMzZWIw
ZDE4ZWU5OGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTA0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBh
bGxvdyBVc2VyU3R5bGVTaGVldCBpbmplY3Rpb24gdG8gdGFyZ2V0IGEgc3BlY2lmaWMgV0tXZWJW
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1
NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NzczNjkwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gbWVtYmVyIHRvIFVzZXJTdHlsZVNoZWV0IHdoaWNoIGluZGljYXRlcyB3aGV0aGVy
IHRoZSBVc2VyU3R5bGVTaGVldCBpcyBzdXBwb3NlZAorICAgICAgICB0byBiZSBpbmplY3RlZCBm
b3IgYWxsIFdLV2ViVmlld3MsIG9yIG9ubHkgYSBzcGVjaWZpYyB0b3AtbGV2ZWwgV0tXZWJWaWV3
IGFzc29jaWF0ZWQgd2l0aCBhIFBhZ2Ugd2l0aCB0aGUgZ2l2ZSBJRC4KKworICAgICAgICBJbiBF
eHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKSwgVXNl
clN0eWxlU2hlZXRzIHdpdGggYSBzcGVjaWZpZWQgcGFnZUlEIGFyZSBpZ25vcmVkLiBJbnN0ZWFk
LAorICAgICAgICB3ZSBub3cgYWxzbyBjb25zaWRlciBDU1NTdHlsZVNoZWV0cyBsaXN0ZWQgaW4g
dGhlIG5ldyBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzIHdoaWNoIGNvbnRhaW5zIHBhZ2Utc3Bl
Y2lmaWMgc3R5bGVzaGVldHMKKyAgICAgICAgdG8gYmUgaW5qZWN0ZWQgZm9yIHRoZSBhc3NvY2lh
dGVkIERvY3VtZW50LgorCisgICAgICAgIFRoZSBuZXcgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hl
ZXQoKSBtZXRob2QgYWxsb3dzIHRoZSBhZGRpdGlvbiBvZiBhIFVzZXJTdHlsZVNoZWV0IG9uIGl0
cyBkb2N1bWVudHMnIEV4dGVuc2lvblN0eWxlU2hlZXRzLAorICAgICAgICBhbmQgd2lsbCBjYWxs
IHRoaXMgbWV0aG9kIGVpdGhlciBmb3IgdGhlIG1haW4gZnJhbWUncyBEb2N1bWVudCwgb3IgYWxs
IERvY3VtZW50cywgZGVwZW5kaW5nIG9uIHRoZSBVc2VyU3R5bGVTaGVldCdzIGNvbmZpZ3VyYXRp
b24uCisKKyAgICAgICAgRmluYWxseSwgdGhlc2UgbmV3IHRhcmdldGVkIFVzZXJTdHlsZVNoZWV0
cyBjYW4gYmUgcmVtb3ZlZCB2aWEgUGFnZTo6cmVtb3ZlSW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgp
IGFuZAorICAgICAgICBFeHRlbnNpb25TdHlsZVNoZWV0czo6cmVtb3ZlUGFnZVNwZWNpZmljVXNl
clN0eWxlU2hlZXQoKS4KKworICAgICAgICAqIGRvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVT
aGVldHM6OmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjpyZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6ZGV0YWNoRnJvbURv
Y3VtZW50KToKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuaDoKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5qZWN0VXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlSW5qZWN0ZWRVc2VyU3R5bGVT
aGVldCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9Vc2VyU3R5bGVT
aGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNoZWV0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0OjpwYWdlSUQgY29uc3QpOgorCiAy
MDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZS1hZGQgYEluc3BlY3RvckZyb250ZW5kSG9zdGAgc3VwcG9ydCBmb3Ig
bW92aW5nIHRoZSBpbnNwZWN0ZWQgd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdmNDk3N2YzNzI3MDZkMzMw
YWFlZjFjMzkzMzUwMGFjNDA2NDI5MjUuLmY3MDJmNjIyYjMzYjdhODE0ZmY2ZWExZmNmZjg5MTk1
NDM2ZjA3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDMtMDQgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93
IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZpZXcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk3NzM2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgV2ViQ29yZSBhZGRzIGEgbmV3IE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBtZW1iZXIgdG8gVXNlclN0eWxlU2hlZXQsIHdlIG5vdyBlbmNv
ZGUgdGhhdCBtZW1iZXIgdG8gYmUgcHJlc2VydmVkCisgICAgICAgIGFjcm9zcyBVSSBhbmQgV2Vi
IHByb2Nlc3Nlcy4KKworICAgICAgICBVc2luZyB0aGlzIG5ldyBtZW1iZXIsIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlciBub3cgZGV0ZXJtaW5lcyB0aGF0IGEgVXNlclN0eWxlU2hlZXQgbWVhbnQg
dG8gdGFyZ2V0IGEgc3BlY2lmaWMgcGFnZQorICAgICAgICB3YXMgYWRkZWQgaW4gYWRkVXNlclN0
eWxlU2hlZXRJbnRlcm5hbCgpLCBmaW5kcyB0aGUgbWF0Y2hpbmcgV2ViUGFnZSwgYW5kIGNhbGxz
IGluamVjdFVzZXJTdHlsZVNoZWV0KCkgb24gaXRzIGJhY2tpbmcgUGFnZQorICAgICAgICBvYmpl
Y3QuIENvbnZlcnNlbHksIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclN0eWxl
U2hlZXRJbnRlcm5hbCgpIHdpbGwgY2FsbCBpbnRvIFBhZ2U6OnJlbW92ZUluamVjdGVkVXNlclN0
eWxlU2hlZXQoKS4KKworICAgICAgICBGaW5hbGx5LCB3ZSBvZmZlciBhIG5ldyBpbml0aWFsaXpl
ciBvbiBfV0tVc2VyU3R5bGVTaGVldCB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZpZXcsIGFu
ZCBpdHMgcGFnZSdzIElEIHdpbGwgYmUgc2V0IG9uIHRoZQorICAgICAgICBiYWNraW5nIFVzZXJT
dHlsZVNoZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1b
X1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yV0tXZWJWaWV3OmZvck1haW5GcmFt
ZU9ubHk6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXRJbnRlcm5hbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclN0eWxlU2hlZXRJ
bnRlcm5hbCk6CisKIDIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCmluZGV4IDNiNTZhMjJiMDBlYmUwZjBjYTJm
ZWE1MTRhY2VjNzBhOGI0ZDEwZGUuLjcwNTA1NTIxYTcxMDllMWI5YmJmN2ViYzRmMzMyNTEyZTg4
YTZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcApA
QCAtMTI3LDcgKzEyNywxNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKCFvd25pbmdQYWdlKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2VTcGVjaWZpY1N0eWxlU2hlZXQg
OiBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzKSB7CisgICAgICAgIGlmIChwYWdlU3BlY2lmaWNT
dHlsZVNoZWV0LT5jb250ZW50cygpLmlzVXNlclN0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIG1f
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMuYXBwZW5kKHBhZ2VTcGVjaWZpY1N0eWxlU2hlZXQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBw
ZW5kKHBhZ2VTcGVjaWZpY1N0eWxlU2hlZXQpOworICAgIH0KKwogICAgIG93bmluZ1BhZ2UtPnVz
ZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoVXNlclN0eWxlU2hlZXQoWyZdKGNvbnN0IFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkgeworICAgICAgICBpZiAodXNlclN0eWxlU2hlZXQu
cGFnZUlEKCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHVzZXJTdHlsZVNo
ZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgbV9kb2N1bWVu
dC5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ1LDYgKzE1NSwy
MyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRD
YWNoZSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6Omlu
amVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2Vy
U3R5bGVTaGVldCkKK3sKKyAgICBhdXRvIHNoZWV0ID0gY3JlYXRlRXh0ZW5zaW9uc1N0eWxlU2hl
ZXQoY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fZG9jdW1lbnQpLCB1c2VyU3R5bGVTaGVldC51cmwo
KSwgdXNlclN0eWxlU2hlZXQuc291cmNlKCksIHVzZXJTdHlsZVNoZWV0LmxldmVsKCkpOworICAg
IG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMuYXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKKyAgICBp
bnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKK30KKwordm9pZCBFeHRlbnNpb25T
dHlsZVNoZWV0czo6cmVtb3ZlUGFnZVNwZWNpZmljVXNlclN0eWxlU2hlZXQoY29uc3QgVXNlclN0
eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGJvb2wgcmVtb3ZlZFN0eWxlU2hlZXQg
PSBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoW3VzZXJTdHls
ZVNoZWV0XShhdXRvJiBjc3NTdHlsZVNoZWV0KSB7CisgICAgICAgIHJldHVybiBjc3NTdHlsZVNo
ZWV0LT5jb250ZW50cygpLm9yaWdpbmFsVVJMKCkgPT0gdXNlclN0eWxlU2hlZXQudXJsKCk7Cisg
ICAgfSk7CisKKyAgICBpZiAocmVtb3ZlZFN0eWxlU2hlZXQpCisgICAgICAgIGludmFsaWRhdGVJ
bmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOworfQorCiB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRz
OjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKQogewogICAgIG1faW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGVWYWxpZCA9IGZhbHNlOwpAQCAtMjEwLDYgKzIzNyw4IEBAIHZvaWQgRXh0
ZW5zaW9uU3R5bGVTaGVldHM6OmRldGFjaEZyb21Eb2N1bWVudCgpCiAgICAgICAgIHNoZWV0LT5k
ZXRhY2hGcm9tRG9jdW1lbnQoKTsKICAgICBmb3IgKGF1dG8mIHNoZWV0IDogbV9hdXRob3JTdHls
ZVNoZWV0c0ZvclRlc3RpbmcpCiAgICAgICAgIHNoZWV0LT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsK
KyAgICBmb3IgKGF1dG8mIHNoZWV0IDogbV9wYWdlU3BlY2lmaWNTdHlsZVNoZWV0cykKKyAgICAg
ICAgc2hlZXQtPmRldGFjaEZyb21Eb2N1bWVudCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCmluZGV4IDU5ZGIxODJmNGI3YzhmOWU1MDBlMTQyZDY0
ZjI0MTgyMmE4MmJkNTguLjViZTVhOThmYTdiZmE4ZjBmNDRlMGFhOTVmMTA1NTI4YjM5M2Y4M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCkBAIC00Niw2ICs0
Niw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldENv
bnRlbnRzOwogY2xhc3MgU3R5bGVTaGVldExpc3Q7CitjbGFzcyBVc2VyU3R5bGVTaGVldDsKIAog
Y2xhc3MgRXh0ZW5zaW9uU3R5bGVTaGVldHMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNzIsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUFkZENvbnRlbnRFeHRl
bnNpb25TaGVldChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0eWxlU2hlZXRDb250ZW50cyYp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KGNv
bnN0IFVzZXJTdHlsZVNoZWV0Jik7CisgICAgdm9pZCByZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5
bGVTaGVldChjb25zdCBVc2VyU3R5bGVTaGVldCYpOwogICAgIFN0cmluZyBjb250ZW50Rm9ySW5q
ZWN0ZWRTdHlsZVNoZWV0KGNvbnN0IFJlZlB0cjxDU1NTdHlsZVNoZWV0PiYpIGNvbnN0OwogCiAg
ICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKQEAgLTg4LDYgKzkxLDcgQEAgcHJpdmF0ZToK
IAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fdXNlclN0eWxlU2hlZXRzOwog
ICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fYXV0aG9yU3R5bGVTaGVldHNGb3JU
ZXN0aW5nOworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fcGFnZVNwZWNpZmlj
U3R5bGVTaGVldHM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fY29udGVudEV4dGVuc2lvblNoZWV0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVmZDk3YjM5NzAxYWJmYjhmZWE2ZjdiMWIyNjhiMGM5
ZTRlZWEyODMuLmYxMzk2YWUwODMyODhmNzUxYjE0YjAxZjFmYzI5ZDNlZTM2ZjgxYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQ
cm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUg
IlVzZXJJbnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVk
ZSAiVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRl
LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgpAQCAtMzAxNSw0ICszMDE2LDI4IEBA
IHZvaWQgUGFnZTo6cmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpCiAgICAgZm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKFNlbGVj
dGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVl
ZGVkKTsKIH0KIAordm9pZCBQYWdlOjppbmplY3RVc2VyU3R5bGVTaGVldChVc2VyU3R5bGVTaGVl
dCYgdXNlclN0eWxlU2hlZXQpCit7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJh
bWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+ZXh0
ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1c2Vy
U3R5bGVTaGVldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KFsmXSAo
RG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgICAgICBkb2N1bWVudC5leHRlbnNpb25TdHls
ZVNoZWV0cygpLmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFBhZ2U6OnJlbW92ZUluamVjdGVkVXNl
clN0eWxlU2hlZXQoVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGlmICh1
c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7
CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQor
ICAgICAgICAgICAgZG9jdW1lbnQtPmV4dGVuc2lvblN0eWxlU2hlZXRzKCkucmVtb3ZlUGFnZVNw
ZWNpZmljVXNlclN0eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICAg
ICAgZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lmaWNVc2Vy
U3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAzN2NhMjQ5N2JiM2E2Y2E4YmFm
MWE1ZmI0NWVhYmNmNjgyYjk4OTZiLi45MDhjMTU0YmVhZmQ3ODI2YmQyNGFlMmY3M2NiODQ4YThl
ZDQ3YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTQxLDYgKzE0MSw3IEBAIGNsYXNzIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2Vy
Q29udGVudFVSTFBhdHRlcm47CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU3R5
bGVTaGVldDsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNl
bGVjdGlvbjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC03MjIsNiArNzIzLDkgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBzaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhjb25zdCBVUkwm
KSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5qZWN0VXNlclN0eWxlU2hlZXQo
VXNlclN0eWxlU2hlZXQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUluamVjdGVk
VXNlclN0eWxlU2hlZXQoVXNlclN0eWxlU2hlZXQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
TmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclN0eWxlU2hlZXQuaAppbmRleCBjNDc0NzY3ZTdjOThiYjQ4YTg4M2NiNzNiNjk4
OTA1ZjYwMWQ3NjAxLi41MGU0YWQ5Y2YxNjIxYmQ5ZjQ4NjIzZjFkOTdkODQwOWRmNjIzOTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCkBAIC0yNSw5ICsyNSwxMSBAQAogIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclN0
eWxlU2hlZXRUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQxLDEzICs0MywxNCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVzZXJTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmlu
Zz4mJiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCkKKyAgICBV
c2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxTdHJpbmc+JiYgd2hpdGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWws
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCiAgICAgICAg
IDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX3do
aXRlbGlzdChXVEZNb3ZlKHdoaXRlbGlzdCkpCiAgICAgICAgICwgbV9ibGFja2xpc3QoV1RGTW92
ZShibGFja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMp
CiAgICAgICAgICwgbV9sZXZlbChsZXZlbCkKKyAgICAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgewogICAgIH0KIApAQCAtNTcsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsYWNrbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxhY2tsaXN0OyB9CiAgICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJu
IG1faW5qZWN0ZWRGcmFtZXM7IH0KICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGV2ZWw7IH0KKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3Vy
Y2U7CkBAIC02NSw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibGFj
a2xpc3Q7CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwog
ICAgIFVzZXJTdHlsZUxldmVsIG1fbGV2ZWw7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IG1fcGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNWFkYjM3ZDhiNWJkZWYw
MGE1NjZmNGEwMmRiNjRiYjk1ZGFiMDAyNC4uZmIwZTk0YTNhOWUwYWVjMWI0ODEzMjY2YjliZTlm
Y2RlNmQ3YjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0yMTMwLDYgKzIxMzAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8VXNlclN0
eWxlU2hlZXQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVXNlclN0eWxlU2hlZQog
ICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQuYmxhY2tsaXN0KCk7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bSh1c2VyU3R5bGVTaGVldC5sZXZlbCgpKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJT
dHlsZVNoZWV0LnBhZ2VJRCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hl
ZXQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNo
ZWV0KQpAQCAtMjE1OCw3ICsyMTU5LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVT
aGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUVudW0obGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICB1c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3Zl
KHdoaXRlbGlzdCksIFdURk1vdmUoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsK
KyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAgICBkZWNv
ZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgdXNlclN0eWxlU2hlZXQgPSBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgV1RGTW92
ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzLCBsZXZlbCwg
V1RGTW92ZSgqcGFnZUlEKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXgg
MzM4M2U5ZmI2ZjJjM2Q1NDIwOTBlMGNmZjU1MTllMmRjNTgwNTAxNC4uNmFkZGE0ZjJmZWQ4Njcz
YmI2YjJjZmEwMzM3Y2YyYjQxNGFkM2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKQEAgLTMwLDYgKzMwLDcgQEAK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOwor
QGNsYXNzIFdLV2ViVmlldzsKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9z
KDEwLjApKQogQGludGVyZmFjZSBfV0tVc2VyU3R5bGVTaGVldCA6IE5TT2JqZWN0IDxOU0NvcHlp
bmc+CkBAIC00Myw2ICs0NCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlv
cygxMC4wKSkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3Vy
Y2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5OwogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rl
cHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihO
U1N0cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZm9yTWFp
bkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5ICB1c2VyQ29udGVudFdvcmxkOihfV0tV
c2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZDsKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JN
YWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2Fj
eVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lC
bGFja2xpc3QgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250
ZW50V29ybGQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291
cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxp
c3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0
OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGJhc2VVUkw6KE5TVVJMICop
YmFzZVVSTCB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRl
bnRXb3JsZDsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCA0
ZWM5ZjhjMTI3NTFhZjQwOTI0MzIxM2QxM2Y3NjEwMmI1ZDU2YjkzLi4xZmVlYTJhMGY4NzRlOWIw
ZDgyMGI3MjQxMDA3OWNmZDI4YjVmOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC0yOSw3ICsyOSw5IEBA
CiAjaW1wb3J0ICJBUElBcnJheS5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJX
S05TVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V2ViS2l0MkluaXRpYWxpemUuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAi
X1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tVc2Vy
U3R5bGVTaGVldApAQCAtNDgsNiArNTAsMTkgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KIH0K
IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yV0tXZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSAgdXNlckNv
bnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKK3sKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwg
YmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4u
IHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KKyAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCAgeyB9
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJD
b3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsLCBbd2Vi
VmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkLT5fY29udGVudFdvcmxkKTsKKworICAgIHJldHVybiBzZWxmOworfQorCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6
KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+
ICopbGVnYWN5QmxhY2tsaXN0IHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQg
Kil1c2VyQ29udGVudFdvcmxkCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGEyZDc4ZTY3NzY3MWEyMjljM2Y0
ZjAyYjQ3Yjk3Y2FhNTYwOTMwOWEuLjhiZjMzZWQ3MzljMjVhZWNiZTRmMDcxNjliMjE0NzA4YWYz
MTU4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC00NTEsNiArNDUx
LDEzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldElu
dGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29yCiAgICAgaWYgKHVzZXJTdHlsZVNoZWV0SWRl
bnRpZmllciAmJiBzdHlsZVNoZWV0c0luV29ybGQuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBwYWly
KSB7IHJldHVybiBwYWlyLmZpcnN0ID09IHVzZXJTdHlsZVNoZWV0SWRlbnRpZmllcjsgfSkgIT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChhdXRvIHBhZ2VJRCA9IHVzZXJT
dHlsZVNoZWV0LnBhZ2VJRCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZSgqcGFnZUlEKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8qIHBhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPmlu
amVjdFVzZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0KTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC5hcHBlbmQoc3RkOjptYWtlX3BhaXIodXNlclN0eWxlU2hl
ZXRJZGVudGlmaWVyLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSkpOwogfQogCkBAIC00ODcsOCAr
NDk0LDE5IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU3R5bGVT
aGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHN0eWxlc2hlZXRzID0gaXQtPnZhbHVlOwotICAgIGJvb2wgc2hlZXRzQ2hhbmdlZCA9
IHN0eWxlc2hlZXRzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoW3VzZXJTdHlsZVNoZWV0SWRlbnRpZmll
cl0oYXV0byYgcGFpcikgewotICAgICAgICByZXR1cm4gcGFpci5maXJzdCA9PSB1c2VyU3R5bGVT
aGVldElkZW50aWZpZXI7CisKKyAgICBib29sIHNoZWV0c0NoYW5nZWQgPSBzdHlsZXNoZWV0cy5y
ZW1vdmVGaXJzdE1hdGNoaW5nKFsmXShhdXRvJiBwYWlyKSB7CisgICAgICAgIGlmIChwYWlyLmZp
cnN0ICE9IHVzZXJTdHlsZVNoZWV0SWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBhdXRvJiB1c2VyU3R5bGVTaGVldCA9IHBhaXIuc2Vjb25kOworICAgICAg
ICBpZiAoYXV0byBwYWdlSUQgPSB1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKCpw
YWdlSUQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlLT5jb3Jl
UGFnZSgpKQorICAgICAgICAgICAgICAgICAgICBwYWdlLT5yZW1vdmVJbmplY3RlZFVzZXJTdHls
ZVNoZWV0KHVzZXJTdHlsZVNoZWV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKIAogICAgIGlmICghc2hlZXRzQ2hhbmdlZCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MmQzNTY0MGU0
ODQ5OTA3YTliNmQ5MDRhNGI2MjkyNGU3OWNiOGY4Li41MGY4MzMwMmUzZDA2MDBlMWRiNjRmMTUx
MjE0MGM4N2Y3ZTBmYTQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDMtMDQgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFVzZXJTdHls
ZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTk3NzM2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0cyBmb3IgdGhlIG5ldyBTUEkgd2hpY2ggY2hl
Y2s6CisgICAgICAgIAorICAgICAgICAxLiB0aGF0IHNwZWNpZnlpbmcgZm9yV0tXZWJWaWV3OiB3
aGVuIGluaXRpYWxpemluZyBhIF9XS1VzZXJTdHlsZVNoZWV0IHdpbGwgaW5qZWN0IHRoZSBwcm92
aWRlZCBDU1Mgc291cmNlIGluIHRoZQorICAgICAgICAgICBzcGVjaWZpZWQgV0tXZWJWaWV3IGFs
b25lLAorICAgICAgICAyLiB0aGF0IGEgV0tXZWJWaWV3LXNwZWNpZmljIF9XS1VzZXJTdHlsZVNo
ZWV0IGNhbiBiZSByZW1vdmVkLAorICAgICAgICAzLiB0aGF0IGEgV0tXZWJWaWV3LXNwZWNpZmlj
IF9XS1VzZXJTdHlsZVNoZWV0IGNhbiBiZSBhZGRlZCB0d2ljZSBhbmQgcmVtb3ZlZCBvbmNlIGFu
ZCBiZSByZW1vdmVkIGFzIGV4cGVjdGVkLAorICAgICAgICA0LiBhbmQgdGhhdCBhIFdLV2ViVmll
dy1zcGVjaWZpYyBfV0tVc2VyU3R5bGVTaGVldCBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hl
biBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKwogMjAyMC0wMy0wMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBTUEkgX1dLUmVzb3VyY2VMb2FkSW5mby5sb2FkZWRGcm9tQ2FjaGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0KaW5kZXggOWE0Mjk5ZGNjOTFiYTgwNjE1ZDhlYTcxY2Y2OWE2OTA4YWRjNGI0
My4uOTAzYWU3YzFiOWRjODA4ZDhjMWYyMWY3MzUxYzRlNzcxNjg0Mzc5MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KQEAgLTMyOCw2ICszMjgsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmZy
YW1lQmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudAogc3RhdGljIGNvbnN0IGNoYXIqIGdyZWVuSW5SR0IgPSAicmdiKDAsIDEyOCwgMCkiOwog
c3RhdGljIGNvbnN0IGNoYXIqIHJlZEluUkdCID0gInJnYigyNTUsIDAsIDApIjsKIHN0YXRpYyBj
b25zdCBjaGFyKiB3aGl0ZUluUkdCID0gInJnYmEoMCwgMCwgMCwgMCkiOworc3RhdGljIGNvbnN0
IGNoYXIqIGJsdWVJblJHQiA9ICJyZ2IoMCwgMCwgMjU1KSI7CiAKIHN0YXRpYyB2b2lkIGV4cGVj
dFNjcmlwdEV2YWx1YXRlc1RvQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqc2Ny
aXB0LCBjb25zdCBjaGFyKiBjb2xvcikKIHsKQEAgLTUwMyw2ICs1MDQsOTMgQEAgVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRSZW1vdmVBbGxCeU5vcm1hbFdvcmxk
KQogICAgIEVYUEVDVF9FUShzdHlsZVNoZWV0QXNzb2NpYXRlZFdpdGhXb3JsZDIuZ2V0KCksIFt1
c2VyQ29udGVudENvbnRyb2xsZXIgX3VzZXJTdHlsZVNoZWV0c11bMV0pOwogfQogCitURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU3R5bGVTaGVldEFmZmVjdGluZ09ubHlTcGVjaWZp
Y1dlYlZpZXcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gdGFyZ2V0V2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBvdGhlcldlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CisKKyAgICBbdGFyZ2V0V2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07CisgICAg
W290aGVyV2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07CisKKyAgICBbdGFyZ2V0V2ViVmlldyBf
dGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgW290aGVyV2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0
ZXNUb0NvbG9yKHRhcmdldFdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVk
SW5SR0IpOworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iob3RoZXJXZWJWaWV3Lmdl
dCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKworICAgIFJldGFpblB0cjxf
V0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0
aE5hbWU6QCJUZXN0V29ybGQiXTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0
eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291
cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OnRhcmdldFdlYlZpZXcuZ2V0KCkgZm9y
TWFpbkZyYW1lT25seTpZRVMgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOworICAgIFtb
dGFyZ2V0V2ViVmlldyBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVz
ZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVh
dGVzVG9Db2xvcih0YXJnZXRXZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdy
ZWVuSW5SR0IpOworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iob3RoZXJXZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKK30KKworVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdPbmx5U3BlY2lmaWNX
ZWJWaWV3UmVtb3ZhbCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0n
YmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGV4cGVjdFNjcmlw
dEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBy
ZWRJblJHQik7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBb
X1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CisgICAgUmV0
YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJT
dHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpIGZvck1haW5GcmFtZU9ubHk6WUVTIHVzZXJDb250ZW50V29ybGQ6
d29ybGQuZ2V0KCldKTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRD
b250cm9sbGVyIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKworICAgIGV4
cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9y
U2NyaXB0LCBncmVlbkluUkdCKTsKKworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS51c2Vy
Q29udGVudENvbnRyb2xsZXIgX3JlbW92ZVVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCld
OworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNr
Z3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29u
dHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdPbmx5U3BlY2lmaWNXZWJWaWV3UmVtb3Zh
bEFmdGVyTXVsdGlwbGVBZGRpdGlvbnMpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJv
ZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsK
KyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBl
eHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xv
clNjcmlwdCwgcmVkSW5SR0IpOworCisgICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+
IHdvcmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJd
OworICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMo
W1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJj
ZSBmb3JXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyB1c2VyQ29u
dGVudFdvcmxkOndvcmxkLmdldCgpXSk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnVz
ZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07
CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tn
cm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CisKKyAgICBbW3dlYlZpZXcgY29uZmlndXJh
dGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0
LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQo
KSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKKworICAgIFtbd2ViVmlldyBj
b25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVVzZXJTdHlsZVNoZWV0
OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3
ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKK30KKworVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdPbmx5U3Bl
Y2lmaWNXZWJWaWV3UmVtb3ZhbEFmdGVyTmF2aWdhdGlvbikKK3sKKyAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFz
ZVVSTDpuaWxdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFj
a2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlckNv
bnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAi
VGVzdFdvcmxkIl07CisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0
ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHls
ZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZvck1haW5GcmFtZU9ubHk6
WUVTIHVzZXJDb250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsKKyAgICBbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNo
ZWV0LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5n
ZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKKworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IGJsdWU7Jz48
L2JvZHk+IiBiYXNlVVJMOm5pbF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlz
aE5hdmlnYXRpb25dOworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGJsdWVJblJHQik7Cit9CisKIFRFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHRSZW1vdmUpCiB7CiAgICAgUmV0YWluUHRy
PFdLVXNlckNvbnRlbnRDb250cm9sbGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsK
</data>
<flag name="review"
          id="407858"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>