<?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>134830</bug_id>
          
          <creation_ts>2014-07-11 03:22:13 -0700</creation_ts>
          <short_desc>[GTK] Remove WebKitCertificateInfo from WebKit2GTK+ API</short_desc>
          <delta_ts>2014-07-30 00:07:11 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1021810</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-11 03:22:13 -0700</bug_when>
    <thetext>Add webkit_certificate_info_new() to allow the user to create a WebKitCertificateInfo for a given GTlsCertificate and GTlsCertificateFlags. This would be needed to be able to add exceptions with webkit_web_context_allow_tls_certificate_for_host() for a certificate saved permanently, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021812</commentid>
    <comment_count>1</comment_count>
      <attachid>234755</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-11 03:26:36 -0700</bug_when>
    <thetext>Created attachment 234755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021813</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-11 03:27:46 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022779</commentid>
    <comment_count>3</comment_count>
      <attachid>234755</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-07-16 11:25:31 -0700</bug_when>
    <thetext>Comment on attachment 234755
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:54
&gt; + * @tls_errors: #GTlsCertificateFlags verification status

I don&apos;t understand this parameter very well, I don&apos;t remember certificate errors reporting very well, but this is a good indication that we should probably improve this. Does this list the types of errors that should be accepted by the exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022781</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-07-16 11:26:59 -0700</bug_when>
    <thetext>… improve this documentation I mean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022786</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-07-16 11:41:01 -0700</bug_when>
    <thetext>In the context of WebKitCertificateInfo, it&apos;s only used to indicate what errors actually occurred. It does not have any effect on the behavior of webkit_web_context_allow_tls_certificate_for_host().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023661</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-21 04:50:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 234755 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234755&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:54
&gt; &gt; + * @tls_errors: #GTlsCertificateFlags verification status
&gt; 
&gt; I don&apos;t understand this parameter very well, I don&apos;t remember certificate errors reporting very well, but this is a good indication that we should probably improve this. Does this list the types of errors that should be accepted by the exception?

That pair is what you get from soup_message_get_https_status() or webkit_web_view_get_tls_info(). WebKitCertificateInfo was added later. I agree it&apos;s a bit confusing, WebKitCertificateInfo contains the certificate itself and possible TLS errors of the certificate or 0 for valid certificates. In WebCore CertificateInfo contains the pair, because DidCommitLoad message contains a CertificateInfo parameter, and in that case we need both. WebKitCertificateInfo was exposed when we added the API to handle TLS errors and add exceptions for certificates. The idea was that you get a WebKitCertificateInfo in WebKitWebView::failed-with-tls-errors that you can use to get the TLS info and use also later to add an exception. This made the API a bit inconsistent with webkit_web_view_get_tls_info(). So, maybe we could rethink the whole thing now that we are breaking the API. The WebKitCertificateInfo is not really needed for webkit_web_context_allow_tls_certificate_for_host() since only the certificate is used in that case. WebKitWebView::failed-with-tls-errors might receive the pair as parameters instead of WebKitCertificateInfo. That would probably simplify the API since we can get rid of the WebKitCertificateInfo entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023735</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-07-21 11:47:28 -0700</bug_when>
    <thetext>I was going to say that the webkit_certificate_info_new() would not really be needed if webkit_web_view_get_tls_info() were to return a WebKitCertificateInfo instead, but if you&apos;re planning to remove WebKitCertificateInfo from the API that&apos;d probably be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025447</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-29 05:43:59 -0700</bug_when>
    <thetext>This was added to make the API more convenient but it has ended up making it more complicated, so in the end I think it&apos;s better to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025448</commentid>
    <comment_count>9</comment_count>
      <attachid>235679</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-29 05:50:52 -0700</bug_when>
    <thetext>Created attachment 235679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025449</commentid>
    <comment_count>10</comment_count>
      <attachid>235680</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-29 05:56:13 -0700</bug_when>
    <thetext>Created attachment 235680
Rebased to apply on current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025450</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-29 05:57:02 -0700</bug_when>
    <thetext>I think this is the last API change blocking the libs version bump</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025482</commentid>
    <comment_count>12</comment_count>
      <attachid>235680</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-07-29 08:24:13 -0700</bug_when>
    <thetext>Comment on attachment 235680
Rebased to apply on current git master

This looks good to me. I don&apos;t think the likelihood of needing to extend the API is big enough to warrant a webkit object just for it, so let&apos;s do it =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025676</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-30 00:07:11 -0700</bug_when>
    <thetext>Committed r171792: &lt;http://trac.webkit.org/changeset/171792&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234755</attachid>
            <date>2014-07-11 03:26:36 -0700</date>
            <delta_ts>2014-07-29 05:50:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-certificate-info-new.diff</filename>
            <type>text/plain</type>
            <size>3877</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1ZWE3ZjBhLi5mZmEzZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTQtMDctMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFsbG93IHRoZSB1c2VyIHRvIGNyZWF0ZSBhIFdlYktpdENlcnRp
ZmljYXRlSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM0ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX25ldygpIHRvIGFsbG93IHRoZSB1c2VyIHRv
IGNyZWF0ZSBhCisgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyBmb3IgYSBnaXZlbiBHVGxz
Q2VydGlmaWNhdGUgYW5kCisgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLiBUaGlzIHdvdWxk
IGJlIG5lZWRlZCB0byBiZSBhYmxlIHRvIGFkZAorICAgICAgICBleGNlcHRpb25zIHdpdGggd2Vi
a2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpCisgICAgICAg
IGZvciBhIGNlcnRpZmljYXRlIHNhdmVkIHBlcm1hbmVudGx5LCBmb3IgZXhhbXBsZS4KKyAgICAg
ICAgSSdtIG5vdCBhZGRpbmcgYSB0ZXN0IGNhc2UgZm9yIHRoaXMgYmVjYXVzZSB3ZSBhbHJlYWR5
IGhhdmUgYSB0ZXN0CisgICAgICAgIGNhc2UgdGhhdCBhZGRzIGFuIGV4Y2VwdGlvbiBmb3IgdGhl
IGxvY2FsIHNlcnZlciB3ZSB1c2UsIHNvIHdlCisgICAgICAgIHdvdWxkIG5lZWQgYSBuZXcgdGVz
dCBvbmx5IGZvciB0aGlzIGFuZCB0aGUgbmV3IEFQSSBpcyB2ZXJ5IHNpbXBsZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6CisgICAgICAg
ICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19uZXcpOiBDcmVhdGUgYSBuZXcgV2ViS2l0Q2VydGlm
aWNhdGVJbmZvCisgICAgICAgIGZvciB0aGUgZ2l2ZW4gR1Rsc0NlcnRpZmljYXRlIGFuZCBHVGxz
Q2VydGlmaWNhdGVGbGFncy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0OgorCiAyMDE0LTA3LTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgd2Via2l0X3dlYl92aWV3X2xv
YWRfc3RyaW5nKCkgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggMTJkZjFhYS4u
ZDYzODViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3BwCkBAIC00OSw2ICs0OSwyNyBAQCBjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIHdlYmtpdENlcnRpZmljYXRlSW5mb0dldENlcnRpZmljYXRlSW5mbyhX
ZWJLaXRDZXJ0aWZpY2F0ZQogfQogCiAvKioKKyAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX25l
dzoKKyAqIEB0bHNfY2VydGlmaWNhdGU6IGEgI0dUbHNDZXJ0aWZpY2F0ZQorICogQHRsc19lcnJv
cnM6ICNHVGxzQ2VydGlmaWNhdGVGbGFncyB2ZXJpZmljYXRpb24gc3RhdHVzCisgKgorICogQ3Jl
YXRlIGEgbmV3ICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gZm9yIHRoZSBnaXZlbiBAdGxzX2NlcnRp
ZmljYXRlIGFuZCBAdGxzX2Vycm9ycy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6
IEEgbmV3ICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uIEl0IG11c3QgYmUgZnJlZWQgd2l0aAorICog
ICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSgpLgorICoKKyAqIFNpbmNlOiAyLjYKKyAq
LworV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19uZXcoR1Rs
c0NlcnRpZmljYXRlKiB0bHNDZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJy
b3JzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdfSVNfVExTX0NFUlRJRklDQVRFKHRs
c0NlcnRpZmljYXRlKSwgbnVsbHB0cik7CisKKyAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGlu
Zm8gPSBnX3NsaWNlX25ldzAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKTsKKyAgICBuZXcgKGluZm8p
IFdlYktpdENlcnRpZmljYXRlSW5mbyh0bHNDZXJ0aWZpY2F0ZSwgdGxzRXJyb3JzKTsKKyAgICBy
ZXR1cm4gaW5mbzsKK30KKworLyoqCiAgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5Ogog
ICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbwogICoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKaW5k
ZXggZWVmMTY0MC4uNmJmZjkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKQEAgLTM4LDYgKzM4LDEwIEBA
IFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlICAgICAg
ICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdENlcnRpZmljYXRlSW5mbyAqCit3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19uZXcgICAgICAgICAgICAgICAgIChHVGxzQ2VydGlmaWNhdGUg
ICAgICAgKnRsc19jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzICAgdGxzX2Vycm9ycyk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICoKIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2Nv
cHkgICAgICAgICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CiAKIFdFQktJ
VF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggOGY5ZjYxNi4uNzQzNWUw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC0xMTcwLDYgKzExNzAsNyBAQCB3ZWJr
aXRfc2NyaXB0X3dvcmxkX2dldF90eXBlCiA8U0VDVElPTj4KIDxGSUxFPldlYktpdENlcnRpZmlj
YXRlSW5mbzwvRklMRT4KIFdlYktpdENlcnRpZmljYXRlSW5mbword2Via2l0X2NlcnRpZmljYXRl
X2luZm9fbmV3CiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5CiB3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19mcmVlCiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235679</attachid>
            <date>2014-07-29 05:50:52 -0700</date>
            <delta_ts>2014-07-29 05:56:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-remove-certificate-info-api.diff</filename>
            <type>text/plain</type>
            <size>24851</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0OWFjODRkLi43NjA5Njg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQg
QEAKIDIwMTQtMDctMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIFJlbW92ZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gZnJvbSBXZWJL
aXQyR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDgzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHdhcyBhZGRlZCB0byBtYWtlIHRoZSBBUEkgbW9yZSBjb252ZW5pZW50IGJ1dCBpdCBo
YXMgZW5kZWQgdXAKKyAgICAgICAgbWFraW5nIGl0IG1vcmUgY29tcGxpY2F0ZWQuIFdlYktpdFdl
YlZpZXc6OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycworICAgICAgICBub3cgcmVjZWl2ZXMg
YSBHVGxzQ2VydGlmaWNhdGUgKyBHVGxzQ2VydGlmaWNhdGVGbGFncyBhbmQKKyAgICAgICAgd2Vi
a2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpIHJlY2VpdmVz
IGEgR1Rsc0NlcnRpZmljYXRlCisgICAgICAgIHNpbmNlIHRoZSBlcnJvcnMgYXJlIG5vdCBhY3R1
YWxseSBuZWVkZWQuIFRoaXMgbWFrZXMgdGhlIEFQSSBtb3JlCisgICAgICAgIGNvbnNpc3RlbnQg
d2l0aCB0aGUgZXhpc3RpbmcgbWV0aG9kIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8oKS4K
KworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBSZW1vdmUgZmlsZXMgZnJvbSBjb21waWxh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmlj
YXRlSW5mby5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENl
cnRpZmljYXRlSW5mb1ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9h
bGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmg6CisKKzIwMTQtMDctMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIEltcGxlbWVudCB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9zdHJpbmcoKSBpbiBXZWJLaXQyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzQ3MzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA4
MThlMGVmLi5jM2E3NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAwLDkgKzEw
MCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFj
a0ZvcndhcmRMaXN0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlm
aWNhdGVJbmZvLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5m
by5oCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5o
CiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTMyNyw3ICszMjQsNiBAQCBzZXQoV2ViS2l0
MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKLSAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENyZWRlbnRpYWwuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAg
ICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlv
bnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q2VydGlmaWNhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENlcnRpZmljYXRlSW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEy
ZGYxYWEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q2VydGlm
aWNhdGVJbmZvLmgiCi0KLSNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLS8qKgotICogU0VDVElPTjogV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvCi0gKiBAU2hvcnRfZGVzY3JpcHRpb246IEJveGVkIHR5cGUgdG8gZW5jYXBz
dWxhdGUgVExTIGNlcnRpZmljYXRlIGluZm9ybWF0aW9uCi0gKiBAVGl0bGU6IFdlYktpdENlcnRp
ZmljYXRlSW5mbwotICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldywgI1dlYktpdFdlYkNvbnRl
eHQKLSAqCi0gKiBXaGVuIGEgY2xpZW50IGxvYWRzIGEgcGFnZSBvdmVyIEhUVFBTIHdoZXJlIHRo
ZXJlIGlzIGFuIHVuZGVybHlpbmcgVExTIGVycm9yCi0gKiBXZWJLaXQgd2lsbCBmaXJlIGEgI1dl
YktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyBzaWduYWwgd2l0aCBhCi0g
KiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGFuZCB0aGUgaG9zdCBvZiB0aGUgZmFpbGluZyBVUkku
Ci0gKgotICogVG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBzaG91bGQg
bWFrZSBhIGNvcHkgb2YgdGhlCi0gKiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvIHdpdGggd2Via2l0
X2NlcnRpZmljYXRlX2luZm9fY29weSgpLgotICovCi0KLUdfREVGSU5FX0JPWEVEX1RZUEUoV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mbywgd2Via2l0X2NlcnRp
ZmljYXRlX2luZm9fY29weSwgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSkKLQotY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8o
V2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvKQotewotICAgIEFTU0VSVChpbmZvKTsKLSAgICBy
ZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvOwotfQotCi0vKioKLSAqIHdlYmtpdF9jZXJ0aWZp
Y2F0ZV9pbmZvX2NvcHk6Ci0gKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCi0gKgot
ICogTWFrZSBhIGNvcHkgb2YgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCi0gKgotICogUmV0
dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIGluICNXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8uCi0gKgotICogU2luY2U6IDIuNAotICovCi1XZWJLaXRDZXJ0aWZpY2F0ZUluZm8q
IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZv
KQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOwotCi0gICAgV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvKiBjb3B5ID0gZ19zbGljZV9uZXcwKFdlYktpdENlcnRpZmljYXRlSW5mbyk7
Ci0gICAgbmV3IChjb3B5KSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8oaW5mbyk7Ci0gICAgcmV0dXJu
IGNvcHk7Ci19Ci0KLS8qKgotICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZToKLSAqIEBp
bmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KLSAqCi0gKiBGcmVlIHRoZSAjV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLgotICoKLSAqIFNpbmNlOiAyLjQKLSAqLwotdm9pZCB3ZWJraXRfY2VydGlm
aWNhdGVfaW5mb19mcmVlKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKLXsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKGluZm8pOwotCi0gICAgaW5mby0+fldlYktpdENlcnRpZmljYXRlSW5mbygp
OwotICAgIGdfc2xpY2VfZnJlZShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8sIGluZm8pOwotfQotCi0v
KioKLSAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGU6Ci0gKiBA
aW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCi0gKgotICogR2V0IHRoZSAjR1Rsc0NlcnRp
ZmljYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gKiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvLgot
ICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIGNlcnRpZmljYXRlIG9mIEBpbmZv
LgotICoKLSAqIFNpbmNlOiAyLjQKLSAqLwotR1Rsc0NlcnRpZmljYXRlKiB3ZWJraXRfY2VydGlm
aWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5m
bykKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmZvLCAwKTsKLQotICAgIHJldHVybiBp
bmZvLT5jZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9yczoKLSAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8KLSAqCi0gKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFncyB2ZXJpZmlj
YXRpb24gc3RhdHVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gKiAjV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvLgotICoKLSAqIFJldHVybnM6IFRoZSB2ZXJpZmljYXRpb24gc3RhdHVzIG9mIEBpbmZvLgot
ICoKLSAqIFNpbmNlOiAyLjQKLSAqLwotR1Rsc0NlcnRpZmljYXRlRmxhZ3Mgd2Via2l0X2NlcnRp
ZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKQot
ewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZp
Y2F0ZUZsYWdzPigwKSk7Ci0KLSAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvLnRsc0Vy
cm9ycygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWVmMTY0MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKLSNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCi0jZW5kaWYKLQotI2lmbmRlZiBXZWJLaXRDZXJ0
aWZpY2F0ZUluZm9faAotI2RlZmluZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9faAotCi0jaW5jbHVk
ZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfVFlQ
RV9DRVJUSUZJQ0FURV9JTkZPICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZSgpKQot
Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvIFdlYktpdENlcnRpZmljYXRl
SW5mbzsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5
cGUgICAgICAgICAgICAodm9pZCk7Ci0KLVdFQktJVF9BUEkgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
ICoKLXdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkgICAgICAgICAgICAgICAgKFdlYktpdENl
cnRpZmljYXRlSW5mbyAqaW5mbyk7Ci0KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZnJlZSAgICAgICAgICAgICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZv
KTsKLQotV0VCS0lUX0FQSSBHVGxzQ2VydGlmaWNhdGUgKgotd2Via2l0X2NlcnRpZmljYXRlX2lu
Zm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZSAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKLQot
V0VCS0lUX0FQSSBHVGxzQ2VydGlmaWNhdGVGbGFncwotd2Via2l0X2NlcnRpZmljYXRlX2luZm9f
Z2V0X3Rsc19lcnJvcnMgICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKLQotR19F
TkRfREVDTFMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiM2YxZWYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJp
dmF0ZV9oCi0KLSNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCIKLSNpbmNsdWRlICJX
ZWJLaXRQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLQot
c3RydWN0IF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8gewotICAgIF9XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8oR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxz
RXJyb3JzKQotICAgICAgICA6IGNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgdGxzRXJyb3Jz
KQotICAgIHsKLSAgICB9Ci0KLSAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRp
ZmljYXRlSW5mbyogaW5mbykKLSAgICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+Y2VydGlm
aWNhdGVJbmZvKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8g
Y2VydGlmaWNhdGVJbmZvOwotfTsKLQotY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiB3
ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8oV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvKik7Ci0KLSNlbmRpZiAvLyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggOGMwODBjYS4uZGNlMWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdEJhdHRlcnlQcm92aWRlci5oIgot
I2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC05MDAsMjAgKzg5OSwy
MCBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgY29uc3QgY2hhciogaG9zdAogLyoqCiAgKiB3ZWJraXRfd2ViX2NvbnRleHRf
YWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0OgogICogQGNvbnRleHQ6IGEgI1dlYktpdFdl
YkNvbnRleHQKLSAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBjZXJ0aWZp
Y2F0ZTogYSAjR1Rsc0NlcnRpZmljYXRlCiAgKiBAaG9zdDogdGhlIGhvc3QgZm9yIHdoaWNoIGEg
Y2VydGlmaWNhdGUgaXMgdG8gYmUgYWxsb3dlZAogICoKICAqIElnbm9yZSBmdXJ0aGVyIFRMUyBl
cnJvcnMgb24gdGhlIEBob3N0IGZvciB0aGUgY2VydGlmaWNhdGUgcHJlc2VudCBpbiBAaW5mby4K
ICAqCi0gKiBTaW5jZTogMi40CisgKiBTaW5jZTogMi42CiAgKi8KLXZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8sIGNvbnN0IGdjaGFyKiBob3N0KQor
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIGNv
bnN0IGdjaGFyKiBob3N0KQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9D
T05URVhUKGNvbnRleHQpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoR19JU19UTFNfQ0VSVElGSUNBVEUoY2VydGlmaWNhdGUpKTsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKGhvc3QpOwogCi0gICAgUmVmUHRyPFdlYkNlcnRpZmljYXRlSW5mbz4gd2Vi
Q2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUod2Via2l0Q2VydGlm
aWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKGluZm8pKTsKKyAgICBSZWZQdHI8V2ViQ2VydGlm
aWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0
ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdUbHND
ZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwogICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCks
IFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggM2NlMjgxYi4uMGNlOGYw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuaApAQCAtMjUsNyArMjUsNiBAQAogI2RlZmluZSBXZWJLaXRXZWJDb250ZXh0X2gK
IAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvb2tpZU1hbmFnZXIuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERvd25sb2FkLmg+CkBAIC0yMzYsNyArMjM1LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0CiAKIFdFQktJ
VF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3Jf
aG9zdCAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlm
aWNhdGVJbmZvICAgICAgICAgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZSAgICAgICAgICAgICAgICpjZXJ0
aWZpY2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKmhvc3QpOwogCiBXRUJLSVRfQVBJ
IHZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggZGQ1MmExYy4uYThjMTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oIgogI2luY2x1ZGUgIldlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRCYWNrRm9y
d2FyZExpc3RQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51
UHJpdmF0ZS5oIgpAQCAtODgzLDE2ICs4ODIsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgLyoq
CiAgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzOgogICAg
ICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAotICAgICAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAgICAgKiBA
Y2VydGlmaWNhdGU6IGEgI0dUbHNDZXJ0aWZpY2F0ZQorICAgICAqIEBlcnJvcnM6IGEgI0dUbHND
ZXJ0aWZpY2F0ZUZsYWdzIHdpdGggdGhlIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgQGNlcnRpZmlj
YXRlCiAgICAgICogQGhvc3Q6IHRoZSBob3N0IG9uIHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZAog
ICAgICAqCi0gICAgICogRW1pdHRlZCB3aGVuIGEgVExTIGVycm9yIG9jY3VycyBkdXJpbmcgYSBs
b2FkIG9wZXJhdGlvbi4gVGhlIEBpbmZvCi0gICAgICogb2JqZWN0IGNvbnRhaW5zIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBlcnJvciBzdWNoIGFzIHRoZSAjR1Rsc0NlcnRpZmljYXRlCi0gICAgICog
YW5kIHRoZSAjR1Rsc0NlcnRpZmljYXRlRmxhZ3MuIFRvIGFsbG93IGFuIGV4Y2VwdGlvbiBmb3Ig
dGhpcyBjZXJ0aWZpY2F0ZQorICAgICAqIEVtaXR0ZWQgd2hlbiBhIFRMUyBlcnJvciBvY2N1cnMg
ZHVyaW5nIGEgbG9hZCBvcGVyYXRpb24uCisgICAgICogVG8gYWxsb3cgYW4gZXhjZXB0aW9uIGZv
ciB0aGlzIGNlcnRpZmljYXRlCiAgICAgICogYW5kIHRoaXMgaG9zdCB1c2Ugd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpLgogICAgICAqCi0gICAgICog
VG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBzaG91bGQgY29weSB0aGUg
I1dlYktpdENlcnRpZmljYXRlSW5mbwotICAgICAqIHdpdGggd2Via2l0X2NlcnRpZmljYXRlX2lu
Zm9fY29weSgpIGFuZCByZXR1cm4gJVRSVUUuCisgICAgICogVG8gaGFuZGxlIHRoaXMgc2lnbmFs
IGFzeW5jaHJvbm91c2x5IHlvdSBzaG91bGQgY2FsbCBnX29iamVjdF9yZWYoKSBvbiBAY2VydGlm
aWNhdGUKKyAgICAgKiBhbmQgcmV0dXJuICVUUlVFLgogICAgICAqCiAgICAgICogSWYgJUZBTFNF
IGlzIHJldHVybmVkLCAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgd2lsbCBiZSBlbWl0dGVk
LiBUaGUgbG9hZAogICAgICAqIHdpbGwgZmluaXNoIHJlZ2FyZGxlc3Mgb2YgdGhlIHJldHVybmVk
IHZhbHVlLgpAQCAtOTAwLDcgKzg5OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAqIFJldHVy
bnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0
aGUgZXZlbnQuCiAgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVy
LgogICAgICAqCi0gICAgICogU2luY2U6IDIuNAorICAgICAqIFNpbmNlOiAyLjYKICAgICAgKi8K
ICAgICBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10gPQogICAgICAgICBnX3Np
Z25hbF9uZXcoImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsCkBAIC05MDgsOSArOTA3LDEw
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdD
bGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCiAgICAg
ICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxlZF93
aXRoX3Rsc19lcnJvcnMpLAogICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9o
YW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCi0gICAgICAgICAgICB3ZWJraXRfbWFy
c2hhbF9CT09MRUFOX19CT1hFRF9TVFJJTkcsCi0gICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwg
MiwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KLSAgICAgICAgICAgIFdFQktJVF9UWVBFX0NF
UlRJRklDQVRFX0lORk8gIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUsCisgICAgICAgICAg
ICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFO
LCAzLAorICAgICAgICAgICAgR19UWVBFX1RMU19DRVJUSUZJQ0FURSwKKyAgICAgICAgICAgIEdf
VFlQRV9UTFNfQ0VSVElGSUNBVEVfRkxBR1MsCiAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsK
IAogICAgIC8qKgpAQCAtMTU5NCw5ICsxNTk0LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmEK
ICAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5ID0gd2Via2l0X3dlYl9j
b250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAg
ICBpZiAodGxzRXJyb3JzUG9saWN5ID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKSB7
CiAgICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gc291cFVSSShzb3VwX3VyaV9uZXcoZmFpbGlu
Z1VSSSkpOwotICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gaW5mbyhjZXJ0aWZpY2F0ZSwg
dGxzRXJyb3JzKTsKICAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0ZBSUxFRF9XSVRIX1RMU19FUlJPUlNdLCAw
LCAmaW5mbywgc291cFVSSS0+aG9zdCwgJnJldHVyblZhbHVlKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAsIGNl
cnRpZmljYXRlLCB0bHNFcnJvcnMsIHNvdXBVUkktPmhvc3QsICZyZXR1cm5WYWx1ZSk7CiAgICAg
ICAgIGlmICghcmV0dXJuVmFsdWUpCiAgICAgICAgICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcs
IHNpZ25hbHNbTE9BRF9GQUlMRURdLCAwLCBXRUJLSVRfTE9BRF9TVEFSVEVELCBmYWlsaW5nVVJJ
LCBlcnJvciwgJnJldHVyblZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggOGE0NzI5ZS4uNTAyNjM1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApA
QCAtMjM2LDcgKzIzNiw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBnYm9v
bGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOwogICAg
IGdib29sZWFuICAgKCogbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAgICAqaW5mbywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZp
Y2F0ZSAgICAgICAgICAgICAqY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAgICAgICAgIGVycm9y
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgICAqaG9zdCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLWRvY3Muc2dtbAppbmRleCA2MzAyYzBhLi44YjNkNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWwKQEAgLTQ0LDcgKzQ0LDYgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Rm9y
bVN1Ym1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRTZWN1cml0eU1hbmFnZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dFdlYlZpZXdHcm91cC54bWwiLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLnhtbCIvPgogICA8L2NoYXB0ZXI+CiAKICAgPGNoYXB0ZXI+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dAppbmRleCA4ZjlmNjE2Li40MjRiOGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKQEAgLTExNjYsMTggKzExNjYsMyBAQCBXRUJLSVRfU0NSSVBUX1dPUkxEX0dF
VF9DTEFTUwogV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlCiB3ZWJraXRfc2NyaXB0X3dvcmxkX2dl
dF90eXBlCiA8L1NFQ1RJT04+Ci0KLTxTRUNUSU9OPgotPEZJTEU+V2ViS2l0Q2VydGlmaWNhdGVJ
bmZvPC9GSUxFPgotV2ViS2l0Q2VydGlmaWNhdGVJbmZvCi13ZWJraXRfY2VydGlmaWNhdGVfaW5m
b19jb3B5Ci13ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlCi13ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19nZXRfdGxzX2NlcnRpZmljYXRlCi13ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxz
X2Vycm9ycwotCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLVdFQktJVF9UWVBFX0NFUlRJRklDQVRF
X0lORk8KLQotPFNVQlNFQ1RJT04gUHJpdmF0ZT4KLXdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dl
dF90eXBlCi08L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKaW5kZXggNTJjY2FkMy4uZTg1NmNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRC
YWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlz
dEl0ZW0uaD4KLSNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmljYXRlSW5mby5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMGFlNDFhMS4uOTk1NjEwNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE0LTA3LTI5ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBSZW1v
dmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGZyb20gV2ViS2l0MkdUSysgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4MzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIFNTTCB0ZXN0
IGZvciB0aGUgQVBJIGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFNTTC5jcHA6CisgICAgICAgICh0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJv
cnMpOgorCisyMDE0LTA3LTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKCkg
aW4gV2ViS2l0MgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM0NzM1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0U1NMLmNwcAppbmRleCA4MjQ2ZjYzLi5iMzUxNzI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCkBAIC0xNDksNiArMTQ5LDcgQEAg
cHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVExTRXJyb3JzVGVzdCk7CiAKICAg
ICBUTFNFcnJvcnNUZXN0KCkKKyAgICAgICAgOiBtX3Rsc0Vycm9ycyhzdGF0aWNfY2FzdDxHVGxz
Q2VydGlmaWNhdGVGbGFncz4oMCkpCiAgICAgewogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsIEdfQ0FMTEJBQ0socnVuTG9h
ZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayksIHRoaXMpOwogICAgIH0KQEAgLTE1NiwyMSAr
MTU3LDE5IEBAIHB1YmxpYzoKICAgICB+VExTRXJyb3JzVGVzdCgpCiAgICAgewogICAgICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJWaWV3LCBHX1NJR05BTF9N
QVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKLSAgICAgICAgaWYgKG1fY2VydGlmaWNhdGVJ
bmZvKQotICAgICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZShtX2NlcnRpZmlj
YXRlSW5mbyk7CiAgICAgfQogCi0gICAgc3RhdGljIGdib29sZWFuIHJ1bkxvYWRGYWlsZWRXaXRo
VExTRXJyb3JzQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENlcnRpZmljYXRlSW5mbyog
aW5mbywgY29uc3QgY2hhciogaG9zdCwgVExTRXJyb3JzVGVzdCogdGVzdCkKKyAgICBzdGF0aWMg
Z2Jvb2xlYW4gcnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayhXZWJLaXRXZWJWaWV3
KiwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxz
RXJyb3JzLCBjb25zdCBjaGFyKiBob3N0LCBUTFNFcnJvcnNUZXN0KiB0ZXN0KQogICAgIHsKLSAg
ICAgICAgdGVzdC0+cnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoaW5mbywgaG9zdCk7CisgICAg
ICAgIHRlc3QtPnJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKGNlcnRpZmljYXRlLCB0bHNFcnJv
cnMsIGhvc3QpOwogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKLSAgICB2b2lkIHJ1bkxv
YWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbywgY29uc3Qg
Y2hhciogaG9zdCkKKyAgICB2b2lkIHJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKEdUbHNDZXJ0
aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgY29u
c3QgY2hhciogaG9zdCkKICAgICB7Ci0gICAgICAgIGlmIChtX2NlcnRpZmljYXRlSW5mbykKLSAg
ICAgICAgICAgIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUobV9jZXJ0aWZpY2F0ZUluZm8p
OwotICAgICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2Nv
cHkoaW5mbyk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoY2VydGlmaWNhdGUpKTsKKyAgICAgICAgbV9jZXJ0aWZpY2F0ZSA9IGNlcnRpZmlj
YXRlOworICAgICAgICBtX3Rsc0Vycm9ycyA9IHRsc0Vycm9yczsKICAgICAgICAgbV9ob3N0LnJl
c2V0KGdfc3RyZHVwKGhvc3QpKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29w
KTsKICAgICB9CkBAIC0xODAsMTggKzE3OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGdfbWFpbl9s
b29wX3J1bihtX21haW5Mb29wKTsKICAgICB9CiAKLSAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8q
IGNlcnRpZmljYXRlSW5mbygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUlu
Zm87Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogaG9zdCgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9ob3N0LmdldCgpOwotICAgIH0KKyAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsgfQorICAgIEdUbHNDZXJ0aWZp
Y2F0ZUZsYWdzIHRsc0Vycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdGxzRXJyb3JzOyB9CisgICAg
Y29uc3QgY2hhciogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdC5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogbV9jZXJ0aWZpY2F0ZUluZm87CisgICAg
R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IG1fY2VydGlmaWNhdGU7CisgICAgR1Rsc0NlcnRpZmlj
YXRlRmxhZ3MgbV90bHNFcnJvcnM7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBtX2hvc3Q7CiB9Owog
CkBAIC0yMDQsMTQgKzE5OCwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0TG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnMoVExTRXJyb3JzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2Fk
VVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoKTsKICAgICAvLyBUZXN0
IHRoZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gQVBJLgotICAgIGdfYXNzZXJ0KEdfSVNfVExTX0NF
UlRJRklDQVRFKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUodGVz
dC0+Y2VydGlmaWNhdGVJbmZvKCkpKSk7Ci0gICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfY2Vy
dGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyh0ZXN0LT5jZXJ0aWZpY2F0ZUluZm8oKSksID09
LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKKyAgICBnX2Fzc2VydChHX0lTX1RMU19D
RVJUSUZJQ0FURSh0ZXN0LT5jZXJ0aWZpY2F0ZSgpKSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT50bHNFcnJvcnMoKSwgPT0sIEdfVExTX0NFUlRJRklDQVRFX1VOS05PV05fQ0EpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5ob3N0KCksID09LCBzb3VwX3VyaV9nZXRfaG9zdChrSHR0
cHNTZXJ2ZXItPmJhc2VVUkkoKSkpOwogICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRF
dmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNr
aW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKIAogICAgIC8vIFRlc3QgYWxsb3dpbmcgYW4gZXhjZXB0
aW9uIGZvciB0aGlzIGNlcnRpZmljYXRlIG9uIHRoaXMgaG9zdC4KLSAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KGNvbnRleHQsIHRlc3QtPmNlcnRp
ZmljYXRlSW5mbygpLCB0ZXN0LT5ob3N0KCkpOworICAgIHdlYmtpdF93ZWJfY29udGV4dF9hbGxv
d190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QoY29udGV4dCwgdGVzdC0+Y2VydGlmaWNhdGUoKSwg
dGVzdC0+aG9zdCgpKTsKICAgICAvLyBUaGUgcGFnZSBzaG91bGQgbm93IGxvYWQgd2l0aG91dCBl
cnJvcnMuCiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90
ZXN0LXRscy8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235680</attachid>
            <date>2014-07-29 05:56:13 -0700</date>
            <delta_ts>2014-07-29 08:24:13 -0700</delta_ts>
            <desc>Rebased to apply on current git master</desc>
            <filename>wk2-remove-certificate-info-api.diff</filename>
            <type>text/plain</type>
            <size>24746</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4NzAzYmNjLi5mOTJjN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTQtMDctMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFJlbW92ZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gZnJvbSBXZWJL
aXQyR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDgzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHdhcyBhZGRlZCB0byBtYWtlIHRoZSBBUEkgbW9yZSBjb252ZW5pZW50IGJ1dCBpdCBo
YXMgZW5kZWQgdXAKKyAgICAgICAgbWFraW5nIGl0IG1vcmUgY29tcGxpY2F0ZWQuIFdlYktpdFdl
YlZpZXc6OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycworICAgICAgICBub3cgcmVjZWl2ZXMg
YSBHVGxzQ2VydGlmaWNhdGUgKyBHVGxzQ2VydGlmaWNhdGVGbGFncyBhbmQKKyAgICAgICAgd2Vi
a2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpIHJlY2VpdmVz
IGEgR1Rsc0NlcnRpZmljYXRlCisgICAgICAgIHNpbmNlIHRoZSBlcnJvcnMgYXJlIG5vdCBhY3R1
YWxseSBuZWVkZWQuIFRoaXMgbWFrZXMgdGhlIEFQSSBtb3JlCisgICAgICAgIGNvbnNpc3RlbnQg
d2l0aCB0aGUgZXhpc3RpbmcgbWV0aG9kIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8oKS4K
KworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBSZW1vdmUgZmlsZXMgZnJvbSBjb21waWxh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmlj
YXRlSW5mby5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENl
cnRpZmljYXRlSW5mb1ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9h
bGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmg6CisKIDIwMTQtMDctMjkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZW1vdmUgV2ViS2l0V2ViVmll
d0dyb3VwIGZyb20gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRl
eCAwNDc4YTk3Li40M2UzMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAwLDkg
KzEwMCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRl
SW5mby5oCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0
ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTMyNCw3ICszMjEsNiBAQCBzZXQoV2Vi
S2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKLSAgICAk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENyZWRlbnRpYWwuaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFj
dGlvbnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEyZGYxYWEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmgiCi0KLSNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRl
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLS8qKgotICogU0VDVElPTjogV2ViS2l0
Q2VydGlmaWNhdGVJbmZvCi0gKiBAU2hvcnRfZGVzY3JpcHRpb246IEJveGVkIHR5cGUgdG8gZW5j
YXBzdWxhdGUgVExTIGNlcnRpZmljYXRlIGluZm9ybWF0aW9uCi0gKiBAVGl0bGU6IFdlYktpdENl
cnRpZmljYXRlSW5mbwotICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldywgI1dlYktpdFdlYkNv
bnRleHQKLSAqCi0gKiBXaGVuIGEgY2xpZW50IGxvYWRzIGEgcGFnZSBvdmVyIEhUVFBTIHdoZXJl
IHRoZXJlIGlzIGFuIHVuZGVybHlpbmcgVExTIGVycm9yCi0gKiBXZWJLaXQgd2lsbCBmaXJlIGEg
I1dlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyBzaWduYWwgd2l0aCBh
Ci0gKiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGFuZCB0aGUgaG9zdCBvZiB0aGUgZmFpbGluZyBV
UkkuCi0gKgotICogVG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBzaG91
bGQgbWFrZSBhIGNvcHkgb2YgdGhlCi0gKiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvIHdpdGggd2Vi
a2l0X2NlcnRpZmljYXRlX2luZm9fY29weSgpLgotICovCi0KLUdfREVGSU5FX0JPWEVEX1RZUEUo
V2ViS2l0Q2VydGlmaWNhdGVJbmZvLCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mbywgd2Via2l0X2Nl
cnRpZmljYXRlX2luZm9fY29weSwgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSkKLQotY29u
c3QgQ2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUlu
Zm8oV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvKQotewotICAgIEFTU0VSVChpbmZvKTsKLSAg
ICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvOwotfQotCi0vKioKLSAqIHdlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2NvcHk6Ci0gKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCi0g
KgotICogTWFrZSBhIGNvcHkgb2YgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCi0gKgotICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIGluICNXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uCi0gKgotICogU2luY2U6IDIuNAotICovCi1XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8qIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBp
bmZvKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOwotCi0gICAgV2ViS2l0
Q2VydGlmaWNhdGVJbmZvKiBjb3B5ID0gZ19zbGljZV9uZXcwKFdlYktpdENlcnRpZmljYXRlSW5m
byk7Ci0gICAgbmV3IChjb3B5KSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8oaW5mbyk7Ci0gICAgcmV0
dXJuIGNvcHk7Ci19Ci0KLS8qKgotICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZToKLSAq
IEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KLSAqCi0gKiBGcmVlIHRoZSAjV2ViS2l0
Q2VydGlmaWNhdGVJbmZvLgotICoKLSAqIFNpbmNlOiAyLjQKLSAqLwotdm9pZCB3ZWJraXRfY2Vy
dGlmaWNhdGVfaW5mb19mcmVlKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKLXsKLSAgICBn
X3JldHVybl9pZl9mYWlsKGluZm8pOwotCi0gICAgaW5mby0+fldlYktpdENlcnRpZmljYXRlSW5m
bygpOwotICAgIGdfc2xpY2VfZnJlZShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8sIGluZm8pOwotfQot
Ci0vKioKLSAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGU6Ci0g
KiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCi0gKgotICogR2V0IHRoZSAjR1Rsc0Nl
cnRpZmljYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gKiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZv
LgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIGNlcnRpZmljYXRlIG9mIEBp
bmZvLgotICoKLSAqIFNpbmNlOiAyLjQKLSAqLwotR1Rsc0NlcnRpZmljYXRlKiB3ZWJraXRfY2Vy
dGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlKFdlYktpdENlcnRpZmljYXRlSW5mbyAq
aW5mbykKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmZvLCAwKTsKLQotICAgIHJldHVy
biBpbmZvLT5jZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKTsKLX0KLQotLyoqCi0gKiB3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9yczoKLSAqIEBpbmZvOiBhICNXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8KLSAqCi0gKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFncyB2ZXJp
ZmljYXRpb24gc3RhdHVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gKiAjV2ViS2l0Q2VydGlmaWNh
dGVJbmZvLgotICoKLSAqIFJldHVybnM6IFRoZSB2ZXJpZmljYXRpb24gc3RhdHVzIG9mIEBpbmZv
LgotICoKLSAqIFNpbmNlOiAyLjQKLSAqLwotR1Rsc0NlcnRpZmljYXRlRmxhZ3Mgd2Via2l0X2Nl
cnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZv
KQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIHN0YXRpY19jYXN0PEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzPigwKSk7Ci0KLSAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvLnRs
c0Vycm9ycygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWVmMTY0MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKLSNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQy
Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCi0jZW5kaWYKLQotI2lmbmRlZiBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm9faAotI2RlZmluZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9faAotCi0jaW5j
bHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRf
VFlQRV9DRVJUSUZJQ0FURV9JTkZPICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZSgp
KQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvIFdlYktpdENlcnRpZmlj
YXRlSW5mbzsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0
X3R5cGUgICAgICAgICAgICAodm9pZCk7Ci0KLVdFQktJVF9BUEkgV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvICoKLXdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkgICAgICAgICAgICAgICAgKFdlYktp
dENlcnRpZmljYXRlSW5mbyAqaW5mbyk7Ci0KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2NlcnRp
ZmljYXRlX2luZm9fZnJlZSAgICAgICAgICAgICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICpp
bmZvKTsKLQotV0VCS0lUX0FQSSBHVGxzQ2VydGlmaWNhdGUgKgotd2Via2l0X2NlcnRpZmljYXRl
X2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZSAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsK
LQotV0VCS0lUX0FQSSBHVGxzQ2VydGlmaWNhdGVGbGFncwotd2Via2l0X2NlcnRpZmljYXRlX2lu
Zm9fZ2V0X3Rsc19lcnJvcnMgICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKLQot
R19FTkRfREVDTFMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiM2YxZWYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBT
YW1zdW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJL
aXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
UHJpdmF0ZV9oCi0KLSNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCIKLSNpbmNsdWRl
ICJXZWJLaXRQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4K
LQotc3RydWN0IF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8gewotICAgIF9XZWJLaXRDZXJ0aWZpY2F0
ZUluZm8oR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3Mg
dGxzRXJyb3JzKQotICAgICAgICA6IGNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgdGxzRXJy
b3JzKQotICAgIHsKLSAgICB9Ci0KLSAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENl
cnRpZmljYXRlSW5mbyogaW5mbykKLSAgICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+Y2Vy
dGlmaWNhdGVJbmZvKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8gY2VydGlmaWNhdGVJbmZvOwotfTsKLQotY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8oV2ViS2l0Q2VydGlmaWNh
dGVJbmZvKik7Ci0KLSNlbmRpZiAvLyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAKaW5kZXggZmY3ZmU0Ni4uMTRlYjFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdEJhdHRlcnlQcm92aWRlci5o
IgotI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC05MDAsMjAgKzg5
OSwyMCBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgY29uc3QgY2hhciogaG9zdAogLyoqCiAgKiB3ZWJraXRfd2ViX2NvbnRl
eHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0OgogICogQGNvbnRleHQ6IGEgI1dlYktp
dFdlYkNvbnRleHQKLSAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBjZXJ0
aWZpY2F0ZTogYSAjR1Rsc0NlcnRpZmljYXRlCiAgKiBAaG9zdDogdGhlIGhvc3QgZm9yIHdoaWNo
IGEgY2VydGlmaWNhdGUgaXMgdG8gYmUgYWxsb3dlZAogICoKICAqIElnbm9yZSBmdXJ0aGVyIFRM
UyBlcnJvcnMgb24gdGhlIEBob3N0IGZvciB0aGUgY2VydGlmaWNhdGUgcHJlc2VudCBpbiBAaW5m
by4KICAqCi0gKiBTaW5jZTogMi40CisgKiBTaW5jZTogMi42CiAgKi8KLXZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0LCBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8sIGNvbnN0IGdjaGFyKiBob3N0
KQordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUs
IGNvbnN0IGdjaGFyKiBob3N0KQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9DT05URVhUKGNvbnRleHQpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoR19JU19UTFNfQ0VSVElGSUNBVEUoY2VydGlmaWNhdGUpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKGhvc3QpOwogCi0gICAgUmVmUHRyPFdlYkNlcnRpZmljYXRlSW5mbz4g
d2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUod2Via2l0Q2Vy
dGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKGluZm8pKTsKKyAgICBSZWZQdHI8V2ViQ2Vy
dGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNy
ZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwogICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmFs
bG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0
KCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggM2NlMjgxYi4uMGNl
OGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaApAQCAtMjUsNyArMjUsNiBAQAogI2RlZmluZSBXZWJLaXRXZWJDb250ZXh0
X2gKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvb2tpZU1hbmFnZXIu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdERvd25sb2FkLmg+CkBAIC0yMzYsNyArMjM1LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0CiAKIFdF
QktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9m
b3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZSAgICAgICAgICAgICAgICpj
ZXJ0aWZpY2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKmhvc3QpOwogCiBXRUJLSVRf
QVBJIHZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggZDQyYmI4MS4uZjljYWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI5LDcgKzI5LDYg
QEAKICNpbmNsdWRlICJXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oIgogI2luY2x1ZGUgIldl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRCYWNr
Rm9yd2FyZExpc3RQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRN
ZW51UHJpdmF0ZS5oIgpAQCAtODcxLDE2ICs4NzAsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAg
LyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzOgog
ICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwg
aXMgZW1pdHRlZAotICAgICAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAgICAg
KiBAY2VydGlmaWNhdGU6IGEgI0dUbHNDZXJ0aWZpY2F0ZQorICAgICAqIEBlcnJvcnM6IGEgI0dU
bHNDZXJ0aWZpY2F0ZUZsYWdzIHdpdGggdGhlIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgQGNlcnRp
ZmljYXRlCiAgICAgICogQGhvc3Q6IHRoZSBob3N0IG9uIHdoaWNoIHRoZSBlcnJvciBvY2N1cnJl
ZAogICAgICAqCi0gICAgICogRW1pdHRlZCB3aGVuIGEgVExTIGVycm9yIG9jY3VycyBkdXJpbmcg
YSBsb2FkIG9wZXJhdGlvbi4gVGhlIEBpbmZvCi0gICAgICogb2JqZWN0IGNvbnRhaW5zIGluZm9y
bWF0aW9uIGFib3V0IHRoZSBlcnJvciBzdWNoIGFzIHRoZSAjR1Rsc0NlcnRpZmljYXRlCi0gICAg
ICogYW5kIHRoZSAjR1Rsc0NlcnRpZmljYXRlRmxhZ3MuIFRvIGFsbG93IGFuIGV4Y2VwdGlvbiBm
b3IgdGhpcyBjZXJ0aWZpY2F0ZQorICAgICAqIEVtaXR0ZWQgd2hlbiBhIFRMUyBlcnJvciBvY2N1
cnMgZHVyaW5nIGEgbG9hZCBvcGVyYXRpb24uCisgICAgICogVG8gYWxsb3cgYW4gZXhjZXB0aW9u
IGZvciB0aGlzIGNlcnRpZmljYXRlCiAgICAgICogYW5kIHRoaXMgaG9zdCB1c2Ugd2Via2l0X3dl
Yl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpLgogICAgICAqCi0gICAg
ICogVG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBzaG91bGQgY29weSB0
aGUgI1dlYktpdENlcnRpZmljYXRlSW5mbwotICAgICAqIHdpdGggd2Via2l0X2NlcnRpZmljYXRl
X2luZm9fY29weSgpIGFuZCByZXR1cm4gJVRSVUUuCisgICAgICogVG8gaGFuZGxlIHRoaXMgc2ln
bmFsIGFzeW5jaHJvbm91c2x5IHlvdSBzaG91bGQgY2FsbCBnX29iamVjdF9yZWYoKSBvbiBAY2Vy
dGlmaWNhdGUKKyAgICAgKiBhbmQgcmV0dXJuICVUUlVFLgogICAgICAqCiAgICAgICogSWYgJUZB
TFNFIGlzIHJldHVybmVkLCAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgd2lsbCBiZSBlbWl0
dGVkLiBUaGUgbG9hZAogICAgICAqIHdpbGwgZmluaXNoIHJlZ2FyZGxlc3Mgb2YgdGhlIHJldHVy
bmVkIHZhbHVlLgpAQCAtODg4LDcgKzg4Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAqIFJl
dHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZv
ciB0aGUgZXZlbnQuCiAgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0
aGVyLgogICAgICAqCi0gICAgICogU2luY2U6IDIuNAorICAgICAqIFNpbmNlOiAyLjYKICAgICAg
Ki8KICAgICBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10gPQogICAgICAgICBn
X3NpZ25hbF9uZXcoImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsCkBAIC04OTYsOSArODk1
LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCiAg
ICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxl
ZF93aXRoX3Rsc19lcnJvcnMpLAogICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1
ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCi0gICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9CT09MRUFOX19CT1hFRF9TVFJJTkcsCi0gICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMiwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KLSAgICAgICAgICAgIFdFQktJVF9UWVBF
X0NFUlRJRklDQVRFX0lORk8gIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUsCisgICAgICAg
ICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgICAgIEdfVFlQRV9CT09M
RUFOLCAzLAorICAgICAgICAgICAgR19UWVBFX1RMU19DRVJUSUZJQ0FURSwKKyAgICAgICAgICAg
IEdfVFlQRV9UTFNfQ0VSVElGSUNBVEVfRkxBR1MsCiAgICAgICAgICAgICBHX1RZUEVfU1RSSU5H
KTsKIAogICAgIC8qKgpAQCAtMTU4Miw5ICsxNTgyLDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9h
ZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciog
ZmEKICAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5ID0gd2Via2l0X3dl
Yl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsK
ICAgICBpZiAodGxzRXJyb3JzUG9saWN5ID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlM
KSB7CiAgICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gc291cFVSSShzb3VwX3VyaV9uZXcoZmFp
bGluZ1VSSSkpOwotICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gaW5mbyhjZXJ0aWZpY2F0
ZSwgdGxzRXJyb3JzKTsKICAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0ZBSUxFRF9XSVRIX1RMU19FUlJPUlNd
LCAwLCAmaW5mbywgc291cFVSSS0+aG9zdCwgJnJldHVyblZhbHVlKTsKKyAgICAgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAs
IGNlcnRpZmljYXRlLCB0bHNFcnJvcnMsIHNvdXBVUkktPmhvc3QsICZyZXR1cm5WYWx1ZSk7CiAg
ICAgICAgIGlmICghcmV0dXJuVmFsdWUpCiAgICAgICAgICAgICBnX3NpZ25hbF9lbWl0KHdlYlZp
ZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURdLCAwLCBXRUJLSVRfTE9BRF9TVEFSVEVELCBmYWlsaW5n
VVJJLCBlcnJvciwgJnJldHVyblZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMmM2OTRjMy4uNGViYTBjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aApAQCAtMjM1LDcgKzIzNSw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBn
Ym9vbGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOwog
ICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAgICAqaW5mbywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0
aWZpY2F0ZSAgICAgICAgICAgICAqY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAgICAgICAgIGVy
cm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAgICAqaG9zdCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4NDc1NDViLi5mZjQ0ZDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwKQEAgLTQzLDcgKzQzLDYgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
Q29udGV4dE1lbnVJdGVtLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRG
b3JtU3VibWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFNlY3VyaXR5TWFuYWdlci54bWwiLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLnhtbCIvPgogICA8L2NoYXB0ZXI+CiAKICAgPGNoYXB0ZXI+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBiOWU4MTQxLi43NGZmMDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTExNDIsMTggKzExNDIsMyBAQCBXRUJLSVRfU0NSSVBUX1dP
UkxEX0dFVF9DTEFTUwogV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlCiB3ZWJraXRfc2NyaXB0X3dv
cmxkX2dldF90eXBlCiA8L1NFQ1RJT04+Ci0KLTxTRUNUSU9OPgotPEZJTEU+V2ViS2l0Q2VydGlm
aWNhdGVJbmZvPC9GSUxFPgotV2ViS2l0Q2VydGlmaWNhdGVJbmZvCi13ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19jb3B5Ci13ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlCi13ZWJraXRfY2VydGlm
aWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlCi13ZWJraXRfY2VydGlmaWNhdGVfaW5mb19n
ZXRfdGxzX2Vycm9ycwotCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLVdFQktJVF9UWVBFX0NFUlRJ
RklDQVRFX0lORk8KLQotPFNVQlNFQ1RJT04gUHJpdmF0ZT4KLXdlYmtpdF9jZXJ0aWZpY2F0ZV9p
bmZvX2dldF90eXBlCi08L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKaW5kZXggOTdjMjc2NS4uZDc5MTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3
YXJkTGlzdEl0ZW0uaD4KLSNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmljYXRlSW5mby5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
Q29udGV4dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNzc2OGIzNy4uMTgwZTM2OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA3LTI5ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBSZW1vdmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGZyb20gV2ViS2l0MkdUSysgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIFNT
TCB0ZXN0IGZvciB0aGUgQVBJIGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHA6CisgICAgICAgICh0ZXN0TG9hZEZhaWxlZFdpdGhU
TFNFcnJvcnMpOgorCiAyMDE0LTA3LTI5ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIFdlYktpdFdlYlZpZXdHcm91cCBm
cm9tIFdlYktpdDIgR1RLKyBBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0U1NMLmNwcAppbmRleCA4MjQ2ZjYzLi5iMzUxNzI1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCkBAIC0xNDksNiAr
MTQ5LDcgQEAgcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVExTRXJyb3JzVGVz
dCk7CiAKICAgICBUTFNFcnJvcnNUZXN0KCkKKyAgICAgICAgOiBtX3Rsc0Vycm9ycyhzdGF0aWNf
Y2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpCiAgICAgewogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsIEdfQ0FMTEJB
Q0socnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayksIHRoaXMpOwogICAgIH0KQEAg
LTE1NiwyMSArMTU3LDE5IEBAIHB1YmxpYzoKICAgICB+VExTRXJyb3JzVGVzdCgpCiAgICAgewog
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJWaWV3LCBH
X1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKLSAgICAgICAgaWYgKG1fY2Vy
dGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSht
X2NlcnRpZmljYXRlSW5mbyk7CiAgICAgfQogCi0gICAgc3RhdGljIGdib29sZWFuIHJ1bkxvYWRG
YWlsZWRXaXRoVExTRXJyb3JzQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENlcnRpZmlj
YXRlSW5mbyogaW5mbywgY29uc3QgY2hhciogaG9zdCwgVExTRXJyb3JzVGVzdCogdGVzdCkKKyAg
ICBzdGF0aWMgZ2Jvb2xlYW4gcnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayhXZWJL
aXRXZWJWaWV3KiwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRl
RmxhZ3MgdGxzRXJyb3JzLCBjb25zdCBjaGFyKiBob3N0LCBUTFNFcnJvcnNUZXN0KiB0ZXN0KQog
ICAgIHsKLSAgICAgICAgdGVzdC0+cnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoaW5mbywgaG9z
dCk7CisgICAgICAgIHRlc3QtPnJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKGNlcnRpZmljYXRl
LCB0bHNFcnJvcnMsIGhvc3QpOwogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKLSAgICB2
b2lkIHJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5m
bywgY29uc3QgY2hhciogaG9zdCkKKyAgICB2b2lkIHJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3Jz
KEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vy
cm9ycywgY29uc3QgY2hhciogaG9zdCkKICAgICB7Ci0gICAgICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKLSAgICAgICAgICAgIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUobV9jZXJ0aWZp
Y2F0ZUluZm8pOwotICAgICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHdlYmtpdF9jZXJ0aWZpY2F0
ZV9pbmZvX2NvcHkoaW5mbyk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoY2VydGlmaWNhdGUpKTsKKyAgICAgICAgbV9jZXJ0aWZpY2F0ZSA9
IGNlcnRpZmljYXRlOworICAgICAgICBtX3Rsc0Vycm9ycyA9IHRsc0Vycm9yczsKICAgICAgICAg
bV9ob3N0LnJlc2V0KGdfc3RyZHVwKGhvc3QpKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCht
X21haW5Mb29wKTsKICAgICB9CkBAIC0xODAsMTggKzE3OSwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKICAgICB9CiAKLSAgICBXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9jZXJ0
aWZpY2F0ZUluZm87Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogaG9zdCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9ob3N0LmdldCgpOwotICAgIH0KKyAgICBHVGxzQ2VydGlmaWNhdGUqIGNl
cnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsgfQorICAgIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdGxzRXJyb3Jz
OyB9CisgICAgY29uc3QgY2hhciogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdC5nZXQoKTsg
fQogCiBwcml2YXRlOgotICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogbV9jZXJ0aWZpY2F0ZUlu
Zm87CisgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IG1fY2VydGlmaWNhdGU7CisgICAgR1Rs
c0NlcnRpZmljYXRlRmxhZ3MgbV90bHNFcnJvcnM7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBtX2hv
c3Q7CiB9OwogCkBAIC0yMDQsMTQgKzE5OCwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0TG9hZEZhaWxl
ZFdpdGhUTFNFcnJvcnMoVExTRXJyb3JzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0
ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRh
dGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoKTsKICAg
ICAvLyBUZXN0IHRoZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gQVBJLgotICAgIGdfYXNzZXJ0KEdf
SVNfVExTX0NFUlRJRklDQVRFKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlm
aWNhdGUodGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkpKSk7Ci0gICAgZ19hc3NlcnRfY21wdWludCh3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyh0ZXN0LT5jZXJ0aWZpY2F0ZUlu
Zm8oKSksID09LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKKyAgICBnX2Fzc2VydChH
X0lTX1RMU19DRVJUSUZJQ0FURSh0ZXN0LT5jZXJ0aWZpY2F0ZSgpKSk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh0ZXN0LT50bHNFcnJvcnMoKSwgPT0sIEdfVExTX0NFUlRJRklDQVRFX1VOS05PV05f
Q0EpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5ob3N0KCksID09LCBzb3VwX3VyaV9nZXRf
aG9zdChrSHR0cHNTZXJ2ZXItPmJhc2VVUkkoKSkpOwogICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0
LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRT
dGFydGVkKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwg
TG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKIAogICAgIC8vIFRlc3QgYWxsb3dpbmcg
YW4gZXhjZXB0aW9uIGZvciB0aGlzIGNlcnRpZmljYXRlIG9uIHRoaXMgaG9zdC4KLSAgICB3ZWJr
aXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KGNvbnRleHQsIHRl
c3QtPmNlcnRpZmljYXRlSW5mbygpLCB0ZXN0LT5ob3N0KCkpOworICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QoY29udGV4dCwgdGVzdC0+Y2VydGlm
aWNhdGUoKSwgdGVzdC0+aG9zdCgpKTsKICAgICAvLyBUaGUgcGFnZSBzaG91bGQgbm93IGxvYWQg
d2l0aG91dCBlcnJvcnMuCiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi90ZXN0LXRscy8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwo=
</data>
<flag name="review"
          id="260260"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>