<?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>105631</bug_id>
          
          <creation_ts>2012-12-21 05:39:24 -0800</creation_ts>
          <short_desc>[GTK] Add support for loading web process extensions</short_desc>
          <delta_ts>2013-01-10 03:29:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>106462</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>levin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796255</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-21 05:39:24 -0800</bug_when>
    <thetext>Add support for loading plugins for the web process (web extensions) using injected bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796267</commentid>
    <comment_count>1</comment_count>
      <attachid>180511</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-21 05:57:07 -0800</bug_when>
    <thetext>Created attachment 180511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796268</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 06:00:11 -0800</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>796294</commentid>
    <comment_count>3</comment_count>
      <attachid>180511</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-21 07:24:11 -0800</bug_when>
    <thetext>Comment on attachment 180511
Patch

Attachment 180511 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15454419

New failing tests:
svg/as-image/img-preserveAspectRatio-support-2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798083</commentid>
    <comment_count>4</comment_count>
      <attachid>180924</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-29 01:59:36 -0800</bug_when>
    <thetext>Created attachment 180924
Updated patch

Removed the single header check added to the main web extension header by mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798084</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-29 02:00:29 -0800</bug_when>
    <thetext>See this ephy bug for an example of how this would be used by apps:

https://bugzilla.gnome.org/show_bug.cgi?id=684437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798246</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-30 11:01:13 -0800</bug_when>
    <thetext>I see this kind of uses the InjectedBundle, but also kind of doesn&apos;t (you have extra code in WebProcessSoup).  Why can&apos;t this all be done on top of the InjectedBundle mechanism and the WebKit2 API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798313</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-31 00:42:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I see this kind of uses the InjectedBundle, but also kind of doesn&apos;t (you have extra code in WebProcessSoup).  Why can&apos;t this all be done on top of the InjectedBundle mechanism and the WebKit2 API?

This is just a first patch, we will use the injected bundle C API to implement things like bug #79918 and bug #99695. But instead of allowing apps to install their own injected bundle we use a builtin injected bundle, like qt does as well, to implement a web extensions system. This also allows us to expose the GObject DOM bindings API we use in WebKit1. And as we do for the UI process we expose our custom high level GTK+ API for the web process instead of the C API one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798349</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-31 07:04:59 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I see this kind of uses the InjectedBundle, but also kind of doesn&apos;t (you have extra code in WebProcessSoup).  Why can&apos;t this all be done on top of the InjectedBundle mechanism and the WebKit2 API?
&gt; 
&gt; This is just a first patch, we will use the injected bundle C API to implement things like bug #79918 and bug #99695. But instead of allowing apps to install their own injected bundle we use a builtin injected bundle, like qt does as well, to implement a web extensions system. This also allows us to expose the GObject DOM bindings API we use in WebKit1. And as we do for the UI process we expose our custom high level GTK+ API for the web process instead of the C API one.

That doesn&apos;t exactly answer why you need to change WebProcessSoup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798350</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-31 07:10:46 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; I see this kind of uses the InjectedBundle, but also kind of doesn&apos;t (you have extra code in WebProcessSoup).  Why can&apos;t this all be done on top of the InjectedBundle mechanism and the WebKit2 API?
&gt; &gt; 
&gt; &gt; This is just a first patch, we will use the injected bundle C API to implement things like bug #79918 and bug #99695. But instead of allowing apps to install their own injected bundle we use a builtin injected bundle, like qt does as well, to implement a web extensions system. This also allows us to expose the GObject DOM bindings API we use in WebKit1. And as we do for the UI process we expose our custom high level GTK+ API for the web process instead of the C API one.
&gt; 
&gt; That doesn&apos;t exactly answer why you need to change WebProcessSoup?

Yes, to create the builtin injected bundle when the UI process hasn&apos;t passed a injected bundle path (typically WTR). This is what qt does too, see WebProcessQt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798354</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-31 07:18:15 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; I see this kind of uses the InjectedBundle, but also kind of doesn&apos;t (you have extra code in WebProcessSoup).  Why can&apos;t this all be done on top of the InjectedBundle mechanism and the WebKit2 API?
&gt; &gt; &gt; 
&gt; &gt; &gt; This is just a first patch, we will use the injected bundle C API to implement things like bug #79918 and bug #99695. But instead of allowing apps to install their own injected bundle we use a builtin injected bundle, like qt does as well, to implement a web extensions system. This also allows us to expose the GObject DOM bindings API we use in WebKit1. And as we do for the UI process we expose our custom high level GTK+ API for the web process instead of the C API one.
&gt; &gt; 
&gt; &gt; That doesn&apos;t exactly answer why you need to change WebProcessSoup?
&gt; 
&gt; Yes, to create the builtin injected bundle when the UI process hasn&apos;t passed a injected bundle path (typically WTR). This is what qt does too, see WebProcessQt.

Of course we could do the same installing our own injected bundle lib, and that was indeed my initial idea, but then I looked at the bultin bundle used by Qt and I thought it was a good idea that simplifies the whole thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798372</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-31 11:36:17 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; &gt; I see this kind of uses the InjectedBundle, but also kind of doesn&apos;t (you have extra code in WebProcessSoup).  Why can&apos;t this all be done on top of the InjectedBundle mechanism and the WebKit2 API?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This is just a first patch, we will use the injected bundle C API to implement things like bug #79918 and bug #99695. But instead of allowing apps to install their own injected bundle we use a builtin injected bundle, like qt does as well, to implement a web extensions system. This also allows us to expose the GObject DOM bindings API we use in WebKit1. And as we do for the UI process we expose our custom high level GTK+ API for the web process instead of the C API one.
&gt; &gt; &gt; 
&gt; &gt; &gt; That doesn&apos;t exactly answer why you need to change WebProcessSoup?
&gt; &gt; 
&gt; &gt; Yes, to create the builtin injected bundle when the UI process hasn&apos;t passed a injected bundle path (typically WTR). This is what qt does too, see WebProcessQt.
&gt; 
&gt; Of course we could do the same installing our own injected bundle lib, and that was indeed my initial idea, but then I looked at the bultin bundle used by Qt and I thought it was a good idea that simplifies the whole thing.

I&apos;m not clear on how it simplifies things, it certainly makes things harder on those of us working on core functionality by not using the abstractions we have in place.  Given that this can be done without modifying core code, please do it that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798646</commentid>
    <comment_count>12</comment_count>
      <attachid>181029</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-01-02 06:47:45 -0800</bug_when>
    <thetext>Created attachment 181029
New patch

Use an injected bundle lib instead of the builtin bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803242</commentid>
    <comment_count>13</comment_count>
      <attachid>181029</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-09 05:06:36 -0800</bug_when>
    <thetext>Comment on attachment 181029
New patch

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

Looks good to me, would be good to have a facility to let applications specify a private modules path so that we don&apos;t end up with a lot of modules that won&apos;t be used loaded unnecessarily, or with applications relying on others&apos; modules. Other than that the API looks great to me, too.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:117
&gt; + *
&gt; + * Get the web page of the given @page_id.
&gt; + *
&gt; + * Returns: the #WebKitWebPage for the given @page_id, or %NULL if the
&gt; + *    identifier doesn&apos;t correspond to an exsiting web page.

Be useful to state the WebExtension owns the object that is returned and annotate transfer none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804208</commentid>
    <comment_count>14</comment_count>
      <attachid>182101</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-01-10 02:49:58 -0800</bug_when>
    <thetext>Created attachment 182101
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804223</commentid>
    <comment_count>15</comment_count>
      <attachid>182101</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 03:29:13 -0800</bug_when>
    <thetext>Comment on attachment 182101
Patch for landing

Clearing flags on attachment: 182101

Committed r139305: &lt;http://trac.webkit.org/changeset/139305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804225</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 03:29:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180511</attachid>
            <date>2012-12-21 05:57:07 -0800</date>
            <delta_ts>2012-12-29 01:59:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-web-extensions.diff</filename>
            <type>text/plain</type>
            <size>58103</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmYmFmNGRjLi42MDMyNzhm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMTItMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBsb2FkaW5nIHdlYiBwcm9jZXNzIGV4dGVu
c2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTYzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZCB3ZWJraXQyX3dlYl9leHRlbnNpb25faF9hcGkuCisKIDIwMTIt
MTItMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzgzMzguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTNjMDRj
My4uYzUzNTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTEyLTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBB
ZGQgc3VwcG9ydCBmb3IgbG9hZGluZyB3ZWIgcHJvY2VzcyBleHRlbnNpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaW5p
dGlhbCBzdXBwb3J0IGZvciBXZWIgRXh0ZW5zaW9ucywgcGx1Z2lucyBsb2FkZWQKKyAgICAgICAg
YXQgcnVuIHRpbWUgYnkgdGhlIFdlYiBQcm9jZXNzLCB0byBhbGxvdyBhcHBsaWNhdGlvbnMgdG8g
YWNjZXNzIHRoZQorICAgICAgICBXZWIgUHJvY2Vzcy4gRm9yIG5vdyBpdCBwcm92aWRlcyBhIHdh
eSB0byBnZXQgdGhlCisgICAgICAgIFdlYktpdERPTURvY3VtZW50IGxvYWRlZCBpbiBhIFdlYktp
dFdlYlBhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogTGluayB0byBsaWJXZWJDb3Jl
RE9NLmxhLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMgdG8g
Y29tcGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQpOiBSZXR1cm4gdGhlIGlk
ZW50aWZpZXIgb2YgdGhlIHdlYgorICAgICAgICBwYWdlIGFzc29jaWF0ZWQgdG8gdGhlIHdlYiB2
aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOiBBZGQgbmV3
IGNoYXB0ZXIgZm9yCisgICAgICAgIHdlYiBleHRlbnNpb25zLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUuYW06IEFkZCBmaWxlcyB0
byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvbik6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKG1l
dGhvZENhbGxDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFs
aXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpXZWJLaXRUZXN0QnVzKToKKyAgICAg
ICAgKFdlYktpdFRlc3RCdXM6OnJ1bik6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjp+V2ViS2l0
VGVzdEJ1cyk6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpjb25uZWN0aW9uKToKKyAgICAgICAg
KG9uTmFtZUFwcGVhcmVkKToKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0VGVzdEJ1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9u
UGFnZUNyZWF0ZWQpOiBDcmVhdGUgYSBXZWJLaXRXZWJQYWdlIGZvciB0aGUKKyAgICAgICAgbmV3
bHkgY3JhdGVkIHBhZ2UgYW5kIGVtaXQgV2ViS2l0V2ViRXh0ZW5zaW9uOjpwYWdlLWNyZWF0ZWQg
c2lnbmFscy4KKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VEZXN0cm95KTogUmVtb3Zl
IHRoZSBwYWdlIGZyb20gdGhlIG1hcC4KKyAgICAgICAgKGRpZENyZWF0ZVBhZ2UpOiBDYWxsIHdl
YmtpdFdlYkV4dGVuc2lvblBhZ2VDcmVhdGVkKCkuCisgICAgICAgICh3aWxsRGVzdHJveVBhZ2Up
OiBDYWxsIHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VEZXN0cm95KCkuCisgICAgICAgICh3ZWJraXRX
ZWJFeHRlbnNpb25DcmVhdGUpOiBDcmVhdGUgYSBuZXcgV2ViS2l0V2ViRXh0ZW5zaW9uIGFuZAor
ICAgICAgICBpbml0aWFsaXplIHRoZSBpbmplY3RlZCBidW5kbGUgY2xpZW50LgorICAgICAgICAo
d2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UpOiBSZXR1cm4gdGhlIFdlYktpdFdlYlBhZ2Ug
Zm9yIHRoZQorICAgICAgICBnaXZlbiBwYWdlIGlkZW50aWZpZXIuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oOiBBZGRlZC4K
KyAgICAgICAgKF9XZWJLaXRXZWJFeHRlbnNpb24pOgorICAgICAgICAoX1dlYktpdFdlYkV4dGVu
c2lvbkNsYXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoX1dlYktpdFdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9jbGFz
c19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOiBDcmVhdGUgYSBuZXcgV2Vi
S2l0V2ViUGFnZS4KKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KTog
UmV0dXJuIHRoZSBXZWJLaXRET01Eb2N1bWVudAorICAgICAgICBsb2FkZWQgaW4gdGhlIFdlYktp
dFdlYlBhZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYlBhZ2UuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViUGFnZSk6CisgICAgICAg
IChfV2ViS2l0V2ViUGFnZUNsYXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkd0a0V4dGVu
c2lvbk1hbmFnZXI6OnNoYXJlZCk6IFJldHVybiB0aGUgZ2xvYmFsIHNoYXJlZAorICAgICAgICBp
bnN0YW5jZS4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6V2ViR3Rr
RXh0ZW5zaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkd0a0V4dGVuc2lvbk1hbmFn
ZXI6OmFwcGVuZE1vZHVsZURpcmVjdG9yaWVzKTogQWRkCisgICAgICAgIGRpcmVjdG9yaWVzIHRv
IHNjYW4gZm9yIG1vZHVsZXMuCisgICAgICAgIChXZWJLaXQ6OldlYkd0a0V4dGVuc2lvbk1hbmFn
ZXI6OnNjYW5Nb2R1bGVzKTogU2NhbiBmb3IgbW9kdWxlcy4KKyAgICAgICAgKFdlYktpdDo6V2Vi
R3RrRXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZSk6IExvYWQgYW5kIGluaXRpYWxpemUKKyAg
ICAgICAgbW9kdWxlcyBmb3VuZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRl
bnNpb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJHdGtFeHRlbnNpb25NYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogQ3JlYXRlIGEgYnVpbHRpbgorICAgICAgICBp
bmplY3RlZCBidW5kbGUgYW5kIGluaXRpYWxpemUgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciBpZiBu
bworICAgICAgICBpbmplY3RlZCBidW5kbGUgcGF0Y2ggaGFzIGJlZW4gcGFzc2VkIGZyb20gdGhl
IFVJIHByb2Nlc3MuCisKIDIwMTItMTItMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUERGUGx1Z2luOiBDYW5ub3QgZHJvcCBmaWxlcy9VUkxzIG9u
IFBERlBsdWdpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc0MmRmY2MuLmM2OWI5ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMi0yMSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1
cHBvcnQgZm9yIGxvYWRpbmcgd2ViIHByb2Nlc3MgZXh0ZW5zaW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHk6IEFkZCBleGNlcHRpb25zIGZvciBHVEsrIEFQSQorICAgICAgICBsb2NhdGVk
IGluIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay4KKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOgorICAgICAgICAoZ2V0X3dlYmtpdDJfb3B0aW9ucyk6IFNjYW4gYWxzbyBm
aWxlcyBpbgorICAgICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsgdG8gZ2Vu
ZXJhdGUgQVBJIGRvY3MuCisgICAgICAgIChnZXRfd2Via2l0Ml9vcHRpb25zLmluamVjdGVkX2J1
bmRsZV9zcmNfcGF0aCk6IEhlbHBlciBmdW5jdGlvbiB0bworICAgICAgICBidWlsZCBwYXRocyBp
biBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsuCisKIDIwMTItMTItMjEgIFplbm8g
QWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtNYWNdIHJ1bi1sYXVu
Y2hlciBjYW5ub3QgZmluZCBRdDVXZWJLaXRXaWRnZXRzLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZp
bGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBmNTFkMzlmLi42OWQyYzNmIDEwMDY0NAotLS0g
YS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtOTgsNiArOTgsNyBAQCB3
ZWJraXQyX3NvdXJjZXMgOj0KIHdlYmtpdDJfYnVpbHRfc291cmNlcyA6PQogd2Via2l0Mmd0a19o
X2FwaSA6PQogd2Via2l0Mmd0a19idWlsdF9zb3VyY2VzIDo9Cit3ZWJraXQyX3dlYl9leHRlbnNp
b25faF9hcGkgOj0KIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyA6PQogd2Via2l0Ml9w
bHVnaW5fcHJvY2Vzc19idWlsdF9zb3VyY2VzIDo9CiB3ZWJraXR0ZXN0cnVubmVyX2J1aWx0X3Nv
dXJjZXMgOj0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggZmE0MmM3OS4uYjU0ZDY3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KQEAgLTksNyArOSw4IEBAIG5vZGlzdF9saWJ3ZWJraXQyZ3RraW5jbHVk
ZV9IRUFERVJTID0gXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay93ZWJraXQy
L1dlYktpdFZlcnNpb24uaAogCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAotCSQo
d2Via2l0Mmd0a19oX2FwaSkKKwkkKHdlYmtpdDJndGtfaF9hcGkpIFwKKwkkKHdlYmtpdDJfd2Vi
X2V4dGVuc2lvbl9oX2FwaSkKIAogbm9kaXN0X2xpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VUkNFUyA9
IFwKIAkkKHdlYmtpdDJfYnVpbHRfc291cmNlcykgXApAQCAtNzIsNiArNzMsNyBAQCBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NIFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2d0ayBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXApAQCAtODgsMTcgKzkw
LDIxIEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlIFwKLSAgICAtSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvYXRrIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvYXRrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L2luY2x1ZGUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Vi
a2l0Mmd0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJr
aXQyZ3RrL2luY2x1ZGUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvd2Via2l0Mmd0ay93ZWJraXQyIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZSBcCiAJLUkkKHRvcF9idWlsZGRpcikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlL0phdmFTY3JpcHRDb3JlIFwKIAktSSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUvV2ViQ29yZSBcCiAJLUkk
KHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlL1dlYktpdDIgXAor
CS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbSBcCiAJLURMSUJFWEVD
RElSPVwiIiQobGliZXhlY2RpcikiXCIgXAorCS1ETElCRElSPVwiIiQobGliZGlyKSJcIiBcCisJ
LURCVUlMRElOR19XRUJLSVQgXAogCS1EV0VCS0lUMl9DT01QSUxBVElPTiBcCiAJJCh3ZWJjb3Jl
X2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCkBAIC0xNzMsNiArMTc5LDcg
QEAgZW5kaWYKIAogbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJBREQgKz0gXAogCWxpYmphdmFzY3Jp
cHRjb3JlZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05ALmxhIFwKKwlsaWJXZWJDb3JlRE9NLmxhIFwKIAlsaWJXZWJDb3JlR3RrLmxh
IFwKIAkkKENBSVJPX0xJQlMpIFwKIAkkKENMVVRURVJfTElCUykgXApAQCAtMjc3LDcgKzI4NCwx
MyBAQCAkKEdFTlNPVVJDRVNfV0VCS0lUMikvd2Via2l0Mmd0ay9pbmNsdWRlL3dlYmtpdDI6ICQo
bGlid2Via2l0Mmd0a2luY2x1ZGVfSEVBREVSUwogCSQoQU1fVl9HRU4pbWtkaXIgLXAgJChHRU5T
T1VSQ0VTX1dFQktJVDIpL3dlYmtpdDJndGsvaW5jbHVkZSBcCiAJJiYgbG4gLW4gLXMgLWYgJHtz
aGVsbCBwd2R9LyQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsgJEAKIAotQlVJTFRfU09VUkNF
UyArPSAkKEdFTlNPVVJDRVNfV0VCS0lUMikvd2Via2l0Mmd0ay9pbmNsdWRlL3dlYmtpdDIKKyQo
R0VOU09VUkNFU19XRUJLSVQyKS93ZWJraXQyZXh0ZW5zaW9uL2luY2x1ZGUvd2Via2l0MjogJChs
aWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTKQorCSQoQU1fVl9HRU4pbWtkaXIgLXAgJChHRU5T
T1VSQ0VTX1dFQktJVDIpL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZSBcCisJJiYgbG4gLW4gLXMg
LWYgJHtzaGVsbCBwd2R9LyQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrICRACisKK0JVSUxUX1NPVVJDRVMgKz0gXAorCSQoR0VOU09VUkNFU19XRUJLSVQyKS93ZWJr
aXQyZXh0ZW5zaW9uL2luY2x1ZGUvd2Via2l0MiBcCisJJChHRU5TT1VSQ0VTX1dFQktJVDIpL3dl
YmtpdDJndGsvaW5jbHVkZS93ZWJraXQyCiAKIHZwYXRoICUubWVzc2FnZXMuaW4gPSBcCiAJJChX
ZWJLaXQyKS9QbHVnaW5Qcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDE3MzRiYzguLmQwMTVjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMy
LDYgKzEzMiwxMSBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQyLmgKIAord2Via2l0Ml93ZWJfZXh0ZW5zaW9uX2hfYXBpICs9IFwK
KwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJF
eHRlbnNpb24uaCBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViUGFnZS5oIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisKIHdlYmtpdDJfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dGhlbnRpY2F0aW9u
TWFuYWdlck1lc3NhZ2VzLmggXApAQCAtOTg1LDYgKzk5MCw4IEBAIHdlYmtpdDJfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggXAorCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmggXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuY3Bw
IFwKQEAgLTEwMjcsNiArMTAzNCwxMyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRs
ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlU2NyaXB0V29ybGQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuaCBcCisJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAg
XAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJFeHRlbnNpb24uaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViUGFnZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBcCkBA
IC0xMTc5LDggKzExOTMsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmggXAotICAg
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxp
dHlPYmplY3QuaCBcCi0gICAgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9X
ZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuaCBcCisJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVj
dEF0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQYWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyYTgzMTI5Li43NGYxZDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtMTgyNSw2ICsxODI1LDIyIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVz
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1CiB9CiAKIC8q
KgorICogd2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkOgorICogQHdlYl92aWV3OiBhICNXZWJL
aXRXZWJWaWV3CisgKgorICogR2V0IHRoZSBpZGVudGlmaWVyIG9mIHRoZSAjV2ViS2l0V2ViUGFn
ZSBjb3JyZXNwb25kaW5nIHRvCisgKiB0aGUgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXR1cm5z
OiB0aGUgcGFnZSBJRCBvZiBAd2ViX3ZpZXcuCisgKi8KK2d1aW50NjQgd2Via2l0X3dlYl92aWV3
X2dldF9wYWdlX2lkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKworICAgIHJldHVybiBn
ZXRQYWdlKHdlYlZpZXcpLT5wYWdlSUQoKTsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3RpdGxlOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGZkYmM2
NjYuLjJkMjdmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmgKQEAgLTI0OCw2ICsyNDgsOSBAQCB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9s
b2FkaW5nICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJ
IGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9B
UEkgZ3VpbnQ2NAord2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRf
QVBJIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNmU5NzI4NC4uN2M2YzY4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sCkBAIC00Myw2ICs0MywxMiBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRTZWN1cml0eU1hbmFnZXIueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAorICA8Y2hhcHRlcj4KKyAg
ICA8dGl0bGU+V2ViIEV4dGVuc2lvbnM8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXRXZWJFeHRlbnNpb24ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFdlYlBhZ2UueG1sIi8+CisgIDwvY2hhcHRlcj4KKwogICA8aW5kZXggaWQ9ImluZGV4LWFs
bCI+CiAgICAgPHRpdGxlPkluZGV4PC90aXRsZT4KICAgPC9pbmRleD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0CmluZGV4IGNmM2E2MTYuLjMxNTY5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dApAQCAtOTUsNiArOTUsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjawogd2Via2l0X3dl
Yl92aWV3X2Nhbl9nb19mb3J3YXJkCiB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZAogd2Via2l0
X3dlYl92aWV3X2dldF90aXRsZQord2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkCiB3ZWJraXRf
d2ViX3ZpZXdfcmVsb2FkCiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZQogd2Vi
a2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZwpAQCAtOTI0LDMgKzkyNSw0MiBAQCBXRUJLSVRfU0VD
VVJJVFlfTUFOQUdFUl9HRVRfQ0xBU1MKIFdlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUKIHdl
YmtpdF9zZWN1cml0eV9tYW5hZ2VyX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgor
PEZJTEU+V2ViS2l0V2ViRXh0ZW5zaW9uPC9GSUxFPgorV2ViS2l0V2ViRXh0ZW5zaW9uCitXZWJL
aXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVuY3Rpb24KK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9wYWdlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MK
K1dFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04KK1dFQktJVF9XRUJfRVhURU5TSU9OCitXRUJLSVRf
SVNfV0VCX0VYVEVOU0lPTgorV0VCS0lUX1dFQl9FWFRFTlNJT05fQ0xBU1MKK1dFQktJVF9JU19X
RUJfRVhURU5TSU9OX0NMQVNTCitXRUJLSVRfV0VCX0VYVEVOU0lPTl9HRVRfQ0xBU1MKKworPFNV
QlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUKK3dlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0
V2ViUGFnZTwvRklMRT4KK1dlYktpdFdlYlBhZ2UKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0V2ViUGFnZUNsYXNzCitXRUJL
SVRfVFlQRV9XRUJfUEFHRQorV0VCS0lUX1dFQl9QQUdFCitXRUJLSVRfSVNfV0VCX1BBR0UKK1dF
QktJVF9XRUJfUEFHRV9DTEFTUworV0VCS0lUX0lTX1dFQl9QQUdFX0NMQVNTCitXRUJLSVRfV0VC
X1BBR0VfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJQYWdlUHJp
dmF0ZQord2Via2l0X3dlYl9wYWdlX2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5k
ZXggNGQ4ODQzZS4uZWIwZjMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjEsMyArMjEsNSBAQCB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9nZXRfdHlwZQogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRf
dHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9p
dGVtX2dldF90eXBlCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZQord2Via2l0X3dlYl9w
YWdlX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmluZGV4IGE4Zjk5NzYuLmViMDE3ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFt
CkBAIC0xMiw2ICsxMiw3IEBAIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL1dlYktpdDJBUElU
ZXN0cy9UZXN0UHJpbnRpbmcgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0UmVzb3Vy
Y2VzIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFNTTCBcCisJUHJvZ3JhbXMvV2Vi
S2l0MkFQSVRlc3RzL1Rlc3RXZWJFeHRlbnNpb25zIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVz
dHMvVGVzdFdlYktpdFZlcnNpb24gXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2Vi
S2l0RmF2aWNvbkRhdGFiYXNlIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktp
dEZpbmRDb250cm9sbGVyIFwKQEAgLTM0LDYgKzM1LDcgQEAgd2Via2l0Ml90ZXN0c19jcHBmbGFn
cyA9IFwKIAktRFdFQktJVF9TUkNfRElSPVwiJHtzaGVsbCBwd2R9LyR7c3JjZGlyfVwiIFwKIAkt
RFdFQktJVF9ERVJJVkVEX1NSQ19ESVI9XCIke3NoZWxsIHB3ZH0vJHt0b3BfYnVpbGRkaXJ9L0Rl
cml2ZWRTb3VyY2VzXCIgXAogCS1EV0VCS0lUX1RFU1RfUExVR0lOX0RJUj1cIiR7c2hlbGwgcHdk
fS8ke3RvcF9idWlsZGRpcn0vVGVzdE5ldHNjYXBlUGx1Z2luLy5saWJzXCIgXAorCS1EV0VCS0lU
X1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSPVwiJHtzaGVsbCBwd2R9LyR7dG9wX2J1aWxkZGlyfS9M
aWJyYXJpZXMvV2ViRXh0ZW5zaW9ucy8ubGlic1wiIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZs
YWdzKSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UgXApAQCAtNzAsNiArNzIsOCBAQCBub2luc3RfTFRMSUJSQVJJRVMgKz0gTGlicmFy
aWVzL2xpYldlYktpdDJBUElUZXN0Q29yZS5sYQogTGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0
Q29yZV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0U2VydmVyLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcCBcCkBAIC03OCw2
ICs4MiwzMCBAQCBMaWJyYXJpZXNfbGliV2ViS2l0MkFQSVRlc3RDb3JlX2xhX1NPVVJDRVMgPSBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaAog
TGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0Q29yZV9sYV9DUFBGTEFHUyA9ICQod2Via2l0Ml90
ZXN0c19jcHBmbGFncykKIAorbm9pbnN0X0xUTElCUkFSSUVTICs9IExpYnJhcmllcy9XZWJFeHRl
bnNpb25zL2xpYldlYkV4dGVuc2lvblRlc3QubGEKK0xpYnJhcmllc19XZWJFeHRlbnNpb25zX2xp
YldlYkV4dGVuc2lvblRlc3RfbGFfU09VUkNFUyA9IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcAorCitMaWJyYXJpZXNfV2ViRXh0
ZW5zaW9uc19saWJXZWJFeHRlbnNpb25UZXN0X2xhX0xERkxBR1MgPSBcCisJLXJwYXRoICR7c2hl
bGwgcHdkfS8kKHRvcF9idWlsZGRpcikvTGlicmFyaWVzL1dlYkV4dGVuc2lvbnMvLmxpYnMgXAor
CSQobm9fdW5kZWZpbmVkKSBcCisJLWF2b2lkLXZlcnNpb24gXAorCS1tb2R1bGUKKworTGlicmFy
aWVzX1dlYkV4dGVuc2lvbnNfbGliV2ViRXh0ZW5zaW9uVGVzdF9sYV9DUFBGTEFHUyA9IFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKKwktSSQodG9wX2J1aWxk
ZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZSBcCisJ
LURXRUJLSVQyX0NPTVBJTEFUSU9OIFwKKwkkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCisKK0xp
YnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lvblRlc3RfbGFfQ1hYRkxBR1MgPSBc
CisgICAgICAgICQoZ2xvYmFsX2N4eGZsYWdzKQorCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19s
aWJXZWJFeHRlbnNpb25UZXN0X2xhX0NGTEFHUyA9IFwKKyAgICAgICAgJChnbG9iYWxfY2ZsYWdz
KQorCisKIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL3Jlc291cmNlcy90ZXN0LWNlcnQucGVtIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9yZXNvdXJjZXMvdGVzdC1rZXkucGVtIFwKQEAgLTIxNCw0ICsyNDIs
MTAgQEAgUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RTU0xfQ1BQRkxBR1MgPSAkKHdlYmtp
dDJfdGVzdHNfY3BwZmxhZ3MpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFNTTF9MREFE
RCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0
U1NMX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfV2ViS2l0
MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX1NPVVJDRVMgPSBcCisgICAgICAgIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorUHJv
Z3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX0NQUEZMQUdTID0gJCh3ZWJr
aXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRl
bnNpb25zX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfV2ViS2l0MkFQ
SVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFn
cykKKwogZW5kaWYgIyBFTkFCTEVfV0VCS0lUMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MmI4YTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgor
I2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgorCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzOworCitzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0
ZW5zaW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxv
YWRIdG1sKCI8aHRtbD48aGVhZD48dGl0bGU+V2ViS2l0R1RLKyBXZWIgRXh0ZW5zaW9ucyBUZXN0
PC90aXRsZT48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBh
ZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eSgib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVz
dCIsCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIgLCAib3JnLndl
YmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsIHRlc3QtPm1fbWFpbkxvb3ApKTsKKyAgICBHUmVm
UHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYygK
KyAgICAgICAgcHJveHkuZ2V0KCksCisgICAgICAgICJHZXRUaXRsZSIsCisgICAgICAgIGdfdmFy
aWFudF9uZXcoIih0KSIsIHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZp
ZXcpKSwKKyAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgLTEsIDAsIDAp
KTsKKyAgICBnX2Fzc2VydChyZXN1bHQpOworCisgICAgY29uc3QgY2hhciogdGl0bGU7CisgICAg
Z192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIoJnMpIiwgJnRpdGxlKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIodGl0bGUsID09LCAiV2ViS2l0R1RLKyBXZWIgRXh0ZW5zaW9ucyBUZXN0Iik7Cit9
CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NldGVudigiV0VCS0lUX1dFQl9FWFRFTlNJ
T05TX1BBVEgiLCBXRUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIsIEZBTFNFKTsKKyAgICBi
dXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygpOworICAgIGlmICghYnVzLT5ydW4oKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRv
bS1kb2N1bWVudC10aXRsZSIsIHRlc3RXZWJFeHRlbnNpb24pOworfQorCit2b2lkIGFmdGVyQWxs
KCkKK3sKKyAgICBkZWxldGUgYnVzOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWY2OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAK
QEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKworc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KKyAgICAiPG5v
ZGU+IgorICAgICIgPGludGVyZmFjZSBuYW1lPSdvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25U
ZXN0Jz4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRUaXRsZSc+IgorICAgICIgICA8YXJnIHR5
cGU9J3QnIG5hbWU9J3BhZ2VJRCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAiICAgPGFyZyB0eXBl
PSdzJyBuYW1lPSd0aXRsZScgZGlyZWN0aW9uPSdvdXQnLz4iCisgICAgIiAgPC9tZXRob2Q+Igor
ICAgICIgPC9pbnRlcmZhY2U+IgorICAgICI8L25vZGU+IjsKKworc3RhdGljIHZvaWQgbWV0aG9k
Q2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqIHNlbmRlciwgY29uc3Qg
Y2hhciogb2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciog
bWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiog
aW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKGdfc3RyY21wMChpbnRl
cmZhY2VOYW1lLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0VGl0bGUiKSkgewor
ICAgICAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVy
cywgIih0KSIsICZwYWdlSUQpOworCisgICAgICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04odXNlckRhdGEpOworICAgICAgICBXZWJLaXRXZWJQ
YWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0ZW5zaW9uLCBwYWdl
SUQpOworICAgICAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52
b2NhdGlvbl9yZXR1cm5fZXJyb3IoCisgICAgICAgICAgICAgICAgaW52b2NhdGlvbiwgR19EQlVT
X0VSUk9SLCBHX0RCVVNfRVJST1JfSU5WQUxJRF9BUkdTLAorICAgICAgICAgICAgICAgICJJbnZh
bGlkIHBhZ2UgSUQ6ICUiR19HVUlOVDY0X0ZPUk1BVCwgcGFnZUlEKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9
IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBHT3duUHRy
PGNoYXI+IHRpdGxlKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KSk7Cisg
ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwg
Z192YXJpYW50X25ldygiKHMpIiwgdGl0bGUuZ2V0KCkpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBj
b25zdCBHREJ1c0ludGVyZmFjZVZUYWJsZSBpbnRlcmZhY2VWaXJ0dWFsVGFibGUgPSB7CisgICAg
bWV0aG9kQ2FsbENhbGxiYWNrLCAwLCAwCit9OworCitzdGF0aWMgdm9pZCBidXNBY3F1aXJlZENh
bGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwgZ3Bv
aW50ZXIgdXNlckRhdGEpCit7CisgICAgc3RhdGljIEdEQnVzTm9kZUluZm8gKmludHJvc3BlY3Rp
b25EYXRhID0gMDsKKyAgICBpZiAoIWludHJvc3BlY3Rpb25EYXRhKQorICAgICAgICBpbnRyb3Nw
ZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhN
TCwgMCk7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgdW5zaWduZWQgcmVnaXN0
cmF0aW9uSUQgPSBnX2RidXNfY29ubmVjdGlvbl9yZWdpc3Rlcl9vYmplY3QoCisgICAgICAgIGNv
bm5lY3Rpb24sCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisg
ICAgICAgIGludHJvc3BlY3Rpb25EYXRhLT5pbnRlcmZhY2VzWzBdLAorICAgICAgICAmaW50ZXJm
YWNlVmlydHVhbFRhYmxlLAorICAgICAgICBnX29iamVjdF9yZWYodXNlckRhdGEpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpLAorICAgICAgICAm
ZXJyb3Iub3V0UHRyKCkpOworICAgIGlmICghcmVnaXN0cmF0aW9uSUQpCisgICAgICAgIGdfd2Fy
bmluZygiRmFpbGVkIHRvIHJlZ2lzdGVyIG9iamVjdDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsK
K30KKworZXh0ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUoV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgZ19idXNfb3duX25hbWUoCisgICAg
ICAgIEdfQlVTX1RZUEVfU0VTU0lPTiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVu
c2lvblRlc3QiLAorICAgICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdTX05PTkUsCisgICAgICAg
IGJ1c0FjcXVpcmVkQ2FsbGJhY2ssCisgICAgICAgIDAsIDAsCisgICAgICAgIGdfb2JqZWN0X3Jl
ZihleHRlbnNpb24pLAorICAgICAgICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmpl
Y3RfdW5yZWYpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZWY4NDg0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCisKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK1dlYktpdFRlc3RCdXM6
OldlYktpdFRlc3RCdXMoKQorICAgIDogbV9waWQoLTEpCit7Cit9CisKK2Jvb2wgV2ViS2l0VGVz
dEJ1czo6cnVuKCkKK3sKKyAgICAvLyBGSVhNRTogVXNlIEdUZXN0REJ1cyB3aGVuIHdlIGJ1bXAg
Z2xpYiB0byAyLjM0LgorICAgIEdPd25QdHI8Y2hhcj4gZGJ1c0xhdW5jaChnX2ZpbmRfcHJvZ3Jh
bV9pbl9wYXRoKCJkYnVzLWxhdW5jaCIpKTsKKyAgICBpZiAoIWRidXNMYXVuY2gpIHsKKyAgICAg
ICAgZ193YXJuaW5nKCJFcnJvciBzdGFydGluZyBEQlVTIGRhZW1vbjogZGJ1cy1sYXVuY2ggbm90
IGZvdW5kIGluIHBhdGgiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdP
d25QdHI8Y2hhcj4gb3V0cHV0OworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBpZiAo
IWdfc3Bhd25fY29tbWFuZF9saW5lX3N5bmMoZGJ1c0xhdW5jaC5nZXQoKSwgJm91dHB1dC5vdXRQ
dHIoKSwgMCwgMCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBnX3dhcm5pbmcoIkVycm9y
IHN0YXJ0aW5nIERCVVMgZGFlbW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyBvdXRwdXRTdHJpbmcgPSBTdHJpbmc6OmZy
b21VVEY4KG91dHB1dC5nZXQoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbGluZXM7CisgICAgb3V0
cHV0U3RyaW5nLnNwbGl0KFVDaGFyKCdcbicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxz
ZSwgbGluZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgY2hhcioqIGtleVZhbHVlID0gZ19zdHJzcGxpdChsaW5lc1tpXS51dGY4KCku
ZGF0YSgpLCAiPSIsIDIpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGdfc3Rydl9sZW5ndGgo
a2V5VmFsdWUpLCA9PSwgMik7CisgICAgICAgIGlmICghZ19zdHJjbXAwKGtleVZhbHVlWzBdLCAi
REJVU19TRVNTSU9OX0JVU19BRERSRVNTIikpIHsKKyAgICAgICAgICAgIG1fYWRkcmVzcyA9IGtl
eVZhbHVlWzFdOworICAgICAgICAgICAgZ19zZXRlbnYoIkRCVVNfU0VTU0lPTl9CVVNfQUREUkVT
UyIsIGtleVZhbHVlWzFdLCBUUlVFKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKGtl
eVZhbHVlWzBdLCAiREJVU19TRVNTSU9OX0JVU19QSUQiKSkKKyAgICAgICAgICAgIG1fcGlkID0g
Z19hc2NpaV9zdHJ0b2xsKGtleVZhbHVlWzFdLCAwLCAxMCk7CisgICAgICAgIGdfc3RyZnJlZXYo
a2V5VmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBtX3BpZCA+IDA7Cit9CisKK1dlYktpdFRl
c3RCdXM6On5XZWJLaXRUZXN0QnVzKCkKK3sKKyAgICBnX3Vuc2V0ZW52KCJEQlVTX1NFU1NJT05f
QlVTX0FERFJFU1MiKTsKKworICAgIGlmIChtX3BpZCAhPSAtMSkKKyAgICAgICAga2lsbChtX3Bp
ZCwgU0lHVEVSTSk7Cit9CisKK0dEQnVzQ29ubmVjdGlvbiogV2ViS2l0VGVzdEJ1czo6Y29ubmVj
dGlvbigpCit7CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi5nZXQoKTsKKworICAgIGdfYXNzZXJ0KCFtX2FkZHJlc3MuaXNOdWxsKCkpOworICAgIG1f
Y29ubmVjdGlvbiA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJlc3Nf
c3luYyhtX2FkZHJlc3MuZGF0YSgpLAorICAgICAgICBzdGF0aWNfY2FzdDxHREJ1c0Nvbm5lY3Rp
b25GbGFncz4oR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5UIHwg
R19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfTUVTU0FHRV9CVVNfQ09OTkVDVElPTiksCisgICAgICAg
IDAsIDAsIDApKTsKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCitzdGF0aWMg
dm9pZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGlj
X2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpKTsKK30KKworR0RCdXNQcm94eSogV2ViS2l0VGVz
dEJ1czo6Y3JlYXRlUHJveHkoY29uc3QgY2hhciogc2VydmljZU5hbWUsIGNvbnN0IGNoYXIqIG9i
amVjdFBhdGgsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIEdNYWluTG9vcCogbWFpbkxvb3Ap
Cit7CisgICAgdW5zaWduZWQgd2F0Y2hlcklEID0gZ19idXNfd2F0Y2hfbmFtZV9vbl9jb25uZWN0
aW9uKGNvbm5lY3Rpb24oKSwgc2VydmljZU5hbWUsIEdfQlVTX05BTUVfV0FUQ0hFUl9GTEFHU19O
T05FLCBvbk5hbWVBcHBlYXJlZCwgMCwgbWFpbkxvb3AsIDApOworICAgIGdfbWFpbl9sb29wX3J1
bihtYWluTG9vcCk7CisgICAgZ19idXNfdW53YXRjaF9uYW1lKHdhdGNoZXJJRCk7CisKKyAgICBH
REJ1c1Byb3h5KiBwcm94eSA9IGdfZGJ1c19wcm94eV9uZXdfc3luYygKKyAgICAgICAgY29ubmVj
dGlvbigpLAorICAgICAgICBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0FVVE9fU1RBUlQsCisg
ICAgICAgIDAsIC8vIEdEQnVzSW50ZXJmYWNlSW5mbworICAgICAgICBzZXJ2aWNlTmFtZSwKKyAg
ICAgICAgb2JqZWN0UGF0aCwKKyAgICAgICAgaW50ZXJmYWNlTmFtZSwKKyAgICAgICAgMCwgLy8g
R0NhbmNlbGxhYmxlCisgICAgICAgIDApOworICAgIGdfYXNzZXJ0KHByb3h5KTsKKyAgICByZXR1
cm4gcHJveHk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWQ5ZDliYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0VGVzdEJ1c19oCisjZGVm
aW5lIFdlYktpdFRlc3RCdXNfaAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK2Ns
YXNzIFdlYktpdFRlc3RCdXMgeworcHVibGljOgorICAgIFdlYktpdFRlc3RCdXMoKTsKKyAgICB2
aXJ0dWFsIH5XZWJLaXRUZXN0QnVzKCk7CisKKyAgICBib29sIHJ1bigpOworICAgIEdEQnVzUHJv
eHkqIGNyZWF0ZVByb3h5KGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lLCBjb25zdCBjaGFyKiBvYmpl
Y3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBHTWFpbkxvb3AqKTsKKworcHJpdmF0
ZToKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKTsKKworICAgIHBpZF90IG1fcGlk
OworICAgIENTdHJpbmcgbV9hZGRyZXNzOworICAgIEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247Cit9OworCisjZW5kaWYgLy8gV2ViS2l0VGVzdEJ1c19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRkYWRhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApA
QCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgorCisj
aW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCisj
aW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsKKyAgICBQQUdFX0NSRUFURUQsCisKKyAgICBMQVNU
X1NJR05BTAorfTsKKwordHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2UqLCBHUmVmUHRyPFdlYktpdFdl
YlBhZ2U+ID4gV2ViUGFnZU1hcDsKKworc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRl
IHsKKyAgICBXZWJQYWdlTWFwIHBhZ2VzOworfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFT
VF9TSUdOQUxdID0geyAwLCB9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViRXh0ZW5z
aW9uLCB3ZWJraXRfd2ViX2V4dGVuc2lvbiwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3NfaW5pdChXZWJLaXRXZWJFeHRlbnNpb25DbGFzcyog
a2xhc3MpCit7CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViRXh0ZW5zaW9uOjpwYWdlLWNyZWF0
ZWQ6CisgICAgICogQGV4dGVuc2lvbjogdGhlICNXZWJLaXRXZWJFeHRlbnNpb24gb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBh
Z2UgY3JlYXRlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEg
bmV3ICNXZWJLaXRXZWJQYWdlIGlzIGNyZWF0ZWQgaW4KKyAgICAgKiB0aGUgV2ViIFByb2Nlc3Mu
CisgICAgICovCisgICAgc2lnbmFsc1tQQUdFX0NSRUFURURdID0gZ19zaWduYWxfbmV3KAorICAg
ICAgICAicGFnZS1jcmVhdGVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAor
ICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgZ19j
Y2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKKyAgICAgICAgR19UWVBFX05PTkUsIDEsCisg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9QQUdFKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2Vi
RXh0ZW5zaW9uUGFnZUNyZWF0ZWQoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYlBh
Z2UqIHBhZ2UpCit7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJQYWdlPiB3ZWJQYWdlID0gYWRvcHRH
UmVmKHdlYmtpdFdlYlBhZ2VDcmVhdGUocGFnZSkpOworICAgIGV4dGVuc2lvbi0+cHJpdi0+cGFn
ZXMuYWRkKHBhZ2UsIHdlYlBhZ2UpOworICAgIGdfc2lnbmFsX2VtaXQoZXh0ZW5zaW9uLCBzaWdu
YWxzW1BBR0VfQ1JFQVRFRF0sIDAsIHdlYlBhZ2UuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJveShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViUGFnZSogcGFnZSkKK3sKKyAgICBleHRlbnNpb24tPnByaXYtPnBhZ2VzLnJlbW92ZShw
YWdlKTsKK30KKworc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdl
YmtpdFdlYkV4dGVuc2lvblBhZ2VDcmVhdGVkKFdFQktJVF9XRUJfRVhURU5TSU9OKGNsaWVudElu
Zm8pLCB0b0ltcGwocGFnZSkpOworfQorCitzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICB3ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJveShXRUJLSVRfV0VCX0VY
VEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKHBhZ2UpKTsKK30KKworV2ViS2l0V2ViRXh0ZW5z
aW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKK3sK
KyAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9O
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7CisKKyAgICBX
S0J1bmRsZUNsaWVudCB3a0J1bmRsZUNsaWVudCA9IHsKKyAgICAgICAga1dLQnVuZGxlQ2xpZW50
Q3VycmVudFZlcnNpb24sCisgICAgICAgIGV4dGVuc2lvbiwgLy8gY2xpZW50SW5mbworICAgICAg
ICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCisgICAgICAgIDAsIC8v
IGRpZEluaXRpYWxpemVQYWdlR3JvdXAKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZU1lc3NhZ2UK
KyAgICAgICAgMCAvLyBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZQorICAgIH07CisgICAgV0tCdW5k
bGVTZXRDbGllbnQodG9BUEkoYnVuZGxlKSwgJndrQnVuZGxlQ2xpZW50KTsKKworICAgIHJldHVy
biBleHRlbnNpb247Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2U6
CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBwYWdlX2lkOiB0aGUg
aWRlbnRpZmllciBvZiB0aGUgI1dlYktpdFdlYlBhZ2UgdG8gZ2V0CisgKgorICogR2V0IHRoZSB3
ZWIgcGFnZSBvZiB0aGUgZ2l2ZW4gQHBhZ2VfaWQuCisgKgorICogUmV0dXJuczogdGhlICNXZWJL
aXRXZWJQYWdlIGZvciB0aGUgZ2l2ZW4gQHBhZ2VfaWQsIG9yICVOVUxMIGlmIHRoZQorICogICAg
aWRlbnRpZmllciBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYW4gZXhzaXRpbmcgd2ViIHBhZ2UuCisg
Ki8KK1dlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdl
YkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBndWludDY0IHBhZ2VJRCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCAwKTsKKworICAg
IFdlYktpdFdlYkV4dGVuc2lvblByaXZhdGUqIHByaXYgPSBleHRlbnNpb24tPnByaXY7CisgICAg
V2ViUGFnZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJpdi0+cGFnZXMuZW5kKCk7CisgICAg
Zm9yIChXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHByaXYtPnBhZ2VzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaWYgKGl0LT5rZXktPnBhZ2VJRCgpID09IHBhZ2VJ
RCkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICByZXR1cm4gMDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E0Y2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVu
c2lvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pICYm
ICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgor
CisjaWZuZGVmIFdlYktpdFdlYkV4dGVuc2lvbl9oCisjZGVmaW5lIFdlYktpdFdlYkV4dGVuc2lv
bl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiAgICAgICAgICAgICh3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VYVEVO
U0lPTihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBXZWJLaXRXZWJFeHRlbnNpb24pKQorI2RlZmluZSBX
RUJLSVRfSVNfV0VCX0VYVEVOU0lPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQl9FWFRFTlNJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgV2ViS2l0V2ViRXh0ZW5zaW9uQ2xh
c3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTl9DTEFTUyhrbGFzcykgKEdfVFlQ
RV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OKSkK
KyNkZWZpbmUgV0VCS0lUX1dFQl9FWFRFTlNJT05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgV2ViS2l0
V2ViRXh0ZW5zaW9uQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9u
ICAgICAgICBXZWJLaXRXZWJFeHRlbnNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRXh0
ZW5zaW9uQ2xhc3MgICBXZWJLaXRXZWJFeHRlbnNpb25DbGFzczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlIFdlYktpdFdlYkV4dGVuc2lvblByaXZhdGU7CisKKy8q
KgorICogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uOgorICogQGV4dGVuc2lv
bjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCisgKgorICogVHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1
bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZQorICogdGhlIHdlYiBleHRl
bnNpb24gd2hlbiB0aGUgd2ViIHByb2Nlc3Mgc3RhcnRzLgorICovCit0eXBlZGVmIHZvaWQgKCog
V2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uKSAoV2ViS2l0V2ViRXh0ZW5zaW9u
ICpleHRlbnNpb24pOworCitzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvbiB7CisgICAgR09iamVj
dCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlICpwcml2OworfTsKKwor
c3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKK3dlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9wYWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOwor
CitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZmN2QxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uUHJp
dmF0ZV9oCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIldlYktpdFdl
YkV4dGVuc2lvbi5oIgorCitXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNy
ZWF0ZShXZWJLaXQ6OkluamVjdGVkQnVuZGxlKik7CisKKyNlbmRpZiAvLyBXZWJLaXRXZWJFeHRl
bnNpb25Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDIxM2M2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YlBhZ2UuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgi
CisKKyNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworc3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CisgICAgV2Vi
UGFnZSogd2ViUGFnZTsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3
ZWJraXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
cGFnZV9jbGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCit7Cit9CisKK1dlYktp
dFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBX
ZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfUEFHRSwgTlVMTCkpOworICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdl
OworICAgIHJldHVybiBwYWdlOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50OgorICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQYWdlCisgKgorICogR2V0IHRo
ZSAjV2ViS2l0RE9NRG9jdW1lbnQgY3VycmVudGx5IGxvYWRlZCBpbiBAd2ViX3BhZ2UKKyAqCisg
KiBSZXR1cm5zOiB0aGUgI1dlYktpdERPTURvY3VtZW50IGN1cnJlbnRseSBsb2FkZWQsIG9yICVO
VUxMCisgKiAgICBpZiBubyBkb2N1bWVudCBpcyBjdXJyZW50bHkgbG9hZGVkLgorICovCitXZWJL
aXRET01Eb2N1bWVudCogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQoV2ViS2l0V2Vi
UGFnZSogd2ViUGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1BBR0Uod2ViUGFnZSksIDApOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IHdlYlBhZ2UtPnBy
aXYtPndlYlBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiBraXQoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQ1ZTJiZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChf
X1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4g
Y2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFdlYlBh
Z2VfaAorI2RlZmluZSBXZWJLaXRXZWJQYWdlX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0ZG9t
L3dlYmtpdGRvbS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VC
X1BBR0UgICAgICAgICAgICAod2Via2l0X3dlYl9wYWdlX2dldF90eXBlKCkpCisjZGVmaW5lIFdF
QktJVF9XRUJfUEFHRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZSkpCisjZGVmaW5lIFdF
QktJVF9JU19XRUJfUEFHRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUEFHRSkpCisjZGVmaW5lIFdFQktJVF9XRUJfUEFHRV9D
TEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRf
VFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
Ql9QQUdFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX1dFQl9QQUdFKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9QQUdFX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9Q
QUdFLCBXZWJLaXRXZWJQYWdlQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUGFn
ZSAgICAgICAgV2ViS2l0V2ViUGFnZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlQ2xh
c3MgICBXZWJLaXRXZWJQYWdlQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUGFnZVBy
aXZhdGUgV2ViS2l0V2ViUGFnZVByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViUGFnZSB7Cisg
ICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJQYWdlUHJpdmF0ZSAqcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViUGFnZUNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9wYWdlX2dldF90eXBl
ICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdERPTURvY3VtZW50ICoKK3dlYmtp
dF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDNkYTMwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYlBhZ2VQcml2
YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViUGFnZVByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0
V2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworV2ViS2l0V2ViUGFnZSogd2Via2l0
V2ViUGFnZUNyZWF0ZShXZWJLaXQ6OldlYlBhZ2UqKTsKKworI2VuZGlmIC8vIFdlYktpdFdlYlBh
Z2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzNmM4NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93
ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93
ZWJraXQtd2ViLWV4dGVuc2lvbi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlm
CisKKyNpZm5kZWYgX19XZWJLaXRXZWJFeHRlbnNpb25faAorI2RlZmluZSBfX1dlYktpdFdlYkV4
dGVuc2lvbl9oCisKKyNkZWZpbmUgX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCisK
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkV4dGVuc2lvbi5oPgorI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0V2ViUGFnZS5oPgorCisjdW5kZWYgX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lO
U0lERV9fCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9n
dGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4wNzA5NjBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw4NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0
V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkd0a0V4
dGVuc2lvbk1hbmFnZXImIFdlYkd0a0V4dGVuc2lvbk1hbmFnZXI6OnNoYXJlZCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChXZWJHdGtFeHRlbnNpb25NYW5hZ2VyLCBleHRlbnNpb25NYW5h
Z2VyLCAoKSk7CisgICAgcmV0dXJuIGV4dGVuc2lvbk1hbmFnZXI7Cit9CisKK1dlYkd0a0V4dGVu
c2lvbk1hbmFnZXI6OldlYkd0a0V4dGVuc2lvbk1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYkd0
a0V4dGVuc2lvbk1hbmFnZXI6OmFwcGVuZE1vZHVsZURpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+
JiBkaXJlY3RvcmllcykKK3sKKyAgICBTdHJpbmcgZXh0ZW5zaW9uUGF0aHMoZ2V0ZW52KCJXRUJL
SVRfV0VCX0VYVEVOU0lPTlNfUEFUSCIpKTsKKyAgICBpZiAoIWV4dGVuc2lvblBhdGhzLmlzRW1w
dHkoKSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICAgICAgZXh0ZW5zaW9u
UGF0aHMuc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHBh
dGhzKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHBhdGhzKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogZXh0ZW5zaW9uRGVmYXVsdERpcmVjdG9yeSA9IExJQkRJUiIiR19E
SVJfU0VQQVJBVE9SX1Mid2Via2l0Z3RrLSJXRUJLSVRHVEtfQVBJX1ZFUlNJT05fU1RSSU5HIiJH
X0RJUl9TRVBBUkFUT1JfUyJ3ZWItZXh0ZW5zaW9ucyJHX0RJUl9TRVBBUkFUT1JfUzsKKyAgICBk
aXJlY3Rvcmllcy5hcHBlbmQoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhleHRlbnNpb25EZWZh
dWx0RGlyZWN0b3J5KSk7Cit9CisKK3ZvaWQgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1v
ZHVsZXMoVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gbW9k
dWxlRGlyZWN0b3JpZXM7CisgICAgYXBwZW5kTW9kdWxlRGlyZWN0b3JpZXMobW9kdWxlRGlyZWN0
b3JpZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlRGlyZWN0b3JpZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3Jl
OjpsaXN0RGlyZWN0b3J5KG1vZHVsZURpcmVjdG9yaWVzW2ldLCBTdHJpbmcoIiouc28iKSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2opIHsK
KyAgICAgICAgICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2pdKSkKKyAg
ICAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tqXSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZShJbmpl
Y3RlZEJ1bmRsZSogYnVuZGxlKQoreworICAgIG1fZXh0ZW5zaW9uID0gYWRvcHRHUmVmKHdlYmtp
dFdlYkV4dGVuc2lvbkNyZWF0ZShidW5kbGUpKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVs
ZVBhdGhzOworICAgIHNjYW5Nb2R1bGVzKG1vZHVsZVBhdGhzKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE93blB0cjxNb2R1
bGU+IG1vZHVsZSA9IGFkb3B0UHRyKG5ldyBNb2R1bGUobW9kdWxlUGF0aHNbaV0pKTsKKyAgICAg
ICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IFdlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbiBpbml0aWFsaXplRnVuY3Rpb24g
PQorICAgICAgICAgICAgbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8V2ViS2l0V2ViRXh0ZW5zaW9u
SW5pdGlhbGl6ZUZ1bmN0aW9uPigid2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZSIpOwor
ICAgICAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIC8vIEZJWE1FOiBjaGVjayB3ZSBkb24ndCBsb2FkIHRoZSBzYW1lIG1vZHVsZSB0
d2ljZSBmcm9tIGRpZmZlcmVudCBwYXRocy4KKyAgICAgICAgbV9leHRlbnNpb25Nb2R1bGVzLmFw
cGVuZChtb2R1bGUubGVha1B0cigpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKG1fZXh0
ZW5zaW9uLmdldCgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NDRlNDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25N
YW5hZ2VyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIFdlYkd0a0V4dGVuc2lvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyX2gKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVk
ZSAiTW9kdWxlLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvbiBXZWJLaXRXZWJFeHRlbnNpb247CisKK25hbWVzcGFj
ZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViR3RrRXh0ZW5zaW9uTWFuYWdlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR3Rr
RXh0ZW5zaW9uTWFuYWdlcik7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViR3RrRXh0ZW5zaW9u
TWFuYWdlciYgc2hhcmVkKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoSW5qZWN0ZWRCdW5kbGUq
KTsKKworcHJpdmF0ZToKKyAgICBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyKCk7CisKKyAgICB2b2lk
IGFwcGVuZE1vZHVsZURpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBzY2Fu
TW9kdWxlcyhWZWN0b3I8U3RyaW5nPiYpOworCisgICAgVmVjdG9yPE1vZHVsZSo+IG1fZXh0ZW5z
aW9uTW9kdWxlczsKKyAgICBHUmVmUHRyPFdlYktpdFdlYkV4dGVuc2lvbj4gbV9leHRlbnNpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkd0a0V4dGVuc2lv
bk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzU291cC5jcHAKaW5kZXggZjFjYzk2Yi4uNDU0ODU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC00Miw2ICs0MiwxMCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSAiV2ViR3RrRXh0ZW5z
aW9uTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdWlu
dDY0X3QgZ2V0Q2FjaGVEaXNrRnJlZVNpemUoU291cENhY2hlKiBjYWNoZSkKQEAgLTE3OSw2ICsx
ODMsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICBzZXRJZ25vcmVUTFNFcnJvcnMo
cGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMpOwogCiAgICAgV2ViQ29yZTo6YWRkTGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlcih0aGlzLCBsYW5ndWFnZUNoYW5nZWQpOworCisjaWYgUExBVEZPUk0oR1RL
KQorICAgIGlmIChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgbV9pbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoU3RyaW5nKCkp
OworICAgICAgICBtX2luamVjdGVkQnVuZGxlLT5zZXRTYW5kYm94RXh0ZW5zaW9uKFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhh
bmRsZSkpOworICAgICAgICBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpzaGFyZWQoKS5pbml0aWFs
aXplKG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCkpOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQppbmRleCA1YWUyOTBjLi4zZWY2N2FjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5CkBAIC0xODAsNyArMTgwLDggQEAgX1BBVEhfUlVMRVNfU1BFQ0lG
SUVSID0gWwogCiAgICAgKFsjIFRoZSBHVEsrIEFQSSB1c2UgdXBwZXIgY2FzZSwgdW5kZXJzY29y
ZSBzZXBhcmF0ZWQsIHdvcmRzIGluCiAgICAgICAjIGNlcnRhaW4gdHlwZXMgb2YgZW51bXMgKGUu
Zy4gc2lnbmFscywgcHJvcGVydGllcykuCi0gICAgICAiU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsiXSwKKyAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ayIsCisg
ICAgICAiU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIl0s
CiAgICAgIFsiLXJlYWRhYmlsaXR5L2VudW1fY2FzaW5nIl0pLAogCiAgICAgKFsjIEhlYWRlciBm
aWxlcyBpbiBGb3J3YXJkaW5nSGVhZGVycyBoYXZlIG5vIGhlYWRlciBndWFyZHMgb3IKQEAgLTMy
OSw3ICszMzAsOSBAQCBfU0tJUFBFRF9GSUxFU19XSVRIX1dBUk5JTkcgPSBbCiAgICAgIyBleGNl
cHQgdGhvc2UgZW5kaW5nIGluIC4uLlByaXZhdGUuaCBhcmUgR1RLKyBBUEkgaGVhZGVycywKICAg
ICAjIHdoaWNoIGRpZmZlciBncmVhdGx5IGZyb20gV2ViS2l0IGNvZGluZyBzdHlsZS4KICAgICBy
ZS5jb21waWxlKHInU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0KD8hLipQ
cml2YXRlXC5oKS4qXC5oJCcpLAotICAgICdTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgnXQorICAgIHJlLmNvbXBpbGUocidTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0KD8hLipQcml2YXRlXC5oKS4qXC5oJCcpLAor
ICAgICdTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgnLAorICAgICdT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdl
Yi1leHRlbnNpb24uaCddCiAKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBtb3JlIGNvbW1vbiBv
ciBvYnZpb3VzLgogIwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBiL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggZmQ4NDg3OS4uMzQ1MmViNCAxMDA3NTUKLS0t
IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3Rr
ZG9jCkBAIC03Nyw2ICs3Nyw4IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAgICAg
IHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0Micp
ICsgYXJncykpCiAgICAgZGVmIHNyY19wYXRoKCphcmdzKToKICAgICAgICAgcmV0dXJuIGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQ
SScsICdndGsnKSArIGFyZ3MpKQorICAgIGRlZiBpbmplY3RlZF9idW5kbGVfc3JjX3BhdGgoKmFy
Z3MpOgorICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAn
V2ViS2l0MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKSAr
IGFyZ3MpKQogCiAgICAgeHJlZl9kZXBzID0gZ2V0X2NvbW1vbl94cmVmX2RlcHMoKS5jb3B5KCkK
ICAgICB4cmVmX2RlcHMudXBkYXRlKHsKQEAgLTg4LDcgKzkwLDcgQEAgZGVmIGdldF93ZWJraXQy
X29wdGlvbnMoKToKICAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXQyZ3RrJywKICAgICAg
ICAgJ2RvY19kaXInIDogc3JjX3BhdGgoJ2RvY3MnKSwKICAgICAgICAgJ291dHB1dF9kaXInIDog
Y29tbW9uLmJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Mmd0aycpLAotICAgICAg
ICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGRlcml2ZWRfc291cmNlc19wYXRoKCd3ZWJr
aXQyZ3RrJywgJ3dlYmtpdDInKV0sCisgICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgo
KSwgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnLCAnd2Via2l0MicpLCBpbmplY3Rl
ZF9idW5kbGVfc3JjX3BhdGgoKV0sCiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVk
X3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycsICdpbmNsdWRlJykgKyBcCiAgICAgICAgICAgICAg
ICAgICAgJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycpICsgXAogICAg
ICAgICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ2luY2x1ZGUnKSAr
IFwKQEAgLTk2LDYgKzk4LDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICAgICAg
ICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCksCiAgICAgICAgICdjcm9zc19yZWZlcmVuY2Vf
ZGVwcycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpLAogICAgICAgICAnaWdu
b3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2IoaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRoKCcq
UHJpdmF0ZS5oJykpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNf
cGF0aCgnKkNsaWVudConKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9i
KHNyY19wYXRoKCdXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUuKicpKSArIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1dlYktpdDJHdGtBdXRoZW50aWNh
dGlvbkRpYWxvZy4qJykpICsgXAo=
</data>
<flag name="commit-queue"
          id="197816"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180924</attachid>
            <date>2012-12-29 01:59:36 -0800</date>
            <delta_ts>2013-01-02 06:47:45 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-web-extensions2.diff</filename>
            <type>text/plain</type>
            <size>60588</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlYWM1MmU1Li5kZmEyMGQw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMTItMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBsb2FkaW5nIHdlYiBwcm9jZXNzIGV4dGVu
c2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTYzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZCB3ZWJraXQyX3dlYl9leHRlbnNpb25faF9hcGkuCisKIDIwMTIt
MTItMjcgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwuY29tPgog
CiAgICAgICAgIFtFRkxdW1dlYkdMXSBJbXBsZW1lbnQgRUdMIHN1cHBvcnQgd2l0aCBHTFguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYTA5ZTFkNi4uZWFiMDBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBA
CisyMDEyLTEyLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgbG9hZGluZyB3ZWIgcHJvY2VzcyBleHRl
bnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU2MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgaW5pdGlhbCBzdXBwb3J0IGZvciBXZWIgRXh0ZW5zaW9ucywgcGx1Z2lu
cyBsb2FkZWQKKyAgICAgICAgYXQgcnVuIHRpbWUgYnkgdGhlIFdlYiBQcm9jZXNzLCB0byBhbGxv
dyBhcHBsaWNhdGlvbnMgdG8gYWNjZXNzIHRoZQorICAgICAgICBXZWIgUHJvY2Vzcy4gRm9yIG5v
dyBpdCBwcm92aWRlcyBhIHdheSB0byBnZXQgdGhlCisgICAgICAgIFdlYktpdERPTURvY3VtZW50
IGxvYWRlZCBpbiBhIFdlYktpdFdlYlBhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTog
TGluayB0byBsaWJXZWJDb3JlRE9NLmxhLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2Vf
aWQpOiBSZXR1cm4gdGhlIGlkZW50aWZpZXIgb2YgdGhlIHdlYgorICAgICAgICBwYWdlIGFzc29j
aWF0ZWQgdG8gdGhlIHdlYiB2aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sOiBBZGQgbmV3IGNoYXB0ZXIgZm9yCisgICAgICAgIHdlYiBleHRlbnNpb25zLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGsudHlwZXM6IEFkZCBuZXcgdHlwZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvR05VbWFrZWZpbGUuYW06IEFkZCBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0ZW5zaW9ucy5jcHA6IEFkZGVkLgor
ICAgICAgICAodGVzdFdlYkV4dGVuc2lvbik6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAg
ICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVu
c2lvblRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKG1ldGhvZENhbGxDYWxsYmFjayk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXRUZXN0QnVzOjpXZWJLaXRUZXN0QnVzKToKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6OnJ1bik6
CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjp+V2ViS2l0VGVzdEJ1cyk6CisgICAgICAgIChXZWJL
aXRUZXN0QnVzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKG9uTmFtZUFwcGVhcmVkKToKKyAgICAg
ICAgKFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0VGVzdEJ1
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkV4dGVuc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYkV4dGVuc2lvblByaXZh
dGUpOgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9uUGFnZUNyZWF0ZWQpOiBDcmVhdGUgYSBX
ZWJLaXRXZWJQYWdlIGZvciB0aGUKKyAgICAgICAgbmV3bHkgY3JhdGVkIHBhZ2UgYW5kIGVtaXQg
V2ViS2l0V2ViRXh0ZW5zaW9uOjpwYWdlLWNyZWF0ZWQKKyAgICAgICAgc2lnbmFscy4KKyAgICAg
ICAgKHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VEZXN0cm95KTogUmVtb3ZlIHRoZSBwYWdlIGZyb20g
dGhlIG1hcC4KKyAgICAgICAgKGRpZENyZWF0ZVBhZ2UpOiBDYWxsIHdlYmtpdFdlYkV4dGVuc2lv
blBhZ2VDcmVhdGVkKCkuCisgICAgICAgICh3aWxsRGVzdHJveVBhZ2UpOiBDYWxsIHdlYmtpdFdl
YkV4dGVuc2lvblBhZ2VEZXN0cm95KCkuCisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUpOiBDcmVhdGUgYSBuZXcgV2ViS2l0V2ViRXh0ZW5zaW9uIGFuZAorICAgICAgICBpbml0aWFs
aXplIHRoZSBpbmplY3RlZCBidW5kbGUgY2xpZW50LgorICAgICAgICAod2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UpOiBSZXR1cm4gdGhlIFdlYktpdFdlYlBhZ2UgZm9yIHRoZQorICAgICAg
ICBnaXZlbiBwYWdlIGlkZW50aWZpZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJL
aXRXZWJFeHRlbnNpb24pOgorICAgICAgICAoX1dlYktpdFdlYkV4dGVuc2lvbkNsYXNzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5z
aW9uRGVmaW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6IEFkZGVk
LgorICAgICAgICAoX1dlYktpdFdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
cGFnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOiBDcmVhdGUg
YSBuZXcgV2ViS2l0V2ViUGFnZS4KKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50KTogUmV0dXJuIHRoZSBXZWJLaXRET01Eb2N1bWVudAorICAgICAgICBsb2FkZWQgaW4g
dGhlIFdlYktpdFdlYlBhZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViUGFnZSk6
CisgICAgICAgIChfV2ViS2l0V2ViUGFnZUNsYXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5z
aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1h
bmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFuYWdl
cjo6c2hhcmVkKTogUmV0dXJuIHRoZSBnbG9iYWwgc2hhcmVkCisgICAgICAgIGluc3RhbmNlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpXZWJHdGtFeHRlbnNpb25N
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6YXBwZW5k
TW9kdWxlRGlyZWN0b3JpZXMpOiBBZGQKKyAgICAgICAgZGlyZWN0b3JpZXMgdG8gc2NhbiBmb3Ig
bW9kdWxlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1v
ZHVsZXMpOiBTY2FuIGZvciBtb2R1bGVzLgorICAgICAgICAoV2ViS2l0OjpXZWJHdGtFeHRlbnNp
b25NYW5hZ2VyOjppbml0aWFsaXplKTogTG9hZCBhbmQgaW5pdGlhbGl6ZQorICAgICAgICB0aGUg
bW9kdWxlcyBmb3VuZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25N
YW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IENyZWF0ZSBhIGJ1
aWx0aW4KKyAgICAgICAgaW5qZWN0ZWQgYnVuZGxlIGFuZCBpbml0aWFsaXplIFdlYkd0a0V4dGVu
c2lvbk1hbmFnZXIgaWYgbm8KKyAgICAgICAgaW5qZWN0ZWQgYnVuZGxlIHBhdGNoIGhhcyBiZWVu
IHBhc3NlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgorCiAyMDEyLTEyLTI3ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udmVydCBhIGZldyBvdGhlciBXZWJQcm9jZXNz
IG1hbmFnZXJzIHRvIGJlIFdlYlByb2Nlc3NTdXBwbGVtZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzNjUyZjcuLjIxMGNmYzMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMi0xMi0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGxvYWRpbmcgd2ViIHByb2Nlc3Mg
ZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1NjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IEFkZCBleGNlcHRpb25zIGZv
ciBHVEsrIEFQSQorICAgICAgICBsb2NhdGVkIGluIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay4KKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtZ3RrZG9jOgorICAgICAgICAoZ2V0X3dl
YmtpdDJfb3B0aW9ucyk6IFNjYW4gYWxzbyBmaWxlcyBpbgorICAgICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsgdG8gZ2VuZXJhdGUgQVBJIGRvY3MuCisgICAgICAgIChnZXRf
d2Via2l0Ml9vcHRpb25zLmluamVjdGVkX2J1bmRsZV9zcmNfcGF0aCk6IEhlbHBlciBmdW5jdGlv
biB0bworICAgICAgICBidWlsZCBwYXRocyBpbiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsuCisKIDIwMTItMTItMjcgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNv
bT4KIAogICAgICAgICBDcmVhdGUgYSBHVEsgYnVpbGQgc3lzdGVtIHdhdGNobGlzdCBhbmQgYWRk
IG15c2VsZiB0byBpdApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBmNTFkMzlmLi42OWQyYzNmIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtOTgsNiArOTgsNyBAQCB3ZWJraXQyX3NvdXJjZXMgOj0KIHdl
YmtpdDJfYnVpbHRfc291cmNlcyA6PQogd2Via2l0Mmd0a19oX2FwaSA6PQogd2Via2l0Mmd0a19i
dWlsdF9zb3VyY2VzIDo9Cit3ZWJraXQyX3dlYl9leHRlbnNpb25faF9hcGkgOj0KIHdlYmtpdDJf
cGx1Z2luX3Byb2Nlc3Nfc291cmNlcyA6PQogd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19idWlsdF9z
b3VyY2VzIDo9CiB3ZWJraXR0ZXN0cnVubmVyX2J1aWx0X3NvdXJjZXMgOj0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KaW5kZXggMTMyZDJmMi4uNmU5N2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTIz
LDcgKzIzLDggQEAgbm9kaXN0X2xpYndlYmtpdDJndGtpbmNsdWRlX0hFQURFUlMgPSBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3RrL3dlYmtpdDIvV2ViS2l0VmVyc2lvbi5oCiAK
IGxpYndlYmtpdDJndGtpbmNsdWRlX0hFQURFUlMgPSBcCi0JJCh3ZWJraXQyZ3RrX2hfYXBpKQor
CSQod2Via2l0Mmd0a19oX2FwaSkgXAorCSQod2Via2l0Ml93ZWJfZXh0ZW5zaW9uX2hfYXBpKQog
CiBub2Rpc3RfbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VC
S0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1VSQ0VTID0gXAogCSQod2Via2l0Ml9idWls
dF9zb3VyY2VzKSBcCkBAIC04Niw2ICs4Nyw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkg
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0tleVZhbHVlU3RvcmFnZSBcCkBAIC0xMDIsMTcgKzEwNCwyMSBAQCBsaWJ3ZWJraXQy
Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZF
UlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZSBcCi0gICAgLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2F0ayBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2F0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiBcCiAJ
LUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlIFwKIAktSSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJndGsgXAogCS1JJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay9pbmNsdWRlIFwK
IAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJndGsvd2Vi
a2l0MiBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQy
ZXh0ZW5zaW9uL2luY2x1ZGUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvaW5jbHVkZS9KYXZhU2NyaXB0Q29yZSBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlL1dlYkNvcmUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVkZS9XZWJLaXQyIFwKKwktSSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20gXAogCS1ETElCRVhFQ0RJUj1cIiIkKGxpYmV4ZWNk
aXIpIlwiIFwKKwktRExJQkRJUj1cIiIkKGxpYmRpcikiXCIgXAorCS1EQlVJTERJTkdfV0VCS0lU
IFwKIAktRFdFQktJVDJfQ09NUElMQVRJT04gXAogCS1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEg
XAogCSQod2ViY29yZV9jcHBmbGFncykgXApAQCAtMTc2LDYgKzE4Miw3IEBAIGVuZGlmCiAKIGxp
YndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElf
TUlOT1JfVkVSU0lPTkBfbGFfTElCQUREICs9IFwKIAlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5s
YSBcCisJbGliV2ViQ29yZURPTS5sYSBcCiAJbGliV2ViQ29yZUd0ay5sYSBcCiAJJChDQUlST19M
SUJTKSBcCiAJJChDTFVUVEVSX0xJQlMpIFwKQEAgLTI4MCw3ICsyODcsMTMgQEAgJChHRU5TT1VS
Q0VTX1dFQktJVDIpL3dlYmtpdDJndGsvaW5jbHVkZS93ZWJraXQyOiAkKGxpYndlYmtpdDJndGtp
bmNsdWRlX0hFQURFUlMKIAkkKEFNX1ZfR0VOKW1rZGlyIC1wICQoR0VOU09VUkNFU19XRUJLSVQy
KS93ZWJraXQyZ3RrL2luY2x1ZGUgXAogCSYmIGxuIC1uIC1zIC1mICR7c2hlbGwgcHdkfS8kKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrICRACiAKLUJVSUxUX1NPVVJDRVMgKz0gJChHRU5TT1VS
Q0VTX1dFQktJVDIpL3dlYmtpdDJndGsvaW5jbHVkZS93ZWJraXQyCiskKEdFTlNPVVJDRVNfV0VC
S0lUMikvd2Via2l0MmV4dGVuc2lvbi9pbmNsdWRlL3dlYmtpdDI6ICQobGlid2Via2l0Mmd0a2lu
Y2x1ZGVfSEVBREVSUykKKwkkKEFNX1ZfR0VOKW1rZGlyIC1wICQoR0VOU09VUkNFU19XRUJLSVQy
KS93ZWJraXQyZXh0ZW5zaW9uL2luY2x1ZGUgXAorCSYmIGxuIC1uIC1zIC1mICR7c2hlbGwgcHdk
fS8kKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ayAkQAorCitCVUlM
VF9TT1VSQ0VTICs9IFwKKwkkKEdFTlNPVVJDRVNfV0VCS0lUMikvd2Via2l0MmV4dGVuc2lvbi9p
bmNsdWRlL3dlYmtpdDIgXAorCSQoR0VOU09VUkNFU19XRUJLSVQyKS93ZWJraXQyZ3RrL2luY2x1
ZGUvd2Via2l0MgogCiB2cGF0aCAlLm1lc3NhZ2VzLmluID0gXAogCSQoV2ViS2l0MikvUGx1Z2lu
UHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGM2YjJhLi4yNjQ2
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEzMiw2ICsxMzIsMTIgQEAg
d2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXaW5kb3dQcm9wZXJ0aWVzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCiAKK3dlYmtpdDJfd2ViX2V4dGVuc2lvbl9oX2FwaSArPSBcCisJJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmggXAor
CSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4
dGVuc2lvbkRlZmluZXMuaCBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisKIHdlYmtpdDJfYnVpbHRf
c291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXApAQCAtOTg1LDYgKzk5MSw4IEBAIHdlYmtpdDJfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggXAorCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuaCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJv
eHkuY3BwIFwKQEAgLTEwMjcsNiArMTAzNSwxNCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5n
ZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuaCBcCisJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCBcCisJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVu
c2lvbkRlZmluZXMuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUu
aCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dl
YmtpdC13ZWItZXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBcCkBAIC0xMTc5LDggKzExOTUsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxp
Z2h0Q29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9U
YXBIaWdobGlnaHRDb250cm9sbGVyLmggXAotICAgIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuaCBcCi0gICAgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0
ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFj
Y2Vzc2liaWxpdHlPYmplY3QuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAppbmRleCAyYTgzMTI5Li43NGYxZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTgyNSw2ICsxODI1LDIyIEBAIHZv
aWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRVUklSZXF1ZXN0KiByZXF1CiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9w
YWdlX2lkOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0IHRoZSBp
ZGVudGlmaWVyIG9mIHRoZSAjV2ViS2l0V2ViUGFnZSBjb3JyZXNwb25kaW5nIHRvCisgKiB0aGUg
I1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXR1cm5zOiB0aGUgcGFnZSBJRCBvZiBAd2ViX3ZpZXcu
CisgKi8KK2d1aW50NjQgd2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
KHdlYlZpZXcpLCAwKTsKKworICAgIHJldHVybiBnZXRQYWdlKHdlYlZpZXcpLT5wYWdlSUQoKTsK
K30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxlOgogICogQHdlYl92aWV3OiBh
ICNXZWJLaXRXZWJWaWV3CiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGZkYmM2NjYuLjJkMjdmMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTI0OCw2ICsy
NDgsOSBAQCB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdf
aXNfbG9hZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ3VpbnQ2NAord2Via2l0X3dlYl92aWV3
X2dldF9wYWdlX2lkICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93
ZWJfdmlld19nZXRfdGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNmU5
NzI4NC4uN2M2YzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC00Myw2ICs0MywxMiBAQAog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRTZWN1cml0eU1hbmFnZXIueG1sIi8+CiAg
IDwvY2hhcHRlcj4KIAorICA8Y2hhcHRlcj4KKyAgICA8dGl0bGU+V2ViIEV4dGVuc2lvbnM8L3Rp
dGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJFeHRlbnNpb24ueG1sIi8+
CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYlBhZ2UueG1sIi8+CisgIDwvY2hh
cHRlcj4KKwogICA8aW5kZXggaWQ9ImluZGV4LWFsbCI+CiAgICAgPHRpdGxlPkluZGV4PC90aXRs
ZT4KICAgPC9pbmRleD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGNmM2E2MTYuLjMx
NTY5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtOTUsNiArOTUsNyBAQCB3ZWJr
aXRfd2ViX3ZpZXdfZ29fYmFjawogd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkCiB3ZWJr
aXRfd2ViX3ZpZXdfZ29fZm9yd2FyZAogd2Via2l0X3dlYl92aWV3X2dldF90aXRsZQord2Via2l0
X3dlYl92aWV3X2dldF9wYWdlX2lkCiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkCiB3ZWJraXRfd2Vi
X3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZQogd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZwpA
QCAtOTI0LDMgKzkyNSw0MiBAQCBXRUJLSVRfU0VDVVJJVFlfTUFOQUdFUl9HRVRfQ0xBU1MKIFdl
YktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUKIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX2dldF90
eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2ViRXh0ZW5zaW9uPC9G
SUxFPgorV2ViS2l0V2ViRXh0ZW5zaW9uCitXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVu
Y3Rpb24KK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlCisKKzxTVUJTRUNUSU9OIFN0YW5k
YXJkPgorV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MKK1dFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04K
K1dFQktJVF9XRUJfRVhURU5TSU9OCitXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTgorV0VCS0lUX1dF
Ql9FWFRFTlNJT05fQ0xBU1MKK1dFQktJVF9JU19XRUJfRVhURU5TSU9OX0NMQVNTCitXRUJLSVRf
V0VCX0VYVEVOU0lPTl9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdl
YkV4dGVuc2lvblByaXZhdGUKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlCis8L1NFQ1RJ
T04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2ViUGFnZTwvRklMRT4KK1dlYktpdFdlYlBh
Z2UKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50CisKKzxTVUJTRUNUSU9OIFN0YW5k
YXJkPgorV2ViS2l0V2ViUGFnZUNsYXNzCitXRUJLSVRfVFlQRV9XRUJfUEFHRQorV0VCS0lUX1dF
Ql9QQUdFCitXRUJLSVRfSVNfV0VCX1BBR0UKK1dFQktJVF9XRUJfUEFHRV9DTEFTUworV0VCS0lU
X0lTX1dFQl9QQUdFX0NMQVNTCitXRUJLSVRfV0VCX1BBR0VfR0VUX0NMQVNTCisKKzxTVUJTRUNU
SU9OIFByaXZhdGU+CitXZWJLaXRXZWJQYWdlUHJpdmF0ZQord2Via2l0X3dlYl9wYWdlX2dldF90
eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNGQ4ODQzZS4uZWIwZjMzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5
cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay50eXBlcwpAQCAtMjEsMyArMjEsNSBAQCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfdHlwZQog
d2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9n
ZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF90eXBlCit3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfdHlwZQord2Via2l0X3dlYl9wYWdlX2dldF90eXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmluZGV4
IGE4Zjk5NzYuLmViMDE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIFRFU1RfUFJP
R1MgKz0gXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0UHJpbnRpbmcgXAogCVByb2dy
YW1zL1dlYktpdDJBUElUZXN0cy9UZXN0UmVzb3VyY2VzIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJ
VGVzdHMvVGVzdFNTTCBcCisJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJFeHRlbnNp
b25zIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFZlcnNpb24gXAogCVBy
b2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlIFwKIAlQcm9n
cmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyIFwKQEAgLTM0LDYg
KzM1LDcgQEAgd2Via2l0Ml90ZXN0c19jcHBmbGFncyA9IFwKIAktRFdFQktJVF9TUkNfRElSPVwi
JHtzaGVsbCBwd2R9LyR7c3JjZGlyfVwiIFwKIAktRFdFQktJVF9ERVJJVkVEX1NSQ19ESVI9XCIk
e3NoZWxsIHB3ZH0vJHt0b3BfYnVpbGRkaXJ9L0Rlcml2ZWRTb3VyY2VzXCIgXAogCS1EV0VCS0lU
X1RFU1RfUExVR0lOX0RJUj1cIiR7c2hlbGwgcHdkfS8ke3RvcF9idWlsZGRpcn0vVGVzdE5ldHNj
YXBlUGx1Z2luLy5saWJzXCIgXAorCS1EV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSPVwi
JHtzaGVsbCBwd2R9LyR7dG9wX2J1aWxkZGlyfS9MaWJyYXJpZXMvV2ViRXh0ZW5zaW9ucy8ubGli
c1wiIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UgXApAQCAtNzAsNiArNzIsOCBA
QCBub2luc3RfTFRMSUJSQVJJRVMgKz0gTGlicmFyaWVzL2xpYldlYktpdDJBUElUZXN0Q29yZS5s
YQogTGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0Q29yZV9sYV9TT1VSQ0VTID0gXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0
LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RC
dXMuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRU
ZXN0QnVzLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktp
dFRlc3RTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJLaXRUZXN0U2VydmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RNYWluLmNwcCBcCkBAIC03OCw2ICs4MiwzMCBAQCBMaWJyYXJpZXNfbGliV2Vi
S2l0MkFQSVRlc3RDb3JlX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaAogTGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0
Q29yZV9sYV9DUFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcHBmbGFncykKIAorbm9pbnN0X0xU
TElCUkFSSUVTICs9IExpYnJhcmllcy9XZWJFeHRlbnNpb25zL2xpYldlYkV4dGVuc2lvblRlc3Qu
bGEKK0xpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lvblRlc3RfbGFfU09VUkNF
UyA9IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNp
b25UZXN0LmNwcAorCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJFeHRlbnNpb25UZXN0
X2xhX0xERkxBR1MgPSBcCisJLXJwYXRoICR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvTGli
cmFyaWVzL1dlYkV4dGVuc2lvbnMvLmxpYnMgXAorCSQobm9fdW5kZWZpbmVkKSBcCisJLWF2b2lk
LXZlcnNpb24gXAorCS1tb2R1bGUKKworTGlicmFyaWVzX1dlYkV4dGVuc2lvbnNfbGliV2ViRXh0
ZW5zaW9uVGVzdF9sYV9DUFBGTEFHUyA9IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZSBcCisJLURXRUJLSVQyX0NPTVBJTEFUSU9OIFwKKwkk
KHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCisKK0xpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldl
YkV4dGVuc2lvblRlc3RfbGFfQ1hYRkxBR1MgPSBcCisgICAgICAgICQoZ2xvYmFsX2N4eGZsYWdz
KQorCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJFeHRlbnNpb25UZXN0X2xhX0NGTEFH
UyA9IFwKKyAgICAgICAgJChnbG9iYWxfY2ZsYWdzKQorCisKIEVYVFJBX0RJU1QgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWNlcnQu
cGVtIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9yZXNvdXJjZXMv
dGVzdC1rZXkucGVtIFwKQEAgLTIxNCw0ICsyNDIsMTAgQEAgUHJvZ3JhbXNfV2ViS2l0MkFQSVRl
c3RzX1Rlc3RTU0xfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCiBQcm9ncmFt
c19XZWJLaXQyQVBJVGVzdHNfVGVzdFNTTF9MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkK
IFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0U1NMX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVz
dHNfbGRmbGFncykKIAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25z
X1NPVVJDRVMgPSBcCisgICAgICAgIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RX
ZWJFeHRlbnNpb25zX0NQUEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3Jh
bXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX0xEQUREID0gJCh3ZWJraXQyX3Rl
c3RzX2xkYWRkKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX0xE
RkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogZW5kaWYgIyBFTkFCTEVfV0VCS0lU
MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYkV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjBmOWExODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyog
YnVzOworCitzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48aGVhZD48dGl0bGU+
V2ViS2l0R1RLKyBXZWIgRXh0ZW5zaW9ucyBUZXN0PC90aXRsZT48L2hlYWQ+PGJvZHk+PC9ib2R5
PjwvaHRtbD4iLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAg
IEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eSgi
b3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICIvb3JnL3dlYmtpdC9n
dGsvV2ViRXh0ZW5zaW9uVGVzdCIgLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIs
IHRlc3QtPm1fbWFpbkxvb3ApKTsKKyAgICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9w
dEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYygKKyAgICAgICAgcHJveHkuZ2V0KCksCisgICAg
ICAgICJHZXRUaXRsZSIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIih0KSIsIHdlYmtpdF93ZWJf
dmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpKSwKKyAgICAgICAgR19EQlVTX0NBTExf
RkxBR1NfTk9ORSwKKyAgICAgICAgLTEsIDAsIDApKTsKKyAgICBnX2Fzc2VydChyZXN1bHQpOwor
CisgICAgY29uc3QgY2hhciogdGl0bGU7CisgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCks
ICIoJnMpIiwgJnRpdGxlKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGl0bGUsID09LCAiV2ViS2l0
R1RLKyBXZWIgRXh0ZW5zaW9ucyBUZXN0Iik7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAg
ICBnX3NldGVudigiV0VCS0lUX1dFQl9FWFRFTlNJT05TX1BBVEgiLCBXRUJLSVRfVEVTVF9XRUJf
RVhURU5TSU9OU19ESVIsIEZBTFNFKTsKKyAgICBidXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygpOwor
ICAgIGlmICghYnVzLT5ydW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRvbS1kb2N1bWVudC10aXRsZSIsIHRlc3RXZWJF
eHRlbnNpb24pOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBkZWxldGUgYnVzOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9X
ZWJFeHRlbnNpb25UZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
YWY2OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKworc3RhdGljIGNvbnN0IGNoYXIg
aW50cm9zcGVjdGlvblhNTFtdID0KKyAgICAiPG5vZGU+IgorICAgICIgPGludGVyZmFjZSBuYW1l
PSdvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0Jz4iCisgICAgIiAgPG1ldGhvZCBuYW1l
PSdHZXRUaXRsZSc+IgorICAgICIgICA8YXJnIHR5cGU9J3QnIG5hbWU9J3BhZ2VJRCcgZGlyZWN0
aW9uPSdpbicvPiIKKyAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd0aXRsZScgZGlyZWN0aW9u
PSdvdXQnLz4iCisgICAgIiAgPC9tZXRob2Q+IgorICAgICIgPC9pbnRlcmZhY2U+IgorICAgICI8
L25vZGU+IjsKKworc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlv
biosIGNvbnN0IGNoYXIqIHNlbmRlciwgY29uc3QgY2hhciogb2JqZWN0UGF0aCwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFt
ZXRlcnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgaWYgKGdfc3RyY21wMChpbnRlcmZhY2VOYW1lLCAib3JnLndlYmtpdC5ndGsu
V2ViRXh0ZW5zaW9uVGVzdCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWdfc3RyY21w
MChtZXRob2ROYW1lLCAiR2V0VGl0bGUiKSkgeworICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Cisg
ICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIih0KSIsICZwYWdlSUQpOworCisgICAg
ICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04o
dXNlckRhdGEpOworICAgICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UoZXh0ZW5zaW9uLCBwYWdlSUQpOworICAgICAgICBpZiAoIXBhZ2UpIHsK
KyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fZXJyb3IoCisgICAg
ICAgICAgICAgICAgaW52b2NhdGlvbiwgR19EQlVTX0VSUk9SLCBHX0RCVVNfRVJST1JfSU5WQUxJ
RF9BUkdTLAorICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhZ2UgSUQ6ICUiR19HVUlOVDY0X0ZP
Uk1BVCwgcGFnZUlEKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50KHBhZ2UpOworICAgICAgICBHT3duUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9kb21fZG9j
dW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KSk7CisgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2Nh
dGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwgdGl0bGUu
Z2V0KCkpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBjb25zdCBHREJ1c0ludGVyZmFjZVZUYWJsZSBp
bnRlcmZhY2VWaXJ0dWFsVGFibGUgPSB7CisgICAgbWV0aG9kQ2FsbENhbGxiYWNrLCAwLCAwCit9
OworCitzdGF0aWMgdm9pZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29u
bmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgc3Rh
dGljIEdEQnVzTm9kZUluZm8gKmludHJvc3BlY3Rpb25EYXRhID0gMDsKKyAgICBpZiAoIWludHJv
c3BlY3Rpb25EYXRhKQorICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2lu
Zm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhNTCwgMCk7CisKKyAgICBHT3duUHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgdW5zaWduZWQgcmVnaXN0cmF0aW9uSUQgPSBnX2RidXNfY29ubmVjdGlv
bl9yZWdpc3Rlcl9vYmplY3QoCisgICAgICAgIGNvbm5lY3Rpb24sCisgICAgICAgICIvb3JnL3dl
YmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIGludHJvc3BlY3Rpb25EYXRhLT5p
bnRlcmZhY2VzWzBdLAorICAgICAgICAmaW50ZXJmYWNlVmlydHVhbFRhYmxlLAorICAgICAgICBn
X29iamVjdF9yZWYodXNlckRhdGEpLAorICAgICAgICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlm
eT4oZ19vYmplY3RfdW5yZWYpLAorICAgICAgICAmZXJyb3Iub3V0UHRyKCkpOworICAgIGlmICgh
cmVnaXN0cmF0aW9uSUQpCisgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIHJlZ2lzdGVyIG9i
amVjdDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKK30KKworZXh0ZXJuICJDIiB2b2lkIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24p
Cit7CisgICAgZ19idXNfb3duX25hbWUoCisgICAgICAgIEdfQlVTX1RZUEVfU0VTU0lPTiwKKyAg
ICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLAorICAgICAgICBHX0JVU19O
QU1FX09XTkVSX0ZMQUdTX05PTkUsCisgICAgICAgIGJ1c0FjcXVpcmVkQ2FsbGJhY2ssCisgICAg
ICAgIDAsIDAsCisgICAgICAgIGdfb2JqZWN0X3JlZihleHRlbnNpb24pLAorICAgICAgICBzdGF0
aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY4NDg0OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRl
c3RCdXMuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgi
CisKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK1dlYktpdFRlc3RCdXM6OldlYktpdFRlc3RCdXMoKQorICAgIDogbV9w
aWQoLTEpCit7Cit9CisKK2Jvb2wgV2ViS2l0VGVzdEJ1czo6cnVuKCkKK3sKKyAgICAvLyBGSVhN
RTogVXNlIEdUZXN0REJ1cyB3aGVuIHdlIGJ1bXAgZ2xpYiB0byAyLjM0LgorICAgIEdPd25QdHI8
Y2hhcj4gZGJ1c0xhdW5jaChnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoKCJkYnVzLWxhdW5jaCIpKTsK
KyAgICBpZiAoIWRidXNMYXVuY2gpIHsKKyAgICAgICAgZ193YXJuaW5nKCJFcnJvciBzdGFydGlu
ZyBEQlVTIGRhZW1vbjogZGJ1cy1sYXVuY2ggbm90IGZvdW5kIGluIHBhdGgiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0OworICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBpZiAoIWdfc3Bhd25fY29tbWFuZF9saW5lX3N5bmMo
ZGJ1c0xhdW5jaC5nZXQoKSwgJm91dHB1dC5vdXRQdHIoKSwgMCwgMCwgJmVycm9yLm91dFB0cigp
KSkgeworICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERCVVMgZGFlbW9uOiAlcyIs
IGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0
cmluZyBvdXRwdXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG91dHB1dC5nZXQoKSk7CisgICAg
VmVjdG9yPFN0cmluZz4gbGluZXM7CisgICAgb3V0cHV0U3RyaW5nLnNwbGl0KFVDaGFyKCdcbicp
LCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgbGluZXMpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY2hhcioqIGtleVZhbHVl
ID0gZ19zdHJzcGxpdChsaW5lc1tpXS51dGY4KCkuZGF0YSgpLCAiPSIsIDIpOworICAgICAgICBn
X2Fzc2VydF9jbXB1aW50KGdfc3Rydl9sZW5ndGgoa2V5VmFsdWUpLCA9PSwgMik7CisgICAgICAg
IGlmICghZ19zdHJjbXAwKGtleVZhbHVlWzBdLCAiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIikp
IHsKKyAgICAgICAgICAgIG1fYWRkcmVzcyA9IGtleVZhbHVlWzFdOworICAgICAgICAgICAgZ19z
ZXRlbnYoIkRCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyIsIGtleVZhbHVlWzFdLCBUUlVFKTsKKyAg
ICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKGtleVZhbHVlWzBdLCAiREJVU19TRVNTSU9OX0JV
U19QSUQiKSkKKyAgICAgICAgICAgIG1fcGlkID0gZ19hc2NpaV9zdHJ0b2xsKGtleVZhbHVlWzFd
LCAwLCAxMCk7CisgICAgICAgIGdfc3RyZnJlZXYoa2V5VmFsdWUpOworICAgIH0KKworICAgIHJl
dHVybiBtX3BpZCA+IDA7Cit9CisKK1dlYktpdFRlc3RCdXM6On5XZWJLaXRUZXN0QnVzKCkKK3sK
KyAgICBnX3Vuc2V0ZW52KCJEQlVTX1NFU1NJT05fQlVTX0FERFJFU1MiKTsKKworICAgIGlmICht
X3BpZCAhPSAtMSkKKyAgICAgICAga2lsbChtX3BpZCwgU0lHVEVSTSk7Cit9CisKK0dEQnVzQ29u
bmVjdGlvbiogV2ViS2l0VGVzdEJ1czo6Y29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fY29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKKworICAgIGdfYXNzZXJ0
KCFtX2FkZHJlc3MuaXNOdWxsKCkpOworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0R1JlZihnX2Ri
dXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJlc3Nfc3luYyhtX2FkZHJlc3MuZGF0YSgpLAorICAg
ICAgICBzdGF0aWNfY2FzdDxHREJ1c0Nvbm5lY3Rpb25GbGFncz4oR19EQlVTX0NPTk5FQ1RJT05f
RkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5UIHwgR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfTUVT
U0FHRV9CVVNfQ09OTkVDVElPTiksCisgICAgICAgIDAsIDAsIDApKTsKKyAgICByZXR1cm4gbV9j
b25uZWN0aW9uLmdldCgpOworfQorCitzdGF0aWMgdm9pZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nv
bm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGdwb2ludGVyIHVzZXJEYXRhKQor
eworICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEp
KTsKK30KKworR0RCdXNQcm94eSogV2ViS2l0VGVzdEJ1czo6Y3JlYXRlUHJveHkoY29uc3QgY2hh
ciogc2VydmljZU5hbWUsIGNvbnN0IGNoYXIqIG9iamVjdFBhdGgsIGNvbnN0IGNoYXIqIGludGVy
ZmFjZU5hbWUsIEdNYWluTG9vcCogbWFpbkxvb3ApCit7CisgICAgdW5zaWduZWQgd2F0Y2hlcklE
ID0gZ19idXNfd2F0Y2hfbmFtZV9vbl9jb25uZWN0aW9uKGNvbm5lY3Rpb24oKSwgc2VydmljZU5h
bWUsIEdfQlVTX05BTUVfV0FUQ0hFUl9GTEFHU19OT05FLCBvbk5hbWVBcHBlYXJlZCwgMCwgbWFp
bkxvb3AsIDApOworICAgIGdfbWFpbl9sb29wX3J1bihtYWluTG9vcCk7CisgICAgZ19idXNfdW53
YXRjaF9uYW1lKHdhdGNoZXJJRCk7CisKKyAgICBHREJ1c1Byb3h5KiBwcm94eSA9IGdfZGJ1c19w
cm94eV9uZXdfc3luYygKKyAgICAgICAgY29ubmVjdGlvbigpLAorICAgICAgICBHX0RCVVNfUFJP
WFlfRkxBR1NfRE9fTk9UX0FVVE9fU1RBUlQsCisgICAgICAgIDAsIC8vIEdEQnVzSW50ZXJmYWNl
SW5mbworICAgICAgICBzZXJ2aWNlTmFtZSwKKyAgICAgICAgb2JqZWN0UGF0aCwKKyAgICAgICAg
aW50ZXJmYWNlTmFtZSwKKyAgICAgICAgMCwgLy8gR0NhbmNlbGxhYmxlCisgICAgICAgIDApOwor
ICAgIGdfYXNzZXJ0KHByb3h5KTsKKyAgICByZXR1cm4gcHJveHk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ5ZDliYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMu
aApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgV2ViS2l0VGVzdEJ1c19oCisjZGVmaW5lIFdlYktpdFRlc3RCdXNfaAorCisjaW5j
bHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK2NsYXNzIFdlYktpdFRlc3RCdXMgeworcHVibGlj
OgorICAgIFdlYktpdFRlc3RCdXMoKTsKKyAgICB2aXJ0dWFsIH5XZWJLaXRUZXN0QnVzKCk7CisK
KyAgICBib29sIHJ1bigpOworICAgIEdEQnVzUHJveHkqIGNyZWF0ZVByb3h5KGNvbnN0IGNoYXIq
IHNlcnZpY2VOYW1lLCBjb25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBHTWFpbkxvb3AqKTsKKworcHJpdmF0ZToKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNv
bm5lY3Rpb24oKTsKKworICAgIHBpZF90IG1fcGlkOworICAgIENTdHJpbmcgbV9hZGRyZXNzOwor
ICAgIEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cit9OworCisjZW5kaWYg
Ly8gV2ViS2l0VGVzdEJ1c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYWRhYjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgorCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJQYWdlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsK
KyAgICBQQUdFX0NSRUFURUQsCisKKyAgICBMQVNUX1NJR05BTAorfTsKKwordHlwZWRlZiBIYXNo
TWFwPFdlYlBhZ2UqLCBHUmVmUHRyPFdlYktpdFdlYlBhZ2U+ID4gV2ViUGFnZU1hcDsKKworc3Ry
dWN0IF9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlIHsKKyAgICBXZWJQYWdlTWFwIHBhZ2VzOwor
fTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworCitXRUJL
SVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViRXh0ZW5zaW9uLCB3ZWJraXRfd2ViX2V4dGVuc2lvbiwg
R19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3Nf
aW5pdChXZWJLaXRXZWJFeHRlbnNpb25DbGFzcyoga2xhc3MpCit7CisgICAgLyoqCisgICAgICog
V2ViS2l0V2ViRXh0ZW5zaW9uOjpwYWdlLWNyZWF0ZWQ6CisgICAgICogQGV4dGVuc2lvbjogdGhl
ICNXZWJLaXRXZWJFeHRlbnNpb24gb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAg
ICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2UgY3JlYXRlZAorICAgICAqCisgICAgICog
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgbmV3ICNXZWJLaXRXZWJQYWdlIGlzIGNyZWF0
ZWQgaW4KKyAgICAgKiB0aGUgV2ViIFByb2Nlc3MuCisgICAgICovCisgICAgc2lnbmFsc1tQQUdF
X0NSRUFURURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAicGFnZS1jcmVhdGVkIiwKKyAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK
KyAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVD
VCwKKyAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QQUdF
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViRXh0ZW5zaW9uUGFnZUNyZWF0ZWQoV2ViS2l0
V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgR1JlZlB0cjxX
ZWJLaXRXZWJQYWdlPiB3ZWJQYWdlID0gYWRvcHRHUmVmKHdlYmtpdFdlYlBhZ2VDcmVhdGUocGFn
ZSkpOworICAgIGV4dGVuc2lvbi0+cHJpdi0+cGFnZXMuYWRkKHBhZ2UsIHdlYlBhZ2UpOworICAg
IGdfc2lnbmFsX2VtaXQoZXh0ZW5zaW9uLCBzaWduYWxzW1BBR0VfQ1JFQVRFRF0sIDAsIHdlYlBh
Z2UuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJv
eShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViUGFnZSogcGFnZSkKK3sKKyAgICBl
eHRlbnNpb24tPnByaXYtPnBhZ2VzLnJlbW92ZShwYWdlKTsKK30KKworc3RhdGljIHZvaWQgZGlk
Q3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VDcmVhdGVk
KFdFQktJVF9XRUJfRVhURU5TSU9OKGNsaWVudEluZm8pLCB0b0ltcGwocGFnZSkpOworfQorCitz
dGF0aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJFeHRl
bnNpb25QYWdlRGVzdHJveShXRUJLSVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBs
KHBhZ2UpKTsKK30KKworV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKK3sKKyAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4
dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfRVhURU5TSU9OLCBOVUxMKSk7CisKKyAgICBXS0J1bmRsZUNsaWVudCB3a0J1bmRsZUNsaWVu
dCA9IHsKKyAgICAgICAga1dLQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNpb24sCisgICAgICAgIGV4
dGVuc2lvbiwgLy8gY2xpZW50SW5mbworICAgICAgICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3
aWxsRGVzdHJveVBhZ2UsCisgICAgICAgIDAsIC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAKKyAg
ICAgICAgMCwgLy8gZGlkUmVjZWl2ZU1lc3NhZ2UKKyAgICAgICAgMCAvLyBkaWRSZWNlaXZlTWVz
c2FnZVRvUGFnZQorICAgIH07CisgICAgV0tCdW5kbGVTZXRDbGllbnQodG9BUEkoYnVuZGxlKSwg
JndrQnVuZGxlQ2xpZW50KTsKKworICAgIHJldHVybiBleHRlbnNpb247Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2U6CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRX
ZWJFeHRlbnNpb24KKyAqIEBwYWdlX2lkOiB0aGUgaWRlbnRpZmllciBvZiB0aGUgI1dlYktpdFdl
YlBhZ2UgdG8gZ2V0CisgKgorICogR2V0IHRoZSB3ZWIgcGFnZSBvZiB0aGUgZ2l2ZW4gQHBhZ2Vf
aWQuCisgKgorICogUmV0dXJuczogdGhlICNXZWJLaXRXZWJQYWdlIGZvciB0aGUgZ2l2ZW4gQHBh
Z2VfaWQsIG9yICVOVUxMIGlmIHRoZQorICogICAgaWRlbnRpZmllciBkb2Vzbid0IGNvcnJlc3Bv
bmQgdG8gYW4gZXhzaXRpbmcgd2ViIHBhZ2UuCisgKi8KK1dlYktpdFdlYlBhZ2UqIHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBndWlu
dDY0IHBhZ2VJRCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VY
VEVOU0lPTihleHRlbnNpb24pLCAwKTsKKworICAgIFdlYktpdFdlYkV4dGVuc2lvblByaXZhdGUq
IHByaXYgPSBleHRlbnNpb24tPnByaXY7CisgICAgV2ViUGFnZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gcHJpdi0+cGFnZXMuZW5kKCk7CisgICAgZm9yIChXZWJQYWdlTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IHByaXYtPnBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
aWYgKGl0LT5rZXktPnBhZ2VJRCgpID09IHBhZ2VJRCkKKyAgICAgICAgICAgIHJldHVybiBpdC0+
dmFsdWUuZ2V0KCk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJFeHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDQy
NDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJ
VF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJ
T04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFdlYkV4dGVuc2lv
bl9oCisjZGVmaW5lIFdlYktpdFdlYkV4dGVuc2lvbl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9uRGVmaW5lcy5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZp
bmUgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiAgICAgICAgICAgICh3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VYVEVOU0lPTihvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
RVhURU5TSU9OLCBXZWJLaXRXZWJFeHRlbnNpb24pKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX0VY
VEVOU0lPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9FWFRFTlNJT05f
Q0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfV0VCX0VYVEVOU0lPTiwgV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MpKQorI2RlZmluZSBX
RUJLSVRfSVNfV0VCX0VYVEVOU0lPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQl9FWFRFTlNJT05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNT
KChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgV2ViS2l0V2ViRXh0ZW5zaW9uQ2xh
c3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uICAgICAgICBXZWJLaXRX
ZWJFeHRlbnNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MgICBX
ZWJLaXRXZWJFeHRlbnNpb25DbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNp
b25Qcml2YXRlIFdlYktpdFdlYkV4dGVuc2lvblByaXZhdGU7CisKKy8qKgorICogV2ViS2l0V2Vi
RXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uOgorICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2Vi
RXh0ZW5zaW9uCisgKgorICogVHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2ls
bCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZQorICogdGhlIHdlYiBleHRlbnNpb24gd2hlbiB0aGUg
d2ViIHByb2Nlc3Mgc3RhcnRzLgorICovCit0eXBlZGVmIHZvaWQgKCogV2ViS2l0V2ViRXh0ZW5z
aW9uSW5pdGlhbGl6ZUZ1bmN0aW9uKSAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwor
CitzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvbiB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAg
ICBXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRX
ZWJFeHRlbnNpb25DbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisK
K1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlICh2b2lkKTsK
KworV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9w
YWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOworCitHX0VORF9ERUNMUwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uRGVm
aW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYTYzNTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uRGVmaW5lcy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVk
KF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9D
T01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5o
PiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0V2Vi
RXh0ZW5zaW9uRGVmaW5lc19oCisjZGVmaW5lIFdlYktpdFdlYkV4dGVuc2lvbkRlZmluZXNfaAor
CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaWZkZWYgR19PU19XSU4zMgorIyAgICBpZmRlZiBCVUlM
RElOR19XRUJLSVQKKyMgICAgICAgIGRlZmluZSBXRUJLSVRfQVBJIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KQorIyAgICBlbHNlCisjICAgICAgICBkZWZpbmUgV0VCS0lUX0FQSSBfX2RlY2xzcGVjKGRs
bGltcG9ydCkKKyMgICAgZW5kaWYKKyMgICAgZGVmaW5lIFdFQktJVF9PQlNPTEVURV9BUEkgV0VC
S0lUX0FQSQorI2Vsc2UKKyMgICAgZGVmaW5lIFdFQktJVF9BUEkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkKKyMgICAgZGVmaW5lIFdFQktJVF9PQlNPTEVURV9BUEkgV0VC
S0lUX0FQSSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSkKKyNlbmRpZgorCisjZW5kaWYgLy8g
V2ViS2l0V2ViRXh0ZW5zaW9uRGVmaW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYkV4dGVuc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mZjdkMTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFdlYkV4dGVuc2lv
blByaXZhdGVfaAorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJFeHRlbnNpb24uaCIKKworV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNp
b25DcmVhdGUoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSopOworCisjZW5kaWYgLy8gV2ViS2l0V2Vi
RXh0ZW5zaW9uUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQyMTNjNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViUGFn
ZS5oIgorCisjaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0cnVjdCBfV2ViS2l0V2ViUGFnZVByaXZhdGUgeworICAg
IFdlYlBhZ2UqIHdlYlBhZ2U7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViUGFn
ZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRXZWJQYWdlQ2xhc3MqIGtsYXNzKQoreworfQorCitX
ZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCit7Cisg
ICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IFdFQktJVF9XRUJfUEFHRShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1BBR0UsIE5VTEwpKTsKKyAgICBwYWdlLT5wcml2LT53ZWJQYWdlID0gd2Vi
UGFnZTsKKyAgICByZXR1cm4gcGFnZTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0
X2RvbV9kb2N1bWVudDoKKyAqIEB3ZWJfcGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICoKKyAqIEdl
dCB0aGUgI1dlYktpdERPTURvY3VtZW50IGN1cnJlbnRseSBsb2FkZWQgaW4gQHdlYl9wYWdlCisg
KgorICogUmV0dXJuczogdGhlICNXZWJLaXRET01Eb2N1bWVudCBjdXJyZW50bHkgbG9hZGVkLCBv
ciAlTlVMTAorICogICAgaWYgbm8gZG9jdW1lbnQgaXMgY3VycmVudGx5IGxvYWRlZC4KKyAqLwor
V2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KFdlYktp
dFdlYlBhZ2UqIHdlYlBhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9QQUdFKHdlYlBhZ2UpLCAwKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSB3ZWJQYWdl
LT5wcml2LT53ZWJQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+ZG9jdW1lbnQoKSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kOGY2MjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmlu
ZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQy
X0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9u
Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRX
ZWJQYWdlX2gKKyNkZWZpbmUgV2ViS2l0V2ViUGFnZV9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9uRGVmaW5lcy5oPgorI2lu
Y2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb20uaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1dFQl9QQUdFICAgICAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1BBR0Uob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BBR0UsIFdlYktpdFdlYlBh
Z2UpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1BBR0Uob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BBR0UpKQorI2RlZmluZSBX
RUJLSVRfV0VCX1BBR0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1BBR0UsIFdlYktpdFdlYlBhZ2VDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJfUEFHRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfUEFHRSkpCisjZGVmaW5lIFdFQktJVF9XRUJf
UEFHRV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBX
RUJLSVRfVFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZUNsYXNzKSkKKwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlBhZ2UgICAgICAgIFdlYktpdFdlYlBhZ2U7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViUGFnZUNsYXNzICAgV2ViS2l0V2ViUGFnZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlBhZ2VQcml2YXRlIFdlYktpdFdlYlBhZ2VQcml2YXRlOworCitzdHJ1Y3QgX1dl
YktpdFdlYlBhZ2UgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2ViUGFnZVBy
aXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyB7CisgICAgR09i
amVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93
ZWJfcGFnZV9nZXRfdHlwZSAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRET01E
b2N1bWVudCAqCit3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMGQzZGEzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFdlYlBhZ2VQcml2YXRlX2gKKwor
I2luY2x1ZGUgIldlYktpdFdlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKK1dlYktp
dFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViS2l0OjpXZWJQYWdlKik7CisKKyNlbmRp
ZiAvLyBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQt
d2ViLWV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZWYz
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMCwwICsxLDMwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fV2ViS2l0V2Vi
RXh0ZW5zaW9uX2gKKyNkZWZpbmUgX19XZWJLaXRXZWJFeHRlbnNpb25faAorCisjZGVmaW5lIF9f
V0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXworCisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJFeHRlbnNpb24uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KKwor
I3VuZGVmIF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFu
YWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcwOTYwYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVu
c2lvbk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkd0a0V4dGVu
c2lvbk1hbmFnZXIuaCIKKworI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJHdGtFeHRlbnNpb25NYW5hZ2VyJiBXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyOjpzaGFyZWQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2Vi
R3RrRXh0ZW5zaW9uTWFuYWdlciwgZXh0ZW5zaW9uTWFuYWdlciwgKCkpOworICAgIHJldHVybiBl
eHRlbnNpb25NYW5hZ2VyOworfQorCitXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpXZWJHdGtFeHRl
bnNpb25NYW5hZ2VyKCkKK3sKK30KKwordm9pZCBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjphcHBl
bmRNb2R1bGVEaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCit7CisgICAg
U3RyaW5nIGV4dGVuc2lvblBhdGhzKGdldGVudigiV0VCS0lUX1dFQl9FWFRFTlNJT05TX1BBVEgi
KSk7CisgICAgaWYgKCFleHRlbnNpb25QYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gcGF0aHM7CisgICAgICAgIGV4dGVuc2lvblBhdGhzLnNwbGl0KFVDaGFyKCc6Jyks
IC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7CisgICAgICAgIGRpcmVjdG9y
aWVzLmFwcGVuZChwYXRocyk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4dGVu
c2lvbkRlZmF1bHREaXJlY3RvcnkgPSBMSUJESVIiIkdfRElSX1NFUEFSQVRPUl9TIndlYmtpdGd0
ay0iV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORyIiR19ESVJfU0VQQVJBVE9SX1Mid2ViLWV4
dGVuc2lvbnMiR19ESVJfU0VQQVJBVE9SX1M7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFdlYkNv
cmU6OmZpbGVuYW1lVG9TdHJpbmcoZXh0ZW5zaW9uRGVmYXVsdERpcmVjdG9yeSkpOworfQorCit2
b2lkIFdlYkd0a0V4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVzKFZlY3RvcjxTdHJpbmc+JiBt
b2R1bGVzKQoreworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZURpcmVjdG9yaWVzOworICAgIGFw
cGVuZE1vZHVsZURpcmVjdG9yaWVzKG1vZHVsZURpcmVjdG9yaWVzKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1vZHVsZURpcmVjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShtb2R1bGVE
aXJlY3Rvcmllc1tpXSwgU3RyaW5nKCIqLnNvIikpOworICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICBpZiAoV2ViQ29y
ZTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tqXSkpCisgICAgICAgICAgICAgICAgbW9kdWxlcy5h
cHBlbmQobW9kdWxlUGF0aHNbal0pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYkd0
a0V4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKK3sK
KyAgICBtX2V4dGVuc2lvbiA9IGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoYnVu
ZGxlKSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRoczsKKyAgICBzY2FuTW9kdWxl
cyhtb2R1bGVQYXRocyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5z
aXplKCk7ICsraSkgeworICAgICAgICBPd25QdHI8TW9kdWxlPiBtb2R1bGUgPSBhZG9wdFB0cihu
ZXcgTW9kdWxlKG1vZHVsZVBhdGhzW2ldKSk7CisgICAgICAgIGlmICghbW9kdWxlLT5sb2FkKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBXZWJLaXRXZWJFeHRlbnNpb25Jbml0
aWFsaXplRnVuY3Rpb24gaW5pdGlhbGl6ZUZ1bmN0aW9uID0KKyAgICAgICAgICAgIG1vZHVsZS0+
ZnVuY3Rpb25Qb2ludGVyPFdlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbj4oIndl
YmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUiKTsKKyAgICAgICAgaWYgKCFpbml0aWFsaXpl
RnVuY3Rpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBGSVhNRTogY2hl
Y2sgd2UgZG9uJ3QgbG9hZCB0aGUgc2FtZSBtb2R1bGUgdHdpY2UgZnJvbSBkaWZmZXJlbnQgcGF0
aHMuCisgICAgICAgIG1fZXh0ZW5zaW9uTW9kdWxlcy5hcHBlbmQobW9kdWxlLmxlYWtQdHIoKSk7
CisgICAgICAgIGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5nZXQoKSk7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42ODQ0ZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyX2gKKyNkZWZpbmUgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcl9oCisKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIk1vZHVsZS5oIgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNp
b24gV2ViS2l0V2ViRXh0ZW5zaW9uOworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkd0a0V4dGVuc2lvbk1hbmFnZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkd0a0V4dGVuc2lvbk1hbmFnZXIpOworCitw
dWJsaWM6CisgICAgc3RhdGljIFdlYkd0a0V4dGVuc2lvbk1hbmFnZXImIHNoYXJlZCgpOworCisg
ICAgdm9pZCBpbml0aWFsaXplKEluamVjdGVkQnVuZGxlKik7CisKK3ByaXZhdGU6CisgICAgV2Vi
R3RrRXh0ZW5zaW9uTWFuYWdlcigpOworCisgICAgdm9pZCBhcHBlbmRNb2R1bGVEaXJlY3Rvcmll
cyhWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgc2Nhbk1vZHVsZXMoVmVjdG9yPFN0cmluZz4m
KTsKKworICAgIFZlY3RvcjxNb2R1bGUqPiBtX2V4dGVuc2lvbk1vZHVsZXM7CisgICAgR1JlZlB0
cjxXZWJLaXRXZWJFeHRlbnNpb24+IG1fZXh0ZW5zaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGFhZWY5
NjUuLmE2YmM1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NTb3VwLmNwcApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgUExB
VEZPUk0oR1RLKQorI2luY2x1ZGUgIldlYkd0a0V4dGVuc2lvbk1hbmFnZXIuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVT
aXplKFNvdXBDYWNoZSogY2FjaGUpCkBAIC0xNzksNiArMTgzLDE0IEBAIHZvaWQgV2ViUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzCiAgICAgc2V0SWdub3JlVExTRXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJy
b3JzKTsKIAogICAgIFdlYkNvcmU6OmFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhpcywgbGFu
Z3VhZ2VDaGFuZ2VkKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAocGFyYW1ldGVycy5p
bmplY3RlZEJ1bmRsZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIG1faW5qZWN0ZWRCdW5kbGUg
PSBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFN0cmluZygpKTsKKyAgICAgICAgbV9pbmplY3RlZEJ1
bmRsZS0+c2V0U2FuZGJveEV4dGVuc2lvbihTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGFyYW1l
dGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpKTsKKyAgICAgICAgV2ViR3Rr
RXh0ZW5zaW9uTWFuYWdlcjo6c2hhcmVkKCkuaW5pdGlhbGl6ZShtX2luamVjdGVkQnVuZGxlLmdl
dCgpKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1p
bmF0ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggNWFlMjkw
Yy4uM2VmNjdhYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAt
MTgwLDcgKzE4MCw4IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKIAogICAgIChbIyBUaGUg
R1RLKyBBUEkgdXNlIHVwcGVyIGNhc2UsIHVuZGVyc2NvcmUgc2VwYXJhdGVkLCB3b3JkcyBpbgog
ICAgICAgIyBjZXJ0YWluIHR5cGVzIG9mIGVudW1zIChlLmcuIHNpZ25hbHMsIHByb3BlcnRpZXMp
LgotICAgICAgIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrIl0sCisgICAgICAiU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsiLAorICAgICAgIlNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ayJdLAogICAgICBbIi1yZWFkYWJpbGl0eS9l
bnVtX2Nhc2luZyJdKSwKIAogICAgIChbIyBIZWFkZXIgZmlsZXMgaW4gRm9yd2FyZGluZ0hlYWRl
cnMgaGF2ZSBubyBoZWFkZXIgZ3VhcmRzIG9yCkBAIC0zMjksNyArMzMwLDkgQEAgX1NLSVBQRURf
RklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgICMgZXhjZXB0IHRob3NlIGVuZGluZyBpbiAuLi5Q
cml2YXRlLmggYXJlIEdUSysgQVBJIGhlYWRlcnMsCiAgICAgIyB3aGljaCBkaWZmZXIgZ3JlYXRs
eSBmcm9tIFdlYktpdCBjb2Rpbmcgc3R5bGUuCiAgICAgcmUuY29tcGlsZShyJ1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdCg/IS4qUHJpdmF0ZVwuaCkuKlwuaCQnKSwKLSAg
ICAnU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oJ10KKyAgICByZS5j
b21waWxlKHInU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdCg/IS4qUHJpdmF0ZVwuaCkuKlwuaCQnKSwKKyAgICAnU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oJywKKyAgICAnU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgnXQogCiAjIEZp
bGVzIHRvIHNraXAgdGhhdCBhcmUgbW9yZSBjb21tb24gb3Igb2J2aW91cy4KICMKZGlmZiAtLWdp
dCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9j
CmluZGV4IGZkODQ4NzkuLjM0NTJlYjQgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1n
dGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwpAQCAtNzcsNiArNzcsOCBAQCBk
ZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3Bh
dGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInKSArIGFyZ3MpKQogICAgIGRlZiBzcmNf
cGF0aCgqYXJncyk6CiAgICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKKyAg
ICBkZWYgaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIGNv
bW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdDInLCAnV2ViUHJvY2Vzcycs
ICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKIAogICAgIHhyZWZfZGVw
cyA9IGdldF9jb21tb25feHJlZl9kZXBzKCkuY29weSgpCiAgICAgeHJlZl9kZXBzLnVwZGF0ZSh7
CkBAIC04OCw3ICs5MCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAgICAgICdt
b2R1bGVfbmFtZScgOiAnd2Via2l0Mmd0aycsCiAgICAgICAgICdkb2NfZGlyJyA6IHNyY19wYXRo
KCdkb2NzJyksCiAgICAgICAgICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1
bWVudGF0aW9uJywgJ3dlYmtpdDJndGsnKSwKLSAgICAgICAgJ3NvdXJjZV9kaXJzJyA6IFtzcmNf
cGF0aCgpLCBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycsICd3ZWJraXQyJyldLAor
ICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGRlcml2ZWRfc291cmNlc19wYXRo
KCd3ZWJraXQyZ3RrJywgJ3dlYmtpdDInKSwgaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRoKCldLAog
ICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJn
dGsnLCAnaW5jbHVkZScpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9z
b3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IGRlcml2ZWRfc291cmNlc19wYXRoKCdpbmNsdWRlJykgKyBcCkBAIC05Niw2ICs5OCw3IEBAIGRl
ZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNf
cGF0aCgpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1
bGVfcGF0aHMoeHJlZl9kZXBzKSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Io
c3JjX3BhdGgoJypQcml2YXRlLmgnKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
Yi5nbG9iKGluamVjdGVkX2J1bmRsZV9zcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJypDbGllbnQqJykpICsgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0V2ViVmll
d0Jhc2VBY2Nlc3NpYmxlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5n
bG9iKHNyY19wYXRoKCdXZWJLaXQyR3RrQXV0aGVudGljYXRpb25EaWFsb2cuKicpKSArIFwK
</data>
<flag name="review"
          id="198349"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181029</attachid>
            <date>2013-01-02 06:47:45 -0800</date>
            <delta_ts>2013-01-10 02:49:58 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-web-extensions3.diff</filename>
            <type>text/plain</type>
            <size>66862</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4ZWU4ZTBlLi43ZTMzODBm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMDEtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBsb2FkaW5nIHdlYiBwcm9jZXNzIGV4dGVu
c2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTYzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZCB3ZWJraXQyX3dlYl9leHRlbnNpb25faF9hcGkuCisgICAgICAg
ICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogRXhwb3J0IFdlYkd0a0V4dGVuc2lv
bk1hbmFnZXIKKyAgICAgICAgc3ltYm9scyByZXF1aXJlZCBieSB0aGUgaW5qZWN0ZWQgYnVuZGxl
IGxpYi4KKwogMjAxMy0wMS0wMSAgS3dhbmdZb25nIENob2kgIDxreTAuY2hvaUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgTUhUTUwgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFk
MTk4MWIuLmIzMjRmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OCBAQAorMjAxMy0wMS0wMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGxvYWRpbmcgd2ViIHByb2Nlc3MgZXh0ZW5zaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjMxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogTGluayB0byBsaWJXZWJDb3JlRE9NLmxhIGFuZCBidWlsZCBpbmplY3RlZAorICAgICAgICBi
dW5kbGUgbGliLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMg
dG8gY29tcGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHA6CisgICAgICAgIChpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSk6IEhlbHBlciBmdW50
aW9uIHRvIGdldCB0aGUgaW5qZWN0ZWQKKyAgICAgICAgYnVuZGxlIGRpcmVjdG9yeS4KKyAgICAg
ICAgKGluamVjdGVkQnVuZGxlRmlsZW5hbWUpOiBIZWxwZXIgZnVudGlvbiB0byBnZXQgdGhlIGlu
amVjdGVkIHVuZGxlCisgICAgICAgIGxpYnJhcnkgZnVsbCBwYXRoLgorICAgICAgICAoY3JlYXRl
RGVmYXVsdFdlYkNvbnRleHQpOiBDcmVhdGUgdGhlIFdlYkNvbnRleHQgd2l0aCBhbiBpbmplY3Rl
ZAorICAgICAgICBidW5kbGUgcGF0aC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCk6IFJl
dHVybiB0aGUgaWRlbnRpZmllciBvZiB0aGUgd2ViCisgICAgICAgIHBhZ2UgYXNzb2NpYXRlZCB0
byB0aGUgd2ViIHZpZXcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWw6IEFkZCBuZXcgY2hhcHRlciBmb3IKKyAgICAgICAgd2ViIGV4dGVuc2lvbnMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDogQWRkIG5l
dyBzeW1ib2xzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50
eXBlczogQWRkIG5ldyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9H
TlVtYWtlZmlsZS5hbTogQWRkIG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0ZW5zaW9ucy5jcHA6IEFk
ZGVkLgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvbik6CisgICAgICAgIChiZWZvcmVBbGwpOgor
ICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dl
YkV4dGVuc2lvblRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKG1ldGhvZENhbGxDYWxsYmFjayk6
CisgICAgICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXRUZXN0QnVzOjpXZWJLaXRUZXN0QnVzKToKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6
OnJ1bik6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjp+V2ViS2l0VGVzdEJ1cyk6CisgICAgICAg
IChXZWJLaXRUZXN0QnVzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKG9uTmFtZUFwcGVhcmVkKToK
KyAgICAgICAgKFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcC4KKyAgICAgICAgKFdlYktp
dFRlc3RCdXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJFeHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJFeHRlbnNp
b25Qcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VDcmVhdGVkKTogQ3Jl
YXRlIGEgV2ViS2l0V2ViUGFnZSBmb3IgdGhlCisgICAgICAgIG5ld2x5IGNyYXRlZCBwYWdlIGFu
ZCBlbWl0IFdlYktpdFdlYkV4dGVuc2lvbjo6cGFnZS1jcmVhdGVkCisgICAgICAgIHNpZ25hbHMu
CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJveSk6IFJlbW92ZSB0aGUgcGFn
ZSBmcm9tIHRoZSBtYXAuCisgICAgICAgIChkaWRDcmVhdGVQYWdlKTogQ2FsbCB3ZWJraXRXZWJF
eHRlbnNpb25QYWdlQ3JlYXRlZCgpLgorICAgICAgICAod2lsbERlc3Ryb3lQYWdlKTogQ2FsbCB3
ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJveSgpLgorICAgICAgICAod2Via2l0V2ViRXh0ZW5z
aW9uQ3JlYXRlKTogQ3JlYXRlIGEgbmV3IFdlYktpdFdlYkV4dGVuc2lvbiBhbmQKKyAgICAgICAg
aW5pdGlhbGl6ZSB0aGUgaW5qZWN0ZWQgYnVuZGxlIGNsaWVudC4KKyAgICAgICAgKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKTogUmV0dXJuIHRoZSBXZWJLaXRXZWJQYWdlIGZvciB0aGUK
KyAgICAgICAgZ2l2ZW4gcGFnZSBpZGVudGlmaWVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaDogQWRkZWQuCisgICAgICAg
IChfV2ViS2l0V2ViRXh0ZW5zaW9uKToKKyAgICAgICAgKF9XZWJLaXRXZWJFeHRlbnNpb25DbGFz
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkV4dGVuc2lvbkRlZmluZXMuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uY3BwLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAod2Vi
a2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6
IENyZWF0ZSBhIG5ldyBXZWJLaXRXZWJQYWdlLgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX2dl
dF9kb21fZG9jdW1lbnQpOiBSZXR1cm4gdGhlIFdlYktpdERPTURvY3VtZW50CisgICAgICAgIGxv
YWRlZCBpbiB0aGUgV2ViS2l0V2ViUGFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRX
ZWJQYWdlKToKKyAgICAgICAgKF9XZWJLaXRXZWJQYWdlQ2xhc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5j
cHAuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13
ZWItZXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4
dGVuc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5z
aW9uTWFuYWdlcjo6c2hhcmVkKTogUmV0dXJuIHRoZSBnbG9iYWwgc2hhcmVkCisgICAgICAgIGlu
c3RhbmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFuYWdl
cjo6YXBwZW5kTW9kdWxlRGlyZWN0b3JpZXMpOiBBZGQKKyAgICAgICAgZGlyZWN0b3JpZXMgdG8g
c2NhbiBmb3IgbW9kdWxlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFuYWdl
cjo6c2Nhbk1vZHVsZXMpOiBTY2FuIGZvciBtb2R1bGVzLgorICAgICAgICAoV2ViS2l0OjpXZWJH
dGtFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKTogTG9hZCBhbmQgaW5pdGlhbGl6ZQorICAg
ICAgICB0aGUgbW9kdWxlcyBmb3VuZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJHdGtF
eHRlbnNpb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYkd0
a0luamVjdGVkQnVuZGxlTWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0aWFs
aXplKTogSW5pdGlhbGl6ZSBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyLgorCiAyMDEzLTAxLTAyICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAg
UmVncmVzc2lvbihyMTM4NjA3KTogQ2F1c2VzIGNyYXNoZXMgcmVsYXRlZCB0byBXZWJJY29uRGF0
YWJhc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAwYTdjMzk2Li5lZDM0NTllIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEtMDIgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0
IGZvciBsb2FkaW5nIHdlYiBwcm9jZXNzIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTYzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChtYWluKTog
U2V0IFdFQktJVF9JTkpFQ1RFRF9CVU5ETEUgZW52IHZhciB0byB1c2UgdGhlIGluamVjdGVkCisg
ICAgICAgIGJ1bmRsZSBsaWIgZnJvbSBidWlsZCBkaXIuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5OiBBZGQgZXhjZXB0aW9ucyBmb3IgR1RLKyBBUEkKKyAgICAg
ICAgbG9jYXRlZCBpbiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsuCisgICAgICAg
ICogZ3RrL2dlbmVyYXRlLWd0a2RvYzoKKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMpOiBT
Y2FuIGFsc28gZmlsZXMgaW4KKyAgICAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrIHRvIGdlbmVyYXRlIEFQSSBkb2NzLgorICAgICAgICAoZ2V0X3dlYmtpdDJfb3B0aW9ucy5p
bmplY3RlZF9idW5kbGVfc3JjX3BhdGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8KKyAgICAgICAgYnVp
bGQgcGF0aHMgaW4gV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrLgorCiAyMDEzLTAx
LTAxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAg
ICAgICAgW1dLMl0gcGx1Z2lucy9jbGlja2luZy1taXNzaW5nLXBsdWdpbi1maXJlcy1kZWxlZ2F0
ZS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZp
bGUuYW0KaW5kZXggMTg2MjE4OS4uOTc1NDQ4ZiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0K
KysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTk4LDYgKzk4LDcgQEAgd2Via2l0Ml9zb3VyY2VzIDo9
CiB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgOj0KIHdlYmtpdDJndGtfaF9hcGkgOj0KIHdlYmtpdDJn
dGtfYnVpbHRfc291cmNlcyA6PQord2Via2l0Ml93ZWJfZXh0ZW5zaW9uX2hfYXBpIDo9CiB3ZWJr
aXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgOj0KIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3NfYnVp
bHRfc291cmNlcyA6PQogd2Via2l0dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2VzIDo9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDNhNWY3YjkuLmU1YjQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMyw3ICsyMyw4IEBAIG5vZGlzdF9saWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAog
CURlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay93ZWJraXQyL1dlYktpdFZlcnNpb24u
aAogCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAotCSQod2Via2l0Mmd0a19oX2Fw
aSkKKwkkKHdlYmtpdDJndGtfaF9hcGkpIFwKKwkkKHdlYmtpdDJfd2ViX2V4dGVuc2lvbl9oX2Fw
aSkKIAogbm9kaXN0X2xpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBf
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VUkNFUyA9IFwKIAkkKHdlYmtpdDJf
YnVpbHRfc291cmNlcykgXApAQCAtODcsNiArODgsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRH
VEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQ
UAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUg
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXApAQCAtMTAzLDE3ICsxMDUsMjEgQEAgbGlid2Vi
a2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5P
Ul9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UgXAotICAgIC1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9hdGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9hdGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIg
XAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVkZSBcCiAJ
LUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3RrIFwKIAkt
SSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJndGsvaW5jbHVk
ZSBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3Rr
L3dlYmtpdDIgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Vi
a2l0MmV4dGVuc2lvbi9pbmNsdWRlIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL2luY2x1ZGUvSmF2YVNjcmlwdENvcmUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVkZS9XZWJDb3JlIFwKIAktSSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUvV2ViS2l0MiBcCisJLUkkKHRvcF9idWls
ZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tIFwKIAktRExJQkVYRUNESVI9XCIiJChsaWJl
eGVjZGlyKSJcIiBcCisJLURMSUJESVI9XCIiJChsaWJkaXIpIlwiIFwKKwktREJVSUxESU5HX1dF
QktJVCBcCiAJLURXRUJLSVQyX0NPTVBJTEFUSU9OIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VT
Uz0xIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKQEAgLTE3Nyw2ICsxODMsNyBAQCBlbmRpZgog
CiBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtf
QVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkFERCArPSBcCiAJbGliamF2YXNjcmlwdGNvcmVndGst
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lP
TkAubGEgXAorCWxpYldlYkNvcmVET00ubGEgXAogCWxpYldlYkNvcmVHdGsubGEgXAogCSQoQ0FJ
Uk9fTElCUykgXAogCSQoQ0xVVFRFUl9MSUJTKSBcCkBAIC0yODEsNyArMjg4LDEzIEBAICQoR0VO
U09VUkNFU19XRUJLSVQyKS93ZWJraXQyZ3RrL2luY2x1ZGUvd2Via2l0MjogJChsaWJ3ZWJraXQy
Z3RraW5jbHVkZV9IRUFERVJTCiAJJChBTV9WX0dFTilta2RpciAtcCAkKEdFTlNPVVJDRVNfV0VC
S0lUMikvd2Via2l0Mmd0ay9pbmNsdWRlIFwKIAkmJiBsbiAtbiAtcyAtZiAke3NoZWxsIHB3ZH0v
JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ayAkQAogCi1CVUlMVF9TT1VSQ0VTICs9ICQoR0VO
U09VUkNFU19XRUJLSVQyKS93ZWJraXQyZ3RrL2luY2x1ZGUvd2Via2l0MgorJChHRU5TT1VSQ0VT
X1dFQktJVDIpL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZS93ZWJraXQyOiAkKGxpYndlYmtpdDJn
dGtpbmNsdWRlX0hFQURFUlMpCisJJChBTV9WX0dFTilta2RpciAtcCAkKEdFTlNPVVJDRVNfV0VC
S0lUMikvd2Via2l0MmV4dGVuc2lvbi9pbmNsdWRlIFwKKwkmJiBsbiAtbiAtcyAtZiAke3NoZWxs
IHB3ZH0vJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsgJEAKKwor
QlVJTFRfU09VUkNFUyArPSBcCisJJChHRU5TT1VSQ0VTX1dFQktJVDIpL3dlYmtpdDJleHRlbnNp
b24vaW5jbHVkZS93ZWJraXQyIFwKKwkkKEdFTlNPVVJDRVNfV0VCS0lUMikvd2Via2l0Mmd0ay9p
bmNsdWRlL3dlYmtpdDIKIAogdnBhdGggJS5tZXNzYWdlcy5pbiA9IFwKIAkkKFdlYktpdDIpL1Bs
dWdpblByb2Nlc3MgXApAQCAtNDc3LDYgKzQ5MCwzMiBAQCBsaWJXZWJDb3JlR3RrMl9sYV9DUFBG
TEFHUyA9IFwKIAkkKFhSRU5ERVJfQ0ZMQUdTKSBcCiAJJChYVF9DRkxBR1MpCiAKKyMgSW5qZWN0
ZWQgQnVuZGxlCitpbmplY3RlZGJ1bmRsZWRpciA9ICQobGliZGlyKS93ZWJraXQyZ3RrLTMuMC9p
bmplY3RlZC1idW5kbGUKK2luamVjdGVkYnVuZGxlX0xUTElCUkFSSUVTID0gbGlid2Via2l0Mmd0
a2luamVjdGVkYnVuZGxlLmxhCisKK2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZV9sYV9TT1VS
Q0VTID0gXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0luamVjdGVkQnVu
ZGxlTWFpbi5jcHAKKworbGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlX2xhX0xERkxBR1MgPSBc
CisJJChub191bmRlZmluZWQpIFwKKwktbW9kdWxlIFwKKwktYXZvaWQtdmVyc2lvbgorCitsaWJ3
ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGVfbGFfQ1BQRkxBR1MgPSBcCisJLWZuby1zdHJpY3QtYWxp
YXNpbmcgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtIFwKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYyBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1
bmRsZSBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRl
IFwKKwkkKGdsb2JhbF9jcHBmbGFncykgXAorCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwK
KwkkKEdMSUJfQ0ZMQUdTKQorCiAjIFNlcmlhbGl6ZSBsaW5raW5nIG9mIHRoZSBwbHVnaW4gcHJv
Y2VzcyB3aXRoIGJvdGggd2Via2l0IGxpYnJhcmllcy4KIHBsdWdpbl9wcm9jZXNzX2Zvcl9kZXAg
PSBQcm9ncmFtcy9XZWJLaXRQbHVnaW5Qcm9jZXNzCiAkKHBsdWdpbl9wcm9jZXNzX2Zvcl9kZXAp
OiBsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19B
UElfTUlOT1JfVkVSU0lPTkAubGEgbGlid2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggZDc3Njg1Zi4uNDczMjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0xMzIsNiArMTMyLDEyIEBAIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGllcy5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAogCit3ZWJraXQyX3dlYl9leHRl
bnNpb25faF9hcGkgKz0gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmggXAorCSQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaCBc
CisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdl
Yi1leHRlbnNpb24uaAorCiB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIFwK
QEAgLTk4OCw2ICs5OTQsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0
ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmNwcCBcCkBAIC0xMDMwLDYgKzEwMzgs
MTQgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuaCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVNjcmlwdFdvcmxkLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmggXAor
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRX
ZWJFeHRlbnNpb25Qcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmggXAorCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYlBhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAg
XApAQCAtMTE4Miw4ICsxMTk4LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIFwK
LSAgICBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3Np
YmlsaXR5T2JqZWN0LmggXAotICAgIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9h
dGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmggXAorCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlP
YmplY3RBdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
Ykluc3BlY3Rvckd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUGFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZDE5Yjk5My4uZTU4
MjExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKQEAgLTE2NiwxMiArMTY2LDI3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4
dENsYXNzCiAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET1dOTE9BRCk7CiB9CiAK
K3N0YXRpYyBDU3RyaW5nIGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkKK3sKKyAgICBpZiAoY29u
c3QgY2hhciogYnVuZGxlRGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9JTkpFQ1RFRF9CVU5E
TEVfUEFUSCIpKQorICAgICAgICByZXR1cm4gYnVuZGxlRGlyZWN0b3J5OworCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGluamVjdGVkQnVuZGxlUGF0aCA9IExJQkRJUiIiR19ESVJfU0VQQVJBVE9S
X1Mid2Via2l0Mmd0ay0iV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORyIiR19ESVJfU0VQQVJB
VE9SX1MiaW5qZWN0ZWQtYnVuZGxlIkdfRElSX1NFUEFSQVRPUl9TOworICAgIHJldHVybiBpbmpl
Y3RlZEJ1bmRsZVBhdGg7Cit9CisKK3N0YXRpYyBDU3RyaW5nIGluamVjdGVkQnVuZGxlRmlsZW5h
bWUoKQoreworICAgIEdPd25QdHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFt
ZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgpLmRhdGEoKSwgImxpYndlYmtpdDJndGtpbmplY3Rl
ZGJ1bmRsZS5zbyIsIE5VTEwpKTsKKyAgICByZXR1cm4gYnVuZGxlRmlsZW5hbWUuZ2V0KCk7Cit9
CisKIHN0YXRpYyBncG9pbnRlciBjcmVhdGVEZWZhdWx0V2ViQ29udGV4dChncG9pbnRlcikKIHsK
ICAgICBzdGF0aWMgR1JlZlB0cjxXZWJLaXRXZWJDb250ZXh0PiB3ZWJDb250ZXh0ID0gYWRvcHRH
UmVmKFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRF
WFQsIE5VTEwpKSk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250
ZXh0LT5wcml2OwogCi0gICAgcHJpdi0+Y29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShTdHJp
bmcoKSk7CisgICAgcHJpdi0+Y29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShXZWJDb3JlOjpm
aWxlbmFtZVRvU3RyaW5nKGluamVjdGVkQnVuZGxlRmlsZW5hbWUoKS5kYXRhKCkpKTsKICAgICBw
cml2LT5yZXF1ZXN0TWFuYWdlciA9IHdlYkNvbnRleHQtPnByaXYtPmNvbnRleHQtPnNvdXBSZXF1
ZXN0TWFuYWdlclByb3h5KCk7CiAgICAgcHJpdi0+Y29udGV4dC0+c2V0Q2FjaGVNb2RlbChDYWNo
ZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwogICAgIHByaXYtPnRsc0Vycm9yc1BvbGljeSA9IFdF
QktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDZhNGU2NGUuLmIzNmYyY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCkBAIC0xODQ4LDYgKzE4NDgsMjIgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9y
ZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVSSVJlcXVlc3QqIHJlcXUKIH0K
IAogLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQ6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQgdGhlIGlkZW50aWZpZXIgb2YgdGhlICNXZWJLaXRX
ZWJQYWdlIGNvcnJlc3BvbmRpbmcgdG8KKyAqIHRoZSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJl
dHVybnM6IHRoZSBwYWdlIElEIG9mIEB3ZWJfdmlldy4KKyAqLworZ3VpbnQ2NCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3BhZ2VfaWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOworCisgICAgcmV0
dXJuIGdldFBhZ2Uod2ViVmlldyktPnBhZ2VJRCgpOworfQorCisvKioKICAqIHdlYmtpdF93ZWJf
dmlld19nZXRfdGl0bGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXgg
NDIxMTBlYy4uYjY3OWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjYxLDYgKzI2MSw5IEBAIHdlYmtpdF93ZWJfdmlld19z
dG9wX2xvYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJ
VF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VC
S0lUX0FQSSBndWludDY0Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIFdF
QktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYl92aWV3X2dldF90aXRsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA2ZTk3Mjg0Li43YzZjNjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwKQEAgLTQzLDYgKzQzLDEyIEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L1dlYktpdFNlY3VyaXR5TWFuYWdlci54bWwiLz4KICAgPC9jaGFwdGVyPgogCisgIDxjaGFwdGVy
PgorICAgIDx0aXRsZT5XZWIgRXh0ZW5zaW9uczwvdGl0bGU+CisgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdFdlYkV4dGVuc2lvbi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0V2ViUGFnZS54bWwiLz4KKyAgPC9jaGFwdGVyPgorCiAgIDxpbmRleCBpZD0iaW5k
ZXgtYWxsIj4KICAgICA8dGl0bGU+SW5kZXg8L3RpdGxlPgogICA8L2luZGV4PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQKaW5kZXggMTI4ZTJiNS4uMGY5ZmEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0CkBAIC05Niw2ICs5Niw3IEBAIHdlYmtpdF93ZWJfdmlld19nb19iYWNrCiB3ZWJr
aXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQKIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQKIHdl
YmtpdF93ZWJfdmlld19yZWxvYWQKIHdlYmtpdF93ZWJfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hl
CiB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nCkBAIC05MjcsMyArOTI4LDQyIEBAIFdFQktJ
VF9TRUNVUklUWV9NQU5BR0VSX0dFVF9DTEFTUwogV2ViS2l0U2VjdXJpdHlNYW5hZ2VyUHJpdmF0
ZQogd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRXZWJFeHRlbnNpb248L0ZJTEU+CitXZWJLaXRXZWJFeHRlbnNpb24K
K1dlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgord2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X3BhZ2UKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRXZWJFeHRlbnNpb25D
bGFzcworV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTgorV0VCS0lUX1dFQl9FWFRFTlNJT04KK1dF
QktJVF9JU19XRUJfRVhURU5TSU9OCitXRUJLSVRfV0VCX0VYVEVOU0lPTl9DTEFTUworV0VCS0lU
X0lTX1dFQl9FWFRFTlNJT05fQ0xBU1MKK1dFQktJVF9XRUJfRVhURU5TSU9OX0dFVF9DTEFTUwor
Cis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZQord2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5X
ZWJLaXRXZWJQYWdlPC9GSUxFPgorV2ViS2l0V2ViUGFnZQord2Via2l0X3dlYl9wYWdlX2dldF9k
b21fZG9jdW1lbnQKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRXZWJQYWdlQ2xhc3MK
K1dFQktJVF9UWVBFX1dFQl9QQUdFCitXRUJLSVRfV0VCX1BBR0UKK1dFQktJVF9JU19XRUJfUEFH
RQorV0VCS0lUX1dFQl9QQUdFX0NMQVNTCitXRUJLSVRfSVNfV0VCX1BBR0VfQ0xBU1MKK1dFQktJ
VF9XRUJfUEFHRV9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYlBh
Z2VQcml2YXRlCit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
cyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
cwppbmRleCA0ZDg4NDNlLi5lYjBmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yMSwzICsyMSw1IEBA
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9tZW51X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fZ2V0X3R5cGUKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlCit3ZWJraXRf
d2ViX3BhZ2VfZ2V0X3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvR05VbWFrZWZpbGUuYW0KaW5kZXggYThmOTk3Ni4uZmEwZjY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZp
bGUuYW0KQEAgLTEyLDYgKzEyLDcgQEAgVEVTVF9QUk9HUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0
MkFQSVRlc3RzL1Rlc3RQcmludGluZyBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RS
ZXNvdXJjZXMgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0U1NMIFwKKwlQcm9ncmFt
cy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYkV4dGVuc2lvbnMgXAogCVByb2dyYW1zL1dlYktpdDJB
UElUZXN0cy9UZXN0V2ViS2l0VmVyc2lvbiBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rl
c3RXZWJLaXRGYXZpY29uRGF0YWJhc2UgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0
V2ViS2l0RmluZENvbnRyb2xsZXIgXApAQCAtMzQsNiArMzUsOCBAQCB3ZWJraXQyX3Rlc3RzX2Nw
cGZsYWdzID0gXAogCS1EV0VCS0lUX1NSQ19ESVI9XCIke3NoZWxsIHB3ZH0vJHtzcmNkaXJ9XCIg
XAogCS1EV0VCS0lUX0RFUklWRURfU1JDX0RJUj1cIiR7c2hlbGwgcHdkfS8ke3RvcF9idWlsZGRp
cn0vRGVyaXZlZFNvdXJjZXNcIiBcCiAJLURXRUJLSVRfVEVTVF9QTFVHSU5fRElSPVwiJHtzaGVs
bCBwd2R9LyR7dG9wX2J1aWxkZGlyfS9UZXN0TmV0c2NhcGVQbHVnaW4vLmxpYnNcIiBcCisJLURX
RUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVI9XCIke3NoZWxsIHB3ZH0vJHt0b3BfYnVpbGRk
aXJ9L0xpYnJhcmllcy9XZWJFeHRlbnNpb25zLy5saWJzXCIgXAorCS1EV0VCS0lUX0lOSkVDVEVE
X0JVTkRMRV9QQVRIPVwiJHtzaGVsbCBwd2R9LyQodG9wX2J1aWxkZGlyKS8ubGlic1wiIFwKIAkk
KGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UgXApAQCAtNzAsNiArNzMsOCBAQCBub2luc3Rf
TFRMSUJSQVJJRVMgKz0gTGlicmFyaWVzL2xpYldlYktpdDJBUElUZXN0Q29yZS5sYQogTGlicmFy
aWVzX2xpYldlYktpdDJBUElUZXN0Q29yZV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RTZXJ2
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRU
ZXN0U2VydmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RNYWluLmNwcCBcCkBAIC03OCw2ICs4MywzMCBAQCBMaWJyYXJpZXNfbGliV2ViS2l0MkFQSVRl
c3RDb3JlX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvV2ViVmlld1Rlc3QuaAogTGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0Q29yZV9sYV9D
UFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcHBmbGFncykKIAorbm9pbnN0X0xUTElCUkFSSUVT
ICs9IExpYnJhcmllcy9XZWJFeHRlbnNpb25zL2xpYldlYkV4dGVuc2lvblRlc3QubGEKK0xpYnJh
cmllc19XZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lvblRlc3RfbGFfU09VUkNFUyA9IFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNw
cAorCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJFeHRlbnNpb25UZXN0X2xhX0xERkxB
R1MgPSBcCisJLXJwYXRoICR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvTGlicmFyaWVzL1dl
YkV4dGVuc2lvbnMvLmxpYnMgXAorCSQobm9fdW5kZWZpbmVkKSBcCisJLWF2b2lkLXZlcnNpb24g
XAorCS1tb2R1bGUKKworTGlicmFyaWVzX1dlYkV4dGVuc2lvbnNfbGliV2ViRXh0ZW5zaW9uVGVz
dF9sYV9DUFBGTEFHUyA9IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJl
eHRlbnNpb24vaW5jbHVkZSBcCisJLURXRUJLSVQyX0NPTVBJTEFUSU9OIFwKKwkkKHdlYmtpdDJf
dGVzdHNfY3BwZmxhZ3MpCisKK0xpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lv
blRlc3RfbGFfQ1hYRkxBR1MgPSBcCisgICAgICAgICQoZ2xvYmFsX2N4eGZsYWdzKQorCitMaWJy
YXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJFeHRlbnNpb25UZXN0X2xhX0NGTEFHUyA9IFwKKyAg
ICAgICAgJChnbG9iYWxfY2ZsYWdzKQorCisKIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWNlcnQucGVtIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9yZXNvdXJjZXMvdGVzdC1rZXku
cGVtIFwKQEAgLTIxNCw0ICsyNDMsMTAgQEAgUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RT
U0xfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCiBQcm9ncmFtc19XZWJLaXQy
QVBJVGVzdHNfVGVzdFNTTF9MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFByb2dyYW1z
X1dlYktpdDJBUElUZXN0c19UZXN0U1NMX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFn
cykKIAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX1NPVVJDRVMg
PSBcCisgICAgICAgIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJFeHRlbnNpb25zLmNwcAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNp
b25zX0NQUEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3JhbXNfV2ViS2l0
MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRk
KQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJFeHRlbnNpb25zX0xERkxBR1MgPSAk
KHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogZW5kaWYgIyBFTkFCTEVfV0VCS0lUMgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uY3BwCmlu
ZGV4IDIwNDRhYjUuLmMxZGNlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2
LCAwKTsKICAgICBnX3NldGVudigiV0VCS0lUX0VYRUNfUEFUSCIsIFdFQktJVF9FWEVDX1BBVEgs
IEZBTFNFKTsKKyAgICBnX3NldGVudigiV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIIiwgV0VC
S0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRILCBGQUxTRSk7CiAgICAgZ190ZXN0X2J1Z19iYXNlKCJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKIAogICAgIHJlZ2lzdGVyR1Jlc291cmNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0V2ViRXh0ZW5zaW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MGY5YTE4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK3N0YXRpYyBXZWJLaXRUZXN0QnVzKiBidXM7
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb24oV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkPjx0aXRsZT5XZWJL
aXRHVEsrIFdlYiBFeHRlbnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT48L2JvZHk+PC9o
dG1sPiIsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgR1Jl
ZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KCJvcmcu
d2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9X
ZWJFeHRlbnNpb25UZXN0IiAsICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgdGVz
dC0+bV9tYWluTG9vcCkpOworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHJlc3VsdCA9IGFkb3B0R1Jl
ZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKAorICAgICAgICBwcm94eS5nZXQoKSwKKyAgICAgICAg
IkdldFRpdGxlIiwKKyAgICAgICAgZ192YXJpYW50X25ldygiKHQpIiwgd2Via2l0X3dlYl92aWV3
X2dldF9wYWdlX2lkKHRlc3QtPm1fd2ViVmlldykpLAorICAgICAgICBHX0RCVVNfQ0FMTF9GTEFH
U19OT05FLAorICAgICAgICAtMSwgMCwgMCkpOworICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisKKyAg
ICBjb25zdCBjaGFyKiB0aXRsZTsKKyAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIigm
cykiLCAmdGl0bGUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0aXRsZSwgPT0sICJXZWJLaXRHVEsr
IFdlYiBFeHRlbnNpb25zIFRlc3QiKTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIGdf
c2V0ZW52KCJXRUJLSVRfV0VCX0VYVEVOU0lPTlNfUEFUSCIsIFdFQktJVF9URVNUX1dFQl9FWFRF
TlNJT05TX0RJUiwgRkFMU0UpOworICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVzKCk7CisgICAg
aWYgKCFidXMtPnJ1bigpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9tLWRvY3VtZW50LXRpdGxlIiwgdGVzdFdlYkV4dGVu
c2lvbik7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworICAgIGRlbGV0ZSBidXM7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNp
b25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYkV4
dGVuc2lvblRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZjY4
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
PGdpby9naW8uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg+Cisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorCitzdGF0aWMgY29uc3QgY2hhciBpbnRy
b3NwZWN0aW9uWE1MW10gPQorICAgICI8bm9kZT4iCisgICAgIiA8aW50ZXJmYWNlIG5hbWU9J29y
Zy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QnPiIKKyAgICAiICA8bWV0aG9kIG5hbWU9J0dl
dFRpdGxlJz4iCisgICAgIiAgIDxhcmcgdHlwZT0ndCcgbmFtZT0ncGFnZUlEJyBkaXJlY3Rpb249
J2luJy8+IgorICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3RpdGxlJyBkaXJlY3Rpb249J291
dCcvPiIKKyAgICAiICA8L21ldGhvZD4iCisgICAgIiA8L2ludGVyZmFjZT4iCisgICAgIjwvbm9k
ZT4iOworCitzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiwg
Y29uc3QgY2hhciogc2VuZGVyLCBjb25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBHVmFyaWFudCogcGFyYW1ldGVy
cywgR0RCdXNNZXRob2RJbnZvY2F0aW9uKiBpbnZvY2F0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkK
K3sKKyAgICBpZiAoZ19zdHJjbXAwKGludGVyZmFjZU5hbWUsICJvcmcud2Via2l0Lmd0ay5XZWJF
eHRlbnNpb25UZXN0IikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZ19zdHJjbXAwKG1l
dGhvZE5hbWUsICJHZXRUaXRsZSIpKSB7CisgICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAg
ICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHQpIiwgJnBhZ2VJRCk7CisKKyAgICAgICAg
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTih1c2Vy
RGF0YSk7CisgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZShleHRlbnNpb24sIHBhZ2VJRCk7CisgICAgICAgIGlmICghcGFnZSkgeworICAg
ICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl9lcnJvcigKKyAgICAgICAg
ICAgICAgICBpbnZvY2F0aW9uLCBHX0RCVVNfRVJST1IsIEdfREJVU19FUlJPUl9JTlZBTElEX0FS
R1MsCisgICAgICAgICAgICAgICAgIkludmFsaWQgcGFnZSBJRDogJSJHX0dVSU5UNjRfRk9STUFU
LCBwYWdlSUQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2Vi
S2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSk7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdGl0bGUod2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfdGl0bGUoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9u
X3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIocykiLCB0aXRsZS5nZXQo
KSkpOworICAgIH0KK30KKworc3RhdGljIGNvbnN0IEdEQnVzSW50ZXJmYWNlVlRhYmxlIGludGVy
ZmFjZVZpcnR1YWxUYWJsZSA9IHsKKyAgICBtZXRob2RDYWxsQ2FsbGJhY2ssIDAsIDAKK307CisK
K3N0YXRpYyB2b2lkIGJ1c0FjcXVpcmVkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBzdGF0aWMg
R0RCdXNOb2RlSW5mbyAqaW50cm9zcGVjdGlvbkRhdGEgPSAwOworICAgIGlmICghaW50cm9zcGVj
dGlvbkRhdGEpCisgICAgICAgIGludHJvc3BlY3Rpb25EYXRhID0gZ19kYnVzX25vZGVfaW5mb19u
ZXdfZm9yX3htbChpbnRyb3NwZWN0aW9uWE1MLCAwKTsKKworICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICB1bnNpZ25lZCByZWdpc3RyYXRpb25JRCA9IGdfZGJ1c19jb25uZWN0aW9uX3Jl
Z2lzdGVyX29iamVjdCgKKyAgICAgICAgY29ubmVjdGlvbiwKKyAgICAgICAgIi9vcmcvd2Via2l0
L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgaW50cm9zcGVjdGlvbkRhdGEtPmludGVy
ZmFjZXNbMF0sCisgICAgICAgICZpbnRlcmZhY2VWaXJ0dWFsVGFibGUsCisgICAgICAgIGdfb2Jq
ZWN0X3JlZih1c2VyRGF0YSksCisgICAgICAgIHN0YXRpY19jYXN0PEdEZXN0cm95Tm90aWZ5Pihn
X29iamVjdF91bnJlZiksCisgICAgICAgICZlcnJvci5vdXRQdHIoKSk7CisgICAgaWYgKCFyZWdp
c3RyYXRpb25JRCkKKyAgICAgICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gcmVnaXN0ZXIgb2JqZWN0
OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworfQorCitleHRlcm4gIkMiIHZvaWQgd2Via2l0X3dl
Yl9leHRlbnNpb25faW5pdGlhbGl6ZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sK
KyAgICBnX2J1c19vd25fbmFtZSgKKyAgICAgICAgR19CVVNfVFlQRV9TRVNTSU9OLAorICAgICAg
ICAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIEdfQlVTX05BTUVf
T1dORVJfRkxBR1NfTk9ORSwKKyAgICAgICAgYnVzQWNxdWlyZWRDYWxsYmFjaywKKyAgICAgICAg
MCwgMCwKKyAgICAgICAgZ19vYmplY3RfcmVmKGV4dGVuc2lvbiksCisgICAgICAgIHN0YXRpY19j
YXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJlZikpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjg0ODQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1
cy5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKKwor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworV2ViS2l0VGVzdEJ1czo6V2ViS2l0VGVzdEJ1cygpCisgICAgOiBtX3BpZCgt
MSkKK3sKK30KKworYm9vbCBXZWJLaXRUZXN0QnVzOjpydW4oKQoreworICAgIC8vIEZJWE1FOiBV
c2UgR1Rlc3REQnVzIHdoZW4gd2UgYnVtcCBnbGliIHRvIDIuMzQuCisgICAgR093blB0cjxjaGFy
PiBkYnVzTGF1bmNoKGdfZmluZF9wcm9ncmFtX2luX3BhdGgoImRidXMtbGF1bmNoIikpOworICAg
IGlmICghZGJ1c0xhdW5jaCkgeworICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERC
VVMgZGFlbW9uOiBkYnVzLWxhdW5jaCBub3QgZm91bmQgaW4gcGF0aCIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgR093blB0cjxjaGFyPiBvdXRwdXQ7CisgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgIGlmICghZ19zcGF3bl9jb21tYW5kX2xpbmVfc3luYyhkYnVz
TGF1bmNoLmdldCgpLCAmb3V0cHV0Lm91dFB0cigpLCAwLCAwLCAmZXJyb3Iub3V0UHRyKCkpKSB7
CisgICAgICAgIGdfd2FybmluZygiRXJyb3Igc3RhcnRpbmcgREJVUyBkYWVtb246ICVzIiwgZXJy
b3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgU3RyaW5n
IG91dHB1dFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgob3V0cHV0LmdldCgpKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBsaW5lczsKKyAgICBvdXRwdXRTdHJpbmcuc3BsaXQoVUNoYXIoJ1xuJyksIC8q
IGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBsaW5lcyk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgeworICAgICAgICBjaGFyKioga2V5VmFsdWUgPSBn
X3N0cnNwbGl0KGxpbmVzW2ldLnV0ZjgoKS5kYXRhKCksICI9IiwgMik7CisgICAgICAgIGdfYXNz
ZXJ0X2NtcHVpbnQoZ19zdHJ2X2xlbmd0aChrZXlWYWx1ZSksID09LCAyKTsKKyAgICAgICAgaWYg
KCFnX3N0cmNtcDAoa2V5VmFsdWVbMF0sICJEQlVTX1NFU1NJT05fQlVTX0FERFJFU1MiKSkgewor
ICAgICAgICAgICAgbV9hZGRyZXNzID0ga2V5VmFsdWVbMV07CisgICAgICAgICAgICBnX3NldGVu
digiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIiwga2V5VmFsdWVbMV0sIFRSVUUpOworICAgICAg
ICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoa2V5VmFsdWVbMF0sICJEQlVTX1NFU1NJT05fQlVTX1BJ
RCIpKQorICAgICAgICAgICAgbV9waWQgPSBnX2FzY2lpX3N0cnRvbGwoa2V5VmFsdWVbMV0sIDAs
IDEwKTsKKyAgICAgICAgZ19zdHJmcmVldihrZXlWYWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJu
IG1fcGlkID4gMDsKK30KKworV2ViS2l0VGVzdEJ1czo6fldlYktpdFRlc3RCdXMoKQoreworICAg
IGdfdW5zZXRlbnYoIkRCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyIpOworCisgICAgaWYgKG1fcGlk
ICE9IC0xKQorICAgICAgICBraWxsKG1fcGlkLCBTSUdURVJNKTsKK30KKworR0RCdXNDb25uZWN0
aW9uKiBXZWJLaXRUZXN0QnVzOjpjb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworCisgICAgZ19hc3NlcnQoIW1f
YWRkcmVzcy5pc051bGwoKSk7CisgICAgbV9jb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfZGJ1c19j
b25uZWN0aW9uX25ld19mb3JfYWRkcmVzc19zeW5jKG1fYWRkcmVzcy5kYXRhKCksCisgICAgICAg
IHN0YXRpY19jYXN0PEdEQnVzQ29ubmVjdGlvbkZsYWdzPihHX0RCVVNfQ09OTkVDVElPTl9GTEFH
U19BVVRIRU5USUNBVElPTl9DTElFTlQgfCBHX0RCVVNfQ09OTkVDVElPTl9GTEFHU19NRVNTQUdF
X0JVU19DT05ORUNUSU9OKSwKKyAgICAgICAgMCwgMCwgMCkpOworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb24uZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uTmFtZUFwcGVhcmVkKEdEQnVzQ29ubmVj
dGlvbiosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7Cisg
ICAgZ19tYWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxvb3AqPih1c2VyRGF0YSkpOwor
fQorCitHREJ1c1Byb3h5KiBXZWJLaXRUZXN0QnVzOjpjcmVhdGVQcm94eShjb25zdCBjaGFyKiBz
ZXJ2aWNlTmFtZSwgY29uc3QgY2hhciogb2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgR01haW5Mb29wKiBtYWluTG9vcCkKK3sKKyAgICB1bnNpZ25lZCB3YXRjaGVySUQgPSBn
X2J1c193YXRjaF9uYW1lX29uX2Nvbm5lY3Rpb24oY29ubmVjdGlvbigpLCBzZXJ2aWNlTmFtZSwg
R19CVVNfTkFNRV9XQVRDSEVSX0ZMQUdTX05PTkUsIG9uTmFtZUFwcGVhcmVkLCAwLCBtYWluTG9v
cCwgMCk7CisgICAgZ19tYWluX2xvb3BfcnVuKG1haW5Mb29wKTsKKyAgICBnX2J1c191bndhdGNo
X25hbWUod2F0Y2hlcklEKTsKKworICAgIEdEQnVzUHJveHkqIHByb3h5ID0gZ19kYnVzX3Byb3h5
X25ld19zeW5jKAorICAgICAgICBjb25uZWN0aW9uKCksCisgICAgICAgIEdfREJVU19QUk9YWV9G
TEFHU19ET19OT1RfQVVUT19TVEFSVCwKKyAgICAgICAgMCwgLy8gR0RCdXNJbnRlcmZhY2VJbmZv
CisgICAgICAgIHNlcnZpY2VOYW1lLAorICAgICAgICBvYmplY3RQYXRoLAorICAgICAgICBpbnRl
cmZhY2VOYW1lLAorICAgICAgICAwLCAvLyBHQ2FuY2VsbGFibGUKKyAgICAgICAgMCk7CisgICAg
Z19hc3NlcnQocHJveHkpOworICAgIHJldHVybiBwcm94eTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDlkOWJiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5oCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBXZWJLaXRUZXN0QnVzX2gKKyNkZWZpbmUgV2ViS2l0VGVzdEJ1c19oCisKKyNpbmNsdWRl
IDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworY2xhc3MgV2ViS2l0VGVzdEJ1cyB7CitwdWJsaWM6Cisg
ICAgV2ViS2l0VGVzdEJ1cygpOworICAgIHZpcnR1YWwgfldlYktpdFRlc3RCdXMoKTsKKworICAg
IGJvb2wgcnVuKCk7CisgICAgR0RCdXNQcm94eSogY3JlYXRlUHJveHkoY29uc3QgY2hhciogc2Vy
dmljZU5hbWUsIGNvbnN0IGNoYXIqIG9iamVjdFBhdGgsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5h
bWUsIEdNYWluTG9vcCopOworCitwcml2YXRlOgorICAgIEdEQnVzQ29ubmVjdGlvbiogY29ubmVj
dGlvbigpOworCisgICAgcGlkX3QgbV9waWQ7CisgICAgQ1N0cmluZyBtX2FkZHJlc3M7CisgICAg
R1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKK307CisKKyNlbmRpZiAvLyBX
ZWJLaXRUZXN0QnVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRhZGFiNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0V2ViRXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBh
Z2VQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2VudW0geworICAg
IFBBR0VfQ1JFQVRFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCit0eXBlZGVmIEhhc2hNYXA8
V2ViUGFnZSosIEdSZWZQdHI8V2ViS2l0V2ViUGFnZT4gPiBXZWJQYWdlTWFwOworCitzdHJ1Y3Qg
X1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUgeworICAgIFdlYlBhZ2VNYXAgcGFnZXM7Cit9Owor
CitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRXZWJFeHRlbnNpb24sIHdlYmtpdF93ZWJfZXh0ZW5zaW9uLCBHX1RZ
UEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9jbGFzc19pbml0
KFdlYktpdFdlYkV4dGVuc2lvbkNsYXNzKiBrbGFzcykKK3sKKyAgICAvKioKKyAgICAgKiBXZWJL
aXRXZWJFeHRlbnNpb246OnBhZ2UtY3JlYXRlZDoKKyAgICAgKiBAZXh0ZW5zaW9uOiB0aGUgI1dl
YktpdFdlYkV4dGVuc2lvbiBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBA
d2ViX3BhZ2U6IHRoZSAjV2ViS2l0V2ViUGFnZSBjcmVhdGVkCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBuZXcgI1dlYktpdFdlYlBhZ2UgaXMgY3JlYXRlZCBp
bgorICAgICAqIHRoZSBXZWIgUHJvY2Vzcy4KKyAgICAgKi8KKyAgICBzaWduYWxzW1BBR0VfQ1JF
QVRFRF0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJwYWdlLWNyZWF0ZWQiLAorICAgICAgICBH
X1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAg
ICAgICAwLCAwLCAwLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAor
ICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1BBR0UpOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25QYWdlQ3JlYXRlZChXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViUGFnZSogcGFnZSkKK3sKKyAgICBHUmVmUHRyPFdlYktp
dFdlYlBhZ2U+IHdlYlBhZ2UgPSBhZG9wdEdSZWYod2Via2l0V2ViUGFnZUNyZWF0ZShwYWdlKSk7
CisgICAgZXh0ZW5zaW9uLT5wcml2LT5wYWdlcy5hZGQocGFnZSwgd2ViUGFnZSk7CisgICAgZ19z
aWduYWxfZW1pdChleHRlbnNpb24sIHNpZ25hbHNbUEFHRV9DUkVBVEVEXSwgMCwgd2ViUGFnZS5n
ZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VEZXN0cm95KFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJQYWdlKiBwYWdlKQoreworICAgIGV4dGVu
c2lvbi0+cHJpdi0+cGFnZXMucmVtb3ZlKHBhZ2UpOworfQorCitzdGF0aWMgdm9pZCBkaWRDcmVh
dGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgd2Via2l0V2ViRXh0ZW5zaW9uUGFnZUNyZWF0ZWQoV0VC
S0lUX1dFQl9FWFRFTlNJT04oY2xpZW50SW5mbyksIHRvSW1wbChwYWdlKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtpdFdlYkV4dGVuc2lv
blBhZ2VEZXN0cm95KFdFQktJVF9XRUJfRVhURU5TSU9OKGNsaWVudEluZm8pLCB0b0ltcGwocGFn
ZSkpOworfQorCitXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJ
bmplY3RlZEJ1bmRsZSogYnVuZGxlKQoreworICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9F
WFRFTlNJT04sIE5VTEwpKTsKKworICAgIFdLQnVuZGxlQ2xpZW50IHdrQnVuZGxlQ2xpZW50ID0g
eworICAgICAgICBrV0tCdW5kbGVDbGllbnRDdXJyZW50VmVyc2lvbiwKKyAgICAgICAgZXh0ZW5z
aW9uLCAvLyBjbGllbnRJbmZvCisgICAgICAgIGRpZENyZWF0ZVBhZ2UsCisgICAgICAgIHdpbGxE
ZXN0cm95UGFnZSwKKyAgICAgICAgMCwgLy8gZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cAorICAgICAg
ICAwLCAvLyBkaWRSZWNlaXZlTWVzc2FnZQorICAgICAgICAwIC8vIGRpZFJlY2VpdmVNZXNzYWdl
VG9QYWdlCisgICAgfTsKKyAgICBXS0J1bmRsZVNldENsaWVudCh0b0FQSShidW5kbGUpLCAmd2tC
dW5kbGVDbGllbnQpOworCisgICAgcmV0dXJuIGV4dGVuc2lvbjsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZToKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4
dGVuc2lvbgorICogQHBhZ2VfaWQ6IHRoZSBpZGVudGlmaWVyIG9mIHRoZSAjV2ViS2l0V2ViUGFn
ZSB0byBnZXQKKyAqCisgKiBHZXQgdGhlIHdlYiBwYWdlIG9mIHRoZSBnaXZlbiBAcGFnZV9pZC4K
KyAqCisgKiBSZXR1cm5zOiB0aGUgI1dlYktpdFdlYlBhZ2UgZm9yIHRoZSBnaXZlbiBAcGFnZV9p
ZCwgb3IgJU5VTEwgaWYgdGhlCisgKiAgICBpZGVudGlmaWVyIGRvZXNuJ3QgY29ycmVzcG9uZCB0
byBhbiBleHNpdGluZyB3ZWIgcGFnZS4KKyAqLworV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X3BhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW50NjQg
cGFnZUlEKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5T
SU9OKGV4dGVuc2lvbiksIDApOworCisgICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSogcHJp
diA9IGV4dGVuc2lvbi0+cHJpdjsKKyAgICBXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBwcml2LT5wYWdlcy5lbmQoKTsKKyAgICBmb3IgKFdlYlBhZ2VNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcHJpdi0+cGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpZiAo
aXQtPmtleS0+cGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1
ZS5nZXQoKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNDI0NzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX1dF
Ql9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0V2ViRXh0ZW5zaW9uX2gK
KyNkZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OICAgICAgICAgICAgKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRVhURU5TSU9OKG9iaikgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9FWFRF
TlNJT04sIFdlYktpdFdlYkV4dGVuc2lvbikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRVhURU5T
SU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9FWFRFTlNJT04pKQorI2RlZmluZSBXRUJLSVRfV0VCX0VYVEVOU0lPTl9DTEFT
UyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfRVhURU5TSU9OLCBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcykpCisjZGVmaW5lIFdFQktJ
VF9JU19XRUJfRVhURU5TSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04pKQorI2RlZmluZSBXRUJLSVRfV0VC
X0VYVEVOU0lPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9i
aiksICBXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcykp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb24gICAgICAgIFdlYktpdFdlYkV4
dGVuc2lvbjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyAgIFdlYktp
dFdlYkV4dGVuc2lvbkNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvblBy
aXZhdGUgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZTsKKworLyoqCisgKiBXZWJLaXRXZWJFeHRl
bnNpb25Jbml0aWFsaXplRnVuY3Rpb246CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRl
bnNpb24KKyAqCisgKiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJl
IGNhbGxlZCB0byBpbml0aWFsaXplCisgKiB0aGUgd2ViIGV4dGVuc2lvbiB3aGVuIHRoZSB3ZWIg
cHJvY2VzcyBzdGFydHMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKiBXZWJLaXRXZWJFeHRlbnNpb25J
bml0aWFsaXplRnVuY3Rpb24pIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbik7CisKK3N0
cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdl
YktpdFdlYkV4dGVuc2lvblByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkV4
dGVuc2lvbkNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VC
S0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgKHZvaWQpOworCitX
RUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgord2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Ug
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbkRlZmluZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFhNjM1OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19X
RUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJ
TEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg+IGNh
biBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRXZWJFeHRl
bnNpb25EZWZpbmVzX2gKKyNkZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uRGVmaW5lc19oCisKKyNp
bmNsdWRlIDxnbGliLmg+CisKKyNpZmRlZiBHX09TX1dJTjMyCisjICAgIGlmZGVmIEJVSUxESU5H
X1dFQktJVAorIyAgICAgICAgZGVmaW5lIFdFQktJVF9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQp
CisjICAgIGVsc2UKKyMgICAgICAgIGRlZmluZSBXRUJLSVRfQVBJIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQorIyAgICBlbmRpZgorIyAgICBkZWZpbmUgV0VCS0lUX09CU09MRVRFX0FQSSBXRUJLSVRf
QVBJCisjZWxzZQorIyAgICBkZWZpbmUgV0VCS0lUX0FQSSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKQorIyAgICBkZWZpbmUgV0VCS0lUX09CU09MRVRFX0FQSSBXRUJLSVRf
QVBJIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKQorI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJL
aXRXZWJFeHRlbnNpb25EZWZpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZmN2QxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uUHJp
dmF0ZV9oCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIldlYktpdFdl
YkV4dGVuc2lvbi5oIgorCitXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNy
ZWF0ZShXZWJLaXQ6OkluamVjdGVkQnVuZGxlKik7CisKKyNlbmRpZiAvLyBXZWJLaXRXZWJFeHRl
bnNpb25Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDIxM2M2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YlBhZ2UuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgi
CisKKyNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworc3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CisgICAgV2Vi
UGFnZSogd2ViUGFnZTsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3
ZWJraXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
cGFnZV9jbGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCit7Cit9CisKK1dlYktp
dFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBX
ZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfUEFHRSwgTlVMTCkpOworICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdl
OworICAgIHJldHVybiBwYWdlOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50OgorICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQYWdlCisgKgorICogR2V0IHRo
ZSAjV2ViS2l0RE9NRG9jdW1lbnQgY3VycmVudGx5IGxvYWRlZCBpbiBAd2ViX3BhZ2UKKyAqCisg
KiBSZXR1cm5zOiB0aGUgI1dlYktpdERPTURvY3VtZW50IGN1cnJlbnRseSBsb2FkZWQsIG9yICVO
VUxMCisgKiAgICBpZiBubyBkb2N1bWVudCBpcyBjdXJyZW50bHkgbG9hZGVkLgorICovCitXZWJL
aXRET01Eb2N1bWVudCogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQoV2ViS2l0V2Vi
UGFnZSogd2ViUGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1BBR0Uod2ViUGFnZSksIDApOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IHdlYlBhZ2UtPnBy
aXYtPndlYlBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiBraXQoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ4ZjYyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChf
X1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4g
Y2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFdlYlBh
Z2VfaAorI2RlZmluZSBXZWJLaXRXZWJQYWdlX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmg+CisjaW5jbHVk
ZSA8d2Via2l0ZG9tL3dlYmtpdGRvbS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VC
S0lUX1RZUEVfV0VCX1BBR0UgICAgICAgICAgICAod2Via2l0X3dlYl9wYWdlX2dldF90eXBlKCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfUEFHRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZSkp
CisjZGVmaW5lIFdFQktJVF9JU19XRUJfUEFHRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUEFHRSkpCisjZGVmaW5lIFdFQktJ
VF9XRUJfUEFHRV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFz
cyksICBXRUJLSVRfVFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZUNsYXNzKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9QQUdFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QQUdFKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9QQUdF
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9UWVBFX1dFQl9QQUdFLCBXZWJLaXRXZWJQYWdlQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViUGFnZSAgICAgICAgV2ViS2l0V2ViUGFnZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJQYWdlQ2xhc3MgICBXZWJLaXRXZWJQYWdlQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViUGFnZVByaXZhdGUgV2ViS2l0V2ViUGFnZVByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0
V2ViUGFnZSB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJQYWdlUHJpdmF0
ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViUGFnZUNsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9w
YWdlX2dldF90eXBlICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdERPTURvY3Vt
ZW50ICoKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3
ZWJfcGFnZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wZDNkYTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKQEAgLTAsMCArMSwy
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktp
dFdlYlBhZ2VQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViUGFnZVByaXZhdGVfaAorCisjaW5j
bHVkZSAiV2ViS2l0V2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworV2ViS2l0V2Vi
UGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJLaXQ6OldlYlBhZ2UqKTsKKworI2VuZGlmIC8v
IFdlYktpdFdlYlBhZ2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlZjM1YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XZWJLaXRXZWJFeHRl
bnNpb25faAorI2RlZmluZSBfX1dlYktpdFdlYkV4dGVuc2lvbl9oCisKKyNkZWZpbmUgX19XRUJL
SVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCisKKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdl
YkV4dGVuc2lvbi5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgorCisjdW5k
ZWYgX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWEyOWFmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9u
TWFuYWdlci5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR3RrRXh0ZW5zaW9u
TWFuYWdlci5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJXS0J1
bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciYgV2ViR3RrRXh0
ZW5zaW9uTWFuYWdlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYkd0
a0V4dGVuc2lvbk1hbmFnZXIsIGV4dGVuc2lvbk1hbmFnZXIsICgpKTsKKyAgICByZXR1cm4gZXh0
ZW5zaW9uTWFuYWdlcjsKK30KKworV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6V2ViR3RrRXh0ZW5z
aW9uTWFuYWdlcigpCit7Cit9CisKK3ZvaWQgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6YXBwZW5k
TW9kdWxlRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQoreworICAgIFN0
cmluZyBleHRlbnNpb25QYXRocyhnZXRlbnYoIldFQktJVF9XRUJfRVhURU5TSU9OU19QQVRIIikp
OworICAgIGlmICghZXh0ZW5zaW9uUGF0aHMuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IHBhdGhzOworICAgICAgICBleHRlbnNpb25QYXRocy5zcGxpdChVQ2hhcignOicpLCAv
KiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworICAgICAgICBkaXJlY3Rvcmll
cy5hcHBlbmQocGF0aHMpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleHRlbnNp
b25EZWZhdWx0RGlyZWN0b3J5ID0gTElCRElSIiJHX0RJUl9TRVBBUkFUT1JfUyJ3ZWJraXRndGst
IldFQktJVEdUS19BUElfVkVSU0lPTl9TVFJJTkciIkdfRElSX1NFUEFSQVRPUl9TIndlYi1leHRl
bnNpb25zIkdfRElSX1NFUEFSQVRPUl9TOworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChXZWJDb3Jl
OjpmaWxlbmFtZVRvU3RyaW5nKGV4dGVuc2lvbkRlZmF1bHREaXJlY3RvcnkpKTsKK30KKwordm9p
ZCBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpzY2FuTW9kdWxlcyhWZWN0b3I8U3RyaW5nPiYgbW9k
dWxlcykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVEaXJlY3RvcmllczsKKyAgICBhcHBl
bmRNb2R1bGVEaXJlY3Rvcmllcyhtb2R1bGVEaXJlY3Rvcmllcyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtb2R1bGVEaXJlY3Rvcmllcy5zaXplKCk7ICsraSkgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobW9kdWxlRGly
ZWN0b3JpZXNbaV0sIFN0cmluZygiKi5zbyIpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgaWYgKFdlYkNvcmU6
OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbal0pKQorICAgICAgICAgICAgICAgIG1vZHVsZXMuYXBw
ZW5kKG1vZHVsZVBhdGhzW2pdKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKK3sKKyAgICBt
X2V4dGVuc2lvbiA9IGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUodG9JbXBsKGJ1
bmRsZSkpKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzOworICAgIHNjYW5Nb2R1
bGVzKG1vZHVsZVBhdGhzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIE93blB0cjxNb2R1bGU+IG1vZHVsZSA9IGFkb3B0UHRy
KG5ldyBNb2R1bGUobW9kdWxlUGF0aHNbaV0pKTsKKyAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFdlYktpdFdlYkV4dGVuc2lvbklu
aXRpYWxpemVGdW5jdGlvbiBpbml0aWFsaXplRnVuY3Rpb24gPQorICAgICAgICAgICAgbW9kdWxl
LT5mdW5jdGlvblBvaW50ZXI8V2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uPigi
d2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZSIpOworICAgICAgICBpZiAoIWluaXRpYWxp
emVGdW5jdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEZJWE1FOiBj
aGVjayB3ZSBkb24ndCBsb2FkIHRoZSBzYW1lIG1vZHVsZSB0d2ljZSBmcm9tIGRpZmZlcmVudCBw
YXRocy4KKyAgICAgICAgbV9leHRlbnNpb25Nb2R1bGVzLmFwcGVuZChtb2R1bGUubGVha1B0cigp
KTsKKyAgICAgICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKG1fZXh0ZW5zaW9uLmdldCgpKTsKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjEzYjc3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYkd0
a0V4dGVuc2lvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyX2gKKwor
I2luY2x1ZGUgIk1vZHVsZS5oIgorI2luY2x1ZGUgIldLQnVuZGxlLmgiCisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dSZWZQdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvbiBX
ZWJLaXRXZWJFeHRlbnNpb247CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcik7CisKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciYgc2hhcmVkKCk7CisKKyAgICB2
b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYpOworCitwcml2YXRlOgorICAgIFdlYkd0a0V4dGVu
c2lvbk1hbmFnZXIoKTsKKworICAgIHZvaWQgYXBwZW5kTW9kdWxlRGlyZWN0b3JpZXMoVmVjdG9y
PFN0cmluZz4mKTsKKyAgICB2b2lkIHNjYW5Nb2R1bGVzKFZlY3RvcjxTdHJpbmc+Jik7CisKKyAg
ICBWZWN0b3I8TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1bGVzOworICAgIEdSZWZQdHI8V2ViS2l0
V2ViRXh0ZW5zaW9uPiBtX2V4dGVuc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTk4MDUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrSW5qZWN0ZWRCdW5kbGVN
YWluLmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkd0a0V4dGVuc2lvbk1h
bmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCisjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lO
MzIpCitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKK2V4dGVybiAiQyIK
KyNlbmRpZgordm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5
cGVSZWYpCit7CisgICAgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6c2hhcmVkKCkuaW5pdGlhbGl6
ZShidW5kbGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
ciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggY2YxMWE0OC4uMjAwYTQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yMzMsNiArMjMzLDggQEAgX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXY7CiBfWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVT
aGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24xNGFkZEF1dGhvclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRl
bnRzRUVFOwogX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2OworX1pONldlYktpdDIyV2Vi
R3RrRXh0ZW5zaW9uTWFuYWdlcjEwaW5pdGlhbGl6ZUVQSzE0T3BhcXVlV0tCdW5kbGU7CitfWk42
V2ViS2l0MjJXZWJHdGtFeHRlbnNpb25NYW5hZ2VyNnNoYXJlZEV2OwogCiBsb2NhbDoKIF9aKjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA1MDk3NGFlLi41NzVkZWIyIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC05LDYgKzksNyBAQCBQcm9ncmFt
c19NaW5pQnJvd3Nlcl9DUFBGTEFHUyA9IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL3dlYmtpdDJndGsgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvd2Via2l0Mmd0ay9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIk
e3NoZWxsIHB3ZH0vJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKKwktRFdFQktJVF9JTkpF
Q1RFRF9CVU5ETEVfUEFUSD1cIiR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvLmxpYnNcIiBc
CiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCiAJ
JChHTElCX0NGTEFHUykgXApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggYzczNjdkZi4uMTdlNDZmNCAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvbWFpbi5jCkBAIC0yMjYsNiArMjI2LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkKICNpZmRlZiBXRUJLSVRfRVhFQ19QQVRICiAgICAgZ19zZXRlbnYoIldF
QktJVF9JTlNQRUNUT1JfUEFUSCIsIFdFQktJVF9FWEVDX1BBVEggInJlc291cmNlcy9pbnNwZWN0
b3IiLCBGQUxTRSk7CiAjZW5kaWYgLyogV0VCS0lUX0VYRUNfUEFUSCAqLworICAgIGdfc2V0ZW52
KCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgiLCBXRUJLSVRfSU5KRUNURURfQlVORExFX1BB
VEgsIEZBTFNFKTsKIAogICAgIC8vIEVuYWJsZSB0aGUgZmF2aWNvbiBkYXRhYmFzZSwgYnkgc3Bl
Y2lmeWluZyB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1
bHQoKSwgTlVMTCk7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXgg
NWFlMjkwYy4uM2VmNjdhYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5w
eQpAQCAtMTgwLDcgKzE4MCw4IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKIAogICAgIChb
IyBUaGUgR1RLKyBBUEkgdXNlIHVwcGVyIGNhc2UsIHVuZGVyc2NvcmUgc2VwYXJhdGVkLCB3b3Jk
cyBpbgogICAgICAgIyBjZXJ0YWluIHR5cGVzIG9mIGVudW1zIChlLmcuIHNpZ25hbHMsIHByb3Bl
cnRpZXMpLgotICAgICAgIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrIl0sCisgICAg
ICAiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsiLAorICAgICAgIlNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ayJdLAogICAgICBbIi1yZWFkYWJp
bGl0eS9lbnVtX2Nhc2luZyJdKSwKIAogICAgIChbIyBIZWFkZXIgZmlsZXMgaW4gRm9yd2FyZGlu
Z0hlYWRlcnMgaGF2ZSBubyBoZWFkZXIgZ3VhcmRzIG9yCkBAIC0zMjksNyArMzMwLDkgQEAgX1NL
SVBQRURfRklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgICMgZXhjZXB0IHRob3NlIGVuZGluZyBp
biAuLi5Qcml2YXRlLmggYXJlIEdUSysgQVBJIGhlYWRlcnMsCiAgICAgIyB3aGljaCBkaWZmZXIg
Z3JlYXRseSBmcm9tIFdlYktpdCBjb2Rpbmcgc3R5bGUuCiAgICAgcmUuY29tcGlsZShyJ1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdCg/IS4qUHJpdmF0ZVwuaCkuKlwuaCQn
KSwKLSAgICAnU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oJ10KKyAg
ICByZS5jb21waWxlKHInU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdCg/IS4qUHJpdmF0ZVwuaCkuKlwuaCQnKSwKKyAgICAnU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oJywKKyAgICAnU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgnXQog
CiAjIEZpbGVzIHRvIHNraXAgdGhhdCBhcmUgbW9yZSBjb21tb24gb3Igb2J2aW91cy4KICMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUt
Z3RrZG9jCmluZGV4IDRmZDQ0YmMuLmM5ZDY3NmEgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwpAQCAtNzcsNiArNzcs
OCBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICByZXR1cm4gY29tbW9uLmJ1
aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInKSArIGFyZ3MpKQogICAgIGRl
ZiBzcmNfcGF0aCgqYXJncyk6CiAgICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgo
KigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdz
KSkKKyAgICBkZWYgaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0
dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdDInLCAnV2ViUHJv
Y2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKIAogICAgIHhy
ZWZfZGVwcyA9IGdldF9jb21tb25feHJlZl9kZXBzKCkuY29weSgpCiAgICAgeHJlZl9kZXBzLnVw
ZGF0ZSh7CkBAIC04OCw3ICs5MCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAg
ICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0Mmd0aycsCiAgICAgICAgICdkb2NfZGlyJyA6IHNy
Y19wYXRoKCdkb2NzJyksCiAgICAgICAgICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRo
KCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdDJndGsnKSwKLSAgICAgICAgJ3NvdXJjZV9kaXJzJyA6
IFtzcmNfcGF0aCgpLCBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycsICd3ZWJraXQy
JyldLAorICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGRlcml2ZWRfc291cmNl
c19wYXRoKCd3ZWJraXQyZ3RrJywgJ3dlYmtpdDInKSwgaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRo
KCldLAogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dl
YmtpdDJndGsnLCAnaW5jbHVkZScpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAn
IC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCdpbmNsdWRlJykgKyBcCkBAIC05Niw2ICs5OCw3
IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAgICAgICAgICAgICAgICAgJyAtSScg
KyBzcmNfcGF0aCgpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2Rv
Y19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9i
Lmdsb2Ioc3JjX3BhdGgoJypQcml2YXRlLmgnKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKGluamVjdGVkX2J1bmRsZV9zcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJypDbGllbnQqJykp
ICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0
Mkd0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLionKSkgKyBc
Cg==
</data>
<flag name="review"
          id="198496"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182101</attachid>
            <date>2013-01-10 02:49:58 -0800</date>
            <delta_ts>2013-01-10 03:29:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-web-exensions-for-landing.diff</filename>
            <type>text/plain</type>
            <size>66777</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NDQwYWU2Li5lNGRjMjZk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMDEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBsb2FkaW5nIHdlYiBwcm9jZXNzIGV4dGVu
c2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTYzMQorCisgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgd2Via2l0Ml93ZWJfZXh0ZW5zaW9uX2hfYXBpLgor
ICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEV4cG9ydCBXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyCisgICAgICAgIHN5bWJvbHMgcmVxdWlyZWQgYnkgdGhlIGluamVjdGVk
IGJ1bmRsZSBsaWIuCisKIDIwMTMtMDEtMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgZ3N0cmVhbWVyIDEuMC41IHRv
IGpoYnVpbGQKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5k
ZXggMTg2MjE4OS4uOTc1NDQ4ZiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05V
bWFrZWZpbGUuYW0KQEAgLTk4LDYgKzk4LDcgQEAgd2Via2l0Ml9zb3VyY2VzIDo9CiB3ZWJraXQy
X2J1aWx0X3NvdXJjZXMgOj0KIHdlYmtpdDJndGtfaF9hcGkgOj0KIHdlYmtpdDJndGtfYnVpbHRf
c291cmNlcyA6PQord2Via2l0Ml93ZWJfZXh0ZW5zaW9uX2hfYXBpIDo9CiB3ZWJraXQyX3BsdWdp
bl9wcm9jZXNzX3NvdXJjZXMgOj0KIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3NfYnVpbHRfc291cmNl
cyA6PQogd2Via2l0dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2VzIDo9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmEy
YzJiNC4uMzJlMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTAxLTEwICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBBZGQgc3VwcG9ydCBmb3IgbG9hZGluZyB3ZWIgcHJvY2VzcyBleHRlbnNpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbTogTGluayB0byBsaWJXZWJDb3JlRE9NLmxhIGFuZCBidWlsZCBpbmplY3RlZAorICAg
ICAgICBidW5kbGUgbGliLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcg
ZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSk6IEhlbHBl
ciBmdW50aW9uIHRvIGdldCB0aGUgaW5qZWN0ZWQKKyAgICAgICAgYnVuZGxlIGRpcmVjdG9yeS4K
KyAgICAgICAgKGluamVjdGVkQnVuZGxlRmlsZW5hbWUpOiBIZWxwZXIgZnVudGlvbiB0byBnZXQg
dGhlIGluamVjdGVkIHVuZGxlCisgICAgICAgIGxpYnJhcnkgZnVsbCBwYXRoLgorICAgICAgICAo
Y3JlYXRlRGVmYXVsdFdlYkNvbnRleHQpOiBDcmVhdGUgdGhlIFdlYkNvbnRleHQgd2l0aCBhbiBp
bmplY3RlZAorICAgICAgICBidW5kbGUgcGF0aC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9p
ZCk6IFJldHVybiB0aGUgaWRlbnRpZmllciBvZiB0aGUgd2ViCisgICAgICAgIHBhZ2UgYXNzb2Np
YXRlZCB0byB0aGUgd2ViIHZpZXcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWw6IEFkZCBuZXcgY2hhcHRlciBmb3IKKyAgICAgICAgd2ViIGV4dGVuc2lvbnMuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDog
QWRkIG5ldyBzeW1ib2xzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay50eXBlczogQWRkIG5ldyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9HTlVtYWtlZmlsZS5hbTogQWRkIG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5jcHA6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0ZW5zaW9ucy5j
cHA6IEFkZGVkLgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvbik6CisgICAgICAgIChiZWZvcmVB
bGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKG1ldGhvZENhbGxDYWxs
YmFjayk6CisgICAgICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXRUZXN0QnVzOjpXZWJLaXRUZXN0QnVzKToKKyAgICAgICAgKFdlYktpdFRl
c3RCdXM6OnJ1bik6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjp+V2ViS2l0VGVzdEJ1cyk6Cisg
ICAgICAgIChXZWJLaXRUZXN0QnVzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKG9uTmFtZUFwcGVh
cmVkKToKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0VGVzdEJ1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYkV4
dGVuc2lvblByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9uUGFnZUNyZWF0ZWQp
OiBDcmVhdGUgYSBXZWJLaXRXZWJQYWdlIGZvciB0aGUKKyAgICAgICAgbmV3bHkgY3JhdGVkIHBh
Z2UgYW5kIGVtaXQgV2ViS2l0V2ViRXh0ZW5zaW9uOjpwYWdlLWNyZWF0ZWQKKyAgICAgICAgc2ln
bmFscy4KKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VEZXN0cm95KTogUmVtb3ZlIHRo
ZSBwYWdlIGZyb20gdGhlIG1hcC4KKyAgICAgICAgKGRpZENyZWF0ZVBhZ2UpOiBDYWxsIHdlYmtp
dFdlYkV4dGVuc2lvblBhZ2VDcmVhdGVkKCkuCisgICAgICAgICh3aWxsRGVzdHJveVBhZ2UpOiBD
YWxsIHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VEZXN0cm95KCkuCisgICAgICAgICh3ZWJraXRXZWJF
eHRlbnNpb25DcmVhdGUpOiBDcmVhdGUgYSBuZXcgV2ViS2l0V2ViRXh0ZW5zaW9uIGFuZAorICAg
ICAgICBpbml0aWFsaXplIHRoZSBpbmplY3RlZCBidW5kbGUgY2xpZW50LgorICAgICAgICAod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UpOiBSZXR1cm4gdGhlIFdlYktpdFdlYlBhZ2UgZm9y
IHRoZQorICAgICAgICBnaXZlbiBwYWdlIGlkZW50aWZpZXIuCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKF9XZWJLaXRXZWJFeHRlbnNpb24pOgorICAgICAgICAoX1dlYktpdFdlYkV4dGVuc2lv
bkNsYXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViRXh0ZW5zaW9uRGVmaW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVh
dGUpOiBDcmVhdGUgYSBuZXcgV2ViS2l0V2ViUGFnZS4KKyAgICAgICAgKHdlYmtpdF93ZWJfcGFn
ZV9nZXRfZG9tX2RvY3VtZW50KTogUmV0dXJuIHRoZSBXZWJLaXRET01Eb2N1bWVudAorICAgICAg
ICBsb2FkZWQgaW4gdGhlIFdlYktpdFdlYlBhZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDogQWRkZWQuCisgICAgICAgIChfV2Vi
S2l0V2ViUGFnZSk6CisgICAgICAgIChfV2ViS2l0V2ViUGFnZUNsYXNzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtp
dC13ZWItZXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYkd0
a0V4dGVuc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0
ZW5zaW9uTWFuYWdlcjo6c2hhcmVkKTogUmV0dXJuIHRoZSBnbG9iYWwgc2hhcmVkCisgICAgICAg
IGluc3RhbmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpXZWJH
dGtFeHRlbnNpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFu
YWdlcjo6YXBwZW5kTW9kdWxlRGlyZWN0b3JpZXMpOiBBZGQKKyAgICAgICAgZGlyZWN0b3JpZXMg
dG8gc2NhbiBmb3IgbW9kdWxlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViR3RrRXh0ZW5zaW9uTWFu
YWdlcjo6c2Nhbk1vZHVsZXMpOiBTY2FuIGZvciBtb2R1bGVzLgorICAgICAgICAoV2ViS2l0OjpX
ZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKTogTG9hZCBhbmQgaW5pdGlhbGl6ZQor
ICAgICAgICB0aGUgbW9kdWxlcyBmb3VuZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJH
dGtFeHRlbnNpb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dl
Ykd0a0luamVjdGVkQnVuZGxlTWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0
aWFsaXplKTogSW5pdGlhbGl6ZSBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyLgorCiAyMDEzLTAxLTEw
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjEzOTE4OSk6IHBpeGVsIGFsaWdubWVudCBtdXN0IGJlIHBlcmZvcm1lZCBpbiBk
ZXZpY2UgdW5pdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNiZTdiZTIuLmEwMTE4YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0yMyw3ICsyMyw4IEBAIG5vZGlzdF9saWJ3ZWJraXQyZ3Rr
aW5jbHVkZV9IRUFERVJTID0gXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay93
ZWJraXQyL1dlYktpdFZlcnNpb24uaAogCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0g
XAotCSQod2Via2l0Mmd0a19oX2FwaSkKKwkkKHdlYmtpdDJndGtfaF9hcGkpIFwKKwkkKHdlYmtp
dDJfd2ViX2V4dGVuc2lvbl9oX2FwaSkKIAogbm9kaXN0X2xpYndlYmtpdDJndGtfQFdFQktJVEdU
S19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09V
UkNFUyA9IFwKIAkkKHdlYmtpdDJfYnVpbHRfc291cmNlcykgXApAQCAtODcsNiArODgsNyBAQCBs
aWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2d0ayBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXApAQCAtMTAz
LDE3ICsxMDUsMjEgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UgXAotICAgIC1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvaW5jbHVkZSBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi93ZWJraXQyZ3RrIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL3dlYmtpdDJndGsvaW5jbHVkZSBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi93ZWJraXQyZ3RrL3dlYmtpdDIgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0MmV4dGVuc2lvbi9pbmNsdWRlIFwKIAktSSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUvSmF2YVNjcmlwdENvcmUgXAog
CS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVkZS9XZWJDb3Jl
IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUvV2Vi
S2l0MiBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tIFwKIAkt
RExJQkVYRUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCisJLURMSUJESVI9XCIiJChsaWJkaXIp
IlwiIFwKKwktREJVSUxESU5HX1dFQktJVCBcCiAJLURXRUJLSVQyX0NPTVBJTEFUSU9OIFwKIAkt
REVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKQEAgLTE3
Nyw2ICsxODMsNyBAQCBlbmRpZgogCiBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkFERCArPSBcCiAJ
bGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCWxpYldlYkNvcmVET00ubGEgXAogCWxpYldl
YkNvcmVHdGsubGEgXAogCSQoQ0FJUk9fTElCUykgXAogCSQoQ0xVVFRFUl9MSUJTKSBcCkBAIC0y
ODIsNyArMjg5LDEzIEBAICQoR0VOU09VUkNFU19XRUJLSVQyKS93ZWJraXQyZ3RrL2luY2x1ZGUv
d2Via2l0MjogJChsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTCiAJJChBTV9WX0dFTilta2Rp
ciAtcCAkKEdFTlNPVVJDRVNfV0VCS0lUMikvd2Via2l0Mmd0ay9pbmNsdWRlIFwKIAkmJiBsbiAt
biAtcyAtZiAke3NoZWxsIHB3ZH0vJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ayAkQAogCi1C
VUlMVF9TT1VSQ0VTICs9ICQoR0VOU09VUkNFU19XRUJLSVQyKS93ZWJraXQyZ3RrL2luY2x1ZGUv
d2Via2l0MgorJChHRU5TT1VSQ0VTX1dFQktJVDIpL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZS93
ZWJraXQyOiAkKGxpYndlYmtpdDJndGtpbmNsdWRlX0hFQURFUlMpCisJJChBTV9WX0dFTilta2Rp
ciAtcCAkKEdFTlNPVVJDRVNfV0VCS0lUMikvd2Via2l0MmV4dGVuc2lvbi9pbmNsdWRlIFwKKwkm
JiBsbiAtbiAtcyAtZiAke3NoZWxsIHB3ZH0vJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsgJEAKKworQlVJTFRfU09VUkNFUyArPSBcCisJJChHRU5TT1VSQ0VTX1dF
QktJVDIpL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZS93ZWJraXQyIFwKKwkkKEdFTlNPVVJDRVNf
V0VCS0lUMikvd2Via2l0Mmd0ay9pbmNsdWRlL3dlYmtpdDIKIAogdnBhdGggJS5tZXNzYWdlcy5p
biA9IFwKIAkkKFdlYktpdDIpL1BsdWdpblByb2Nlc3MgXApAQCAtNDc4LDYgKzQ5MSwzMiBAQCBs
aWJXZWJDb3JlR3RrMl9sYV9DUFBGTEFHUyA9IFwKIAkkKFhSRU5ERVJfQ0ZMQUdTKSBcCiAJJChY
VF9DRkxBR1MpCiAKKyMgSW5qZWN0ZWQgQnVuZGxlCitpbmplY3RlZGJ1bmRsZWRpciA9ICQobGli
ZGlyKS93ZWJraXQyZ3RrLTMuMC9pbmplY3RlZC1idW5kbGUKK2luamVjdGVkYnVuZGxlX0xUTElC
UkFSSUVTID0gbGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLmxhCisKK2xpYndlYmtpdDJndGtp
bmplY3RlZGJ1bmRsZV9sYV9TT1VSQ0VTID0gXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYkd0a0luamVjdGVkQnVuZGxlTWFpbi5jcHAKKworbGlid2Via2l0Mmd0a2luamVjdGVk
YnVuZGxlX2xhX0xERkxBR1MgPSBcCisJJChub191bmRlZmluZWQpIFwKKwktbW9kdWxlIFwKKwkt
YXZvaWQtdmVyc2lvbgorCitsaWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGVfbGFfQ1BQRkxBR1Mg
PSBcCisJLWZuby1zdHJpY3QtYWxpYXNpbmcgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQgXAorCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYyBcCisJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZSBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9pbmNsdWRlIFwKKwkkKGdsb2JhbF9jcHBmbGFncykgXAorCSQoamF2YXNj
cmlwdGNvcmVfY3BwZmxhZ3MpIFwKKwkkKEdMSUJfQ0ZMQUdTKQorCiAjIFNlcmlhbGl6ZSBsaW5r
aW5nIG9mIHRoZSBwbHVnaW4gcHJvY2VzcyB3aXRoIGJvdGggd2Via2l0IGxpYnJhcmllcy4KIHBs
dWdpbl9wcm9jZXNzX2Zvcl9kZXAgPSBQcm9ncmFtcy9XZWJLaXRQbHVnaW5Qcm9jZXNzCiAkKHBs
dWdpbl9wcm9jZXNzX2Zvcl9kZXApOiBsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1Jf
VkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgbGlid2Via2l0Mmd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNjRmNGE4NS4uYzc0YzViZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMzIsNiArMTMyLDEyIEBAIHdlYmtp
dDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2lu
ZG93UHJvcGVydGllcy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aAogCit3ZWJraXQyX3dlYl9leHRlbnNpb25faF9hcGkgKz0gXAorCSQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oIFwKKwkkKFdl
YktpdDIpL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNp
b25EZWZpbmVzLmggXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYlBhZ2UuaCBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAorCiB3ZWJraXQyX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXV0aGVudGljYXRpb25NYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlv
bk1hbmFnZXJNZXNzYWdlcy5oIFwKQEAgLTk5MSw2ICs5OTcsOCBAQCB3ZWJraXQyX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmNwcCBcCisJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmNw
cCBcCkBAIC0xMDMzLDYgKzEwNDEsMTQgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5k
bGUuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVNjcmlwdFdvcmxkLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmggXAorCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViRXh0ZW5zaW9uLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmggXAorCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25E
ZWZpbmVzLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmggXAor
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQt
d2ViLWV4dGVuc2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAgXApAQCAtMTE4NSw4ICsxMjAxLDggQEAgd2Via2l0Ml9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENv
bnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGln
aGxpZ2h0Q29udHJvbGxlci5oIFwKLSAgICBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvYXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmggXAotICAgIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3Np
YmlsaXR5T2JqZWN0LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsv
V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggNjUzOGI1NC4uZDg4MzhjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xNjYsMTIgKzE2Niwy
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJD
b250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfRE9XTkxPQUQpOwogfQogCitzdGF0aWMgQ1N0cmluZyBpbmplY3RlZEJ1bmRsZURpcmVj
dG9yeSgpCit7CisgICAgaWYgKGNvbnN0IGNoYXIqIGJ1bmRsZURpcmVjdG9yeSA9IGdfZ2V0ZW52
KCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgiKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZURp
cmVjdG9yeTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmplY3RlZEJ1bmRsZVBhdGggPSBM
SUJESVIiIkdfRElSX1NFUEFSQVRPUl9TIndlYmtpdDJndGstIldFQktJVEdUS19BUElfVkVSU0lP
Tl9TVFJJTkciIkdfRElSX1NFUEFSQVRPUl9TImluamVjdGVkLWJ1bmRsZSJHX0RJUl9TRVBBUkFU
T1JfUzsKKyAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGVQYXRoOworfQorCitzdGF0aWMgQ1N0cmlu
ZyBpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKCkKK3sKKyAgICBHT3duUHRyPGNoYXI+IGJ1bmRsZUZp
bGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKS5kYXRhKCks
ICJsaWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iLCBOVUxMKSk7CisgICAgcmV0dXJuIGJ1
bmRsZUZpbGVuYW1lLmdldCgpOworfQorCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdl
YkNvbnRleHQoZ3BvaW50ZXIpCiB7CiAgICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4
dD4gd2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9DT05URVhULCBOVUxMKSkpOwogICAgIFdlYktpdFdlYkNvbnRleHRQ
cml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKIAotICAgIHByaXYtPmNvbnRleHQgPSBX
ZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOworICAgIHByaXYtPmNvbnRleHQgPSBXZWJDb250
ZXh0OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhpbmplY3RlZEJ1bmRsZUZpbGVu
YW1lKCkuZGF0YSgpKSk7CiAgICAgcHJpdi0+cmVxdWVzdE1hbmFnZXIgPSB3ZWJDb250ZXh0LT5w
cml2LT5jb250ZXh0LT5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PigpOwog
ICAgIHByaXYtPmNvbnRleHQtPnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93
c2VyKTsKICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExTX0VSUk9SU19QT0xJ
Q1lfSUdOT1JFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCBkMGVjOGM5Li5iMDQzZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTg0OCw2ICsx
ODQ4LDIyIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1CiB9CiAKIC8qKgorICogd2Via2l0X3dl
Yl92aWV3X2dldF9wYWdlX2lkOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgor
ICogR2V0IHRoZSBpZGVudGlmaWVyIG9mIHRoZSAjV2ViS2l0V2ViUGFnZSBjb3JyZXNwb25kaW5n
IHRvCisgKiB0aGUgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXR1cm5zOiB0aGUgcGFnZSBJRCBv
ZiBAd2ViX3ZpZXcuCisgKi8KK2d1aW50NjQgd2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKworICAgIHJldHVybiBnZXRQYWdlKHdlYlZpZXcp
LT5wYWdlSUQoKTsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxlOgogICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQyMTEwZWMuLmI2NzlkOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
QEAgLTI2MSw2ICsyNjEsOSBAQCB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ3VpbnQ2NAord2Vi
a2l0X3dlYl92aWV3X2dldF9wYWdlX2lkICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFy
ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWwKaW5kZXggNmU5NzI4NC4uN2M2YzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC00Myw2
ICs0MywxMiBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRTZWN1cml0eU1hbmFn
ZXIueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAorICA8Y2hhcHRlcj4KKyAgICA8dGl0bGU+V2ViIEV4
dGVuc2lvbnM8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJFeHRl
bnNpb24ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYlBhZ2UueG1s
Ii8+CisgIDwvY2hhcHRlcj4KKwogICA8aW5kZXggaWQ9ImluZGV4LWFsbCI+CiAgICAgPHRpdGxl
PkluZGV4PC90aXRsZT4KICAgPC9pbmRleD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4
IDEyOGUyYjUuLjBmOWZhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtOTYsNiAr
OTYsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjawogd2Via2l0X3dlYl92aWV3X2Nhbl9nb19m
b3J3YXJkCiB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZAogd2Via2l0X3dlYl92aWV3X2dldF90
aXRsZQord2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkCiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2Fk
CiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZQogd2Via2l0X3dlYl92aWV3X3N0
b3BfbG9hZGluZwpAQCAtOTI3LDMgKzkyOCw0MiBAQCBXRUJLSVRfU0VDVVJJVFlfTUFOQUdFUl9H
RVRfQ0xBU1MKIFdlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUKIHdlYmtpdF9zZWN1cml0eV9t
YW5hZ2VyX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2Vi
RXh0ZW5zaW9uPC9GSUxFPgorV2ViS2l0V2ViRXh0ZW5zaW9uCitXZWJLaXRXZWJFeHRlbnNpb25J
bml0aWFsaXplRnVuY3Rpb24KK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlCisKKzxTVUJT
RUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MKK1dFQktJVF9UWVBFX1dF
Ql9FWFRFTlNJT04KK1dFQktJVF9XRUJfRVhURU5TSU9OCitXRUJLSVRfSVNfV0VCX0VYVEVOU0lP
TgorV0VCS0lUX1dFQl9FWFRFTlNJT05fQ0xBU1MKK1dFQktJVF9JU19XRUJfRVhURU5TSU9OX0NM
QVNTCitXRUJLSVRfV0VCX0VYVEVOU0lPTl9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0
ZT4KK1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90
eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2ViUGFnZTwvRklMRT4K
K1dlYktpdFdlYlBhZ2UKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50CisKKzxTVUJT
RUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0V2ViUGFnZUNsYXNzCitXRUJLSVRfVFlQRV9XRUJfUEFH
RQorV0VCS0lUX1dFQl9QQUdFCitXRUJLSVRfSVNfV0VCX1BBR0UKK1dFQktJVF9XRUJfUEFHRV9D
TEFTUworV0VCS0lUX0lTX1dFQl9QQUdFX0NMQVNTCitXRUJLSVRfV0VCX1BBR0VfR0VUX0NMQVNT
CisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJQYWdlUHJpdmF0ZQord2Via2l0X3dl
Yl9wYWdlX2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNGQ4ODQzZS4uZWIw
ZjMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjEsMyArMjEsNSBAQCB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9nZXRfdHlwZQogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdHlwZQogd2Via2l0X2Nv
bnRleHRfbWVudV9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF90eXBlCit3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZQord2Via2l0X3dlYl9wYWdlX2dldF90eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtl
ZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGE4Zjk5NzYuLmZhMGY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3
IEBAIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0UHJpbnRp
bmcgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0UmVzb3VyY2VzIFwKIAlQcm9ncmFt
cy9XZWJLaXQyQVBJVGVzdHMvVGVzdFNTTCBcCisJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rl
c3RXZWJFeHRlbnNpb25zIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFZl
cnNpb24gXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFi
YXNlIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdEZpbmRDb250cm9sbGVy
IFwKQEAgLTM0LDYgKzM1LDggQEAgd2Via2l0Ml90ZXN0c19jcHBmbGFncyA9IFwKIAktRFdFQktJ
VF9TUkNfRElSPVwiJHtzaGVsbCBwd2R9LyR7c3JjZGlyfVwiIFwKIAktRFdFQktJVF9ERVJJVkVE
X1NSQ19ESVI9XCIke3NoZWxsIHB3ZH0vJHt0b3BfYnVpbGRkaXJ9L0Rlcml2ZWRTb3VyY2VzXCIg
XAogCS1EV0VCS0lUX1RFU1RfUExVR0lOX0RJUj1cIiR7c2hlbGwgcHdkfS8ke3RvcF9idWlsZGRp
cn0vVGVzdE5ldHNjYXBlUGx1Z2luLy5saWJzXCIgXAorCS1EV0VCS0lUX1RFU1RfV0VCX0VYVEVO
U0lPTlNfRElSPVwiJHtzaGVsbCBwd2R9LyR7dG9wX2J1aWxkZGlyfS9MaWJyYXJpZXMvV2ViRXh0
ZW5zaW9ucy8ubGlic1wiIFwKKwktRFdFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSD1cIiR7c2hl
bGwgcHdkfS8kKHRvcF9idWlsZGRpcikvLmxpYnNcIiBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBm
bGFncykgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlIFwKQEAgLTcwLDYgKzczLDggQEAgbm9pbnN0X0xUTElCUkFSSUVTICs9IExpYnJh
cmllcy9saWJXZWJLaXQyQVBJVGVzdENvcmUubGEKIExpYnJhcmllc19saWJXZWJLaXQyQVBJVGVz
dENvcmVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0U2VydmVyLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdFNlcnZlci5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5jcHAgXApAQCAtNzgs
NiArODMsMzAgQEAgTGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0Q29yZV9sYV9TT1VSQ0VTID0g
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgK
IExpYnJhcmllc19saWJXZWJLaXQyQVBJVGVzdENvcmVfbGFfQ1BQRkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfY3BwZmxhZ3MpCiAKK25vaW5zdF9MVExJQlJBUklFUyArPSBMaWJyYXJpZXMvV2ViRXh0
ZW5zaW9ucy9saWJXZWJFeHRlbnNpb25UZXN0LmxhCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19s
aWJXZWJFeHRlbnNpb25UZXN0X2xhX1NPVVJDRVMgPSBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKworTGlicmFyaWVzX1dlYkV4
dGVuc2lvbnNfbGliV2ViRXh0ZW5zaW9uVGVzdF9sYV9MREZMQUdTID0gXAorCS1ycGF0aCAke3No
ZWxsIHB3ZH0vJCh0b3BfYnVpbGRkaXIpL0xpYnJhcmllcy9XZWJFeHRlbnNpb25zLy5saWJzIFwK
KwkkKG5vX3VuZGVmaW5lZCkgXAorCS1hdm9pZC12ZXJzaW9uIFwKKwktbW9kdWxlCisKK0xpYnJh
cmllc19XZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lvblRlc3RfbGFfQ1BQRkxBR1MgPSBcCisJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcyBcCisJLUkkKHRvcF9idWls
ZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQyZXh0ZW5zaW9uL2luY2x1ZGUgXAor
CS1EV0VCS0lUMl9DT01QSUxBVElPTiBcCisJJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQorCitM
aWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJFeHRlbnNpb25UZXN0X2xhX0NYWEZMQUdTID0g
XAorICAgICAgICAkKGdsb2JhbF9jeHhmbGFncykKKworTGlicmFyaWVzX1dlYkV4dGVuc2lvbnNf
bGliV2ViRXh0ZW5zaW9uVGVzdF9sYV9DRkxBR1MgPSBcCisgICAgICAgICQoZ2xvYmFsX2NmbGFn
cykKKworCiBFWFRSQV9ESVNUICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9yZXNvdXJjZXMvdGVzdC1jZXJ0LnBlbSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvcmVzb3VyY2VzL3Rlc3Qta2V5LnBlbSBcCkBAIC0yMTQsNCArMjQz
LDEwIEBAIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0U1NMX0NQUEZMQUdTID0gJCh3ZWJr
aXQyX3Rlc3RzX2NwcGZsYWdzKQogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RTU0xfTERB
REQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVz
dFNTTF9MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1dlYktp
dDJBUElUZXN0c19UZXN0V2ViRXh0ZW5zaW9uc19TT1VSQ0VTID0gXAorICAgICAgICBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKK1By
b2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViRXh0ZW5zaW9uc19DUFBGTEFHUyA9ICQod2Vi
a2l0Ml90ZXN0c19jcHBmbGFncykKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViRXh0
ZW5zaW9uc19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX1dlYktpdDJB
UElUZXN0c19UZXN0V2ViRXh0ZW5zaW9uc19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxh
Z3MpCisKIGVuZGlmICMgRU5BQkxFX1dFQktJVDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcAppbmRleCAyMDQ0YWI1Li5jMWRjZTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
TWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dE1haW4uY3BwCkBAIC0zOSw2ICszOSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikKIHsKICAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgMCk7CiAgICAgZ19zZXRlbnYo
IldFQktJVF9FWEVDX1BBVEgiLCBXRUJLSVRfRVhFQ19QQVRILCBGQUxTRSk7CisgICAgZ19zZXRl
bnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIsIFdFQktJVF9JTkpFQ1RFRF9CVU5ETEVf
UEFUSCwgRkFMU0UpOwogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvIik7CiAKICAgICByZWdpc3RlckdSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOWExODQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViRXh0
ZW5zaW9ucy5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1
cy5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgorCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzOworCitzdGF0aWMgdm9pZCB0ZXN0
V2ViRXh0ZW5zaW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRl
c3QtPmxvYWRIdG1sKCI8aHRtbD48aGVhZD48dGl0bGU+V2ViS2l0R1RLKyBXZWIgRXh0ZW5zaW9u
cyBUZXN0PC90aXRsZT48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJv
eHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eSgib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5z
aW9uVGVzdCIsCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIgLCAi
b3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsIHRlc3QtPm1fbWFpbkxvb3ApKTsKKyAg
ICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxf
c3luYygKKyAgICAgICAgcHJveHkuZ2V0KCksCisgICAgICAgICJHZXRUaXRsZSIsCisgICAgICAg
IGdfdmFyaWFudF9uZXcoIih0KSIsIHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5t
X3dlYlZpZXcpKSwKKyAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgLTEs
IDAsIDApKTsKKyAgICBnX2Fzc2VydChyZXN1bHQpOworCisgICAgY29uc3QgY2hhciogdGl0bGU7
CisgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIoJnMpIiwgJnRpdGxlKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGl0bGUsID09LCAiV2ViS2l0R1RLKyBXZWIgRXh0ZW5zaW9ucyBUZXN0
Iik7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NldGVudigiV0VCS0lUX1dFQl9F
WFRFTlNJT05TX1BBVEgiLCBXRUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIsIEZBTFNFKTsK
KyAgICBidXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygpOworICAgIGlmICghYnVzLT5ydW4oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9u
IiwgImRvbS1kb2N1bWVudC10aXRsZSIsIHRlc3RXZWJFeHRlbnNpb24pOworfQorCit2b2lkIGFm
dGVyQWxsKCkKK3sKKyAgICBkZWxldGUgYnVzOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWY2OGM1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVz
dC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KKworc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KKyAg
ICAiPG5vZGU+IgorICAgICIgPGludGVyZmFjZSBuYW1lPSdvcmcud2Via2l0Lmd0ay5XZWJFeHRl
bnNpb25UZXN0Jz4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRUaXRsZSc+IgorICAgICIgICA8
YXJnIHR5cGU9J3QnIG5hbWU9J3BhZ2VJRCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAiICAgPGFy
ZyB0eXBlPSdzJyBuYW1lPSd0aXRsZScgZGlyZWN0aW9uPSdvdXQnLz4iCisgICAgIiAgPC9tZXRo
b2Q+IgorICAgICIgPC9pbnRlcmZhY2U+IgorICAgICI8L25vZGU+IjsKKworc3RhdGljIHZvaWQg
bWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqIHNlbmRlciwg
Y29uc3QgY2hhciogb2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsIEdEQnVzTWV0aG9kSW52b2Nh
dGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKGdfc3RyY21w
MChpbnRlcmZhY2VOYW1lLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0VGl0bGUi
KSkgeworICAgICAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgICAgIGdfdmFyaWFudF9nZXQocGFy
YW1ldGVycywgIih0KSIsICZwYWdlSUQpOworCisgICAgICAgIFdlYktpdFdlYkV4dGVuc2lvbiog
ZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04odXNlckRhdGEpOworICAgICAgICBXZWJL
aXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0ZW5zaW9u
LCBwYWdlSUQpOworICAgICAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRo
b2RfaW52b2NhdGlvbl9yZXR1cm5fZXJyb3IoCisgICAgICAgICAgICAgICAgaW52b2NhdGlvbiwg
R19EQlVTX0VSUk9SLCBHX0RCVVNfRVJST1JfSU5WQUxJRF9BUkdTLAorICAgICAgICAgICAgICAg
ICJJbnZhbGlkIHBhZ2UgSUQ6ICUiR19HVUlOVDY0X0ZPUk1BVCwgcGFnZUlEKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1
bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBH
T3duUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50
KSk7CisgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2Nh
dGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwgdGl0bGUuZ2V0KCkpKTsKKyAgICB9Cit9CisKK3N0
YXRpYyBjb25zdCBHREJ1c0ludGVyZmFjZVZUYWJsZSBpbnRlcmZhY2VWaXJ0dWFsVGFibGUgPSB7
CisgICAgbWV0aG9kQ2FsbENhbGxiYWNrLCAwLCAwCit9OworCitzdGF0aWMgdm9pZCBidXNBY3F1
aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbmFt
ZSwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgc3RhdGljIEdEQnVzTm9kZUluZm8gKmludHJv
c3BlY3Rpb25EYXRhID0gMDsKKyAgICBpZiAoIWludHJvc3BlY3Rpb25EYXRhKQorICAgICAgICBp
bnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVj
dGlvblhNTCwgMCk7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgdW5zaWduZWQg
cmVnaXN0cmF0aW9uSUQgPSBnX2RidXNfY29ubmVjdGlvbl9yZWdpc3Rlcl9vYmplY3QoCisgICAg
ICAgIGNvbm5lY3Rpb24sCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVz
dCIsCisgICAgICAgIGludHJvc3BlY3Rpb25EYXRhLT5pbnRlcmZhY2VzWzBdLAorICAgICAgICAm
aW50ZXJmYWNlVmlydHVhbFRhYmxlLAorICAgICAgICBnX29iamVjdF9yZWYodXNlckRhdGEpLAor
ICAgICAgICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpLAorICAg
ICAgICAmZXJyb3Iub3V0UHRyKCkpOworICAgIGlmICghcmVnaXN0cmF0aW9uSUQpCisgICAgICAg
IGdfd2FybmluZygiRmFpbGVkIHRvIHJlZ2lzdGVyIG9iamVjdDogJXNcbiIsIGVycm9yLT5tZXNz
YWdlKTsKK30KKworZXh0ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxp
emUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgZ19idXNfb3duX25hbWUo
CisgICAgICAgIEdfQlVTX1RZUEVfU0VTU0lPTiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldl
YkV4dGVuc2lvblRlc3QiLAorICAgICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdTX05PTkUsCisg
ICAgICAgIGJ1c0FjcXVpcmVkQ2FsbGJhY2ssCisgICAgICAgIDAsIDAsCisgICAgICAgIGdfb2Jq
ZWN0X3JlZihleHRlbnNpb24pLAorICAgICAgICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4o
Z19vYmplY3RfdW5yZWYpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZWY4NDg0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwCkBAIC0wLDAgKzEsMTA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCisKKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK1dlYktpdFRl
c3RCdXM6OldlYktpdFRlc3RCdXMoKQorICAgIDogbV9waWQoLTEpCit7Cit9CisKK2Jvb2wgV2Vi
S2l0VGVzdEJ1czo6cnVuKCkKK3sKKyAgICAvLyBGSVhNRTogVXNlIEdUZXN0REJ1cyB3aGVuIHdl
IGJ1bXAgZ2xpYiB0byAyLjM0LgorICAgIEdPd25QdHI8Y2hhcj4gZGJ1c0xhdW5jaChnX2ZpbmRf
cHJvZ3JhbV9pbl9wYXRoKCJkYnVzLWxhdW5jaCIpKTsKKyAgICBpZiAoIWRidXNMYXVuY2gpIHsK
KyAgICAgICAgZ193YXJuaW5nKCJFcnJvciBzdGFydGluZyBEQlVTIGRhZW1vbjogZGJ1cy1sYXVu
Y2ggbm90IGZvdW5kIGluIHBhdGgiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0OworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBpZiAoIWdfc3Bhd25fY29tbWFuZF9saW5lX3N5bmMoZGJ1c0xhdW5jaC5nZXQoKSwgJm91dHB1
dC5vdXRQdHIoKSwgMCwgMCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBnX3dhcm5pbmco
IkVycm9yIHN0YXJ0aW5nIERCVVMgZGFlbW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyBvdXRwdXRTdHJpbmcgPSBTdHJp
bmc6OmZyb21VVEY4KG91dHB1dC5nZXQoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbGluZXM7Cisg
ICAgb3V0cHV0U3RyaW5nLnNwbGl0KFVDaGFyKCdcbicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAq
LyBmYWxzZSwgbGluZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgY2hhcioqIGtleVZhbHVlID0gZ19zdHJzcGxpdChsaW5lc1tpXS51
dGY4KCkuZGF0YSgpLCAiPSIsIDIpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGdfc3Rydl9s
ZW5ndGgoa2V5VmFsdWUpLCA9PSwgMik7CisgICAgICAgIGlmICghZ19zdHJjbXAwKGtleVZhbHVl
WzBdLCAiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIikpIHsKKyAgICAgICAgICAgIG1fYWRkcmVz
cyA9IGtleVZhbHVlWzFdOworICAgICAgICAgICAgZ19zZXRlbnYoIkRCVVNfU0VTU0lPTl9CVVNf
QUREUkVTUyIsIGtleVZhbHVlWzFdLCBUUlVFKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJj
bXAwKGtleVZhbHVlWzBdLCAiREJVU19TRVNTSU9OX0JVU19QSUQiKSkKKyAgICAgICAgICAgIG1f
cGlkID0gZ19hc2NpaV9zdHJ0b2xsKGtleVZhbHVlWzFdLCAwLCAxMCk7CisgICAgICAgIGdfc3Ry
ZnJlZXYoa2V5VmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBtX3BpZCA+IDA7Cit9CisKK1dl
YktpdFRlc3RCdXM6On5XZWJLaXRUZXN0QnVzKCkKK3sKKyAgICBnX3Vuc2V0ZW52KCJEQlVTX1NF
U1NJT05fQlVTX0FERFJFU1MiKTsKKworICAgIGlmIChtX3BpZCAhPSAtMSkKKyAgICAgICAga2ls
bChtX3BpZCwgU0lHVEVSTSk7Cit9CisKK0dEQnVzQ29ubmVjdGlvbiogV2ViS2l0VGVzdEJ1czo6
Y29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbi5nZXQoKTsKKworICAgIGdfYXNzZXJ0KCFtX2FkZHJlc3MuaXNOdWxsKCkpOwor
ICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2Fk
ZHJlc3Nfc3luYyhtX2FkZHJlc3MuZGF0YSgpLAorICAgICAgICBzdGF0aWNfY2FzdDxHREJ1c0Nv
bm5lY3Rpb25GbGFncz4oR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJ
RU5UIHwgR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfTUVTU0FHRV9CVVNfQ09OTkVDVElPTiksCisg
ICAgICAgIDAsIDAsIDApKTsKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCitz
dGF0aWMgdm9pZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQo
c3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpKTsKK30KKworR0RCdXNQcm94eSogV2Vi
S2l0VGVzdEJ1czo6Y3JlYXRlUHJveHkoY29uc3QgY2hhciogc2VydmljZU5hbWUsIGNvbnN0IGNo
YXIqIG9iamVjdFBhdGgsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIEdNYWluTG9vcCogbWFp
bkxvb3ApCit7CisgICAgdW5zaWduZWQgd2F0Y2hlcklEID0gZ19idXNfd2F0Y2hfbmFtZV9vbl9j
b25uZWN0aW9uKGNvbm5lY3Rpb24oKSwgc2VydmljZU5hbWUsIEdfQlVTX05BTUVfV0FUQ0hFUl9G
TEFHU19OT05FLCBvbk5hbWVBcHBlYXJlZCwgMCwgbWFpbkxvb3AsIDApOworICAgIGdfbWFpbl9s
b29wX3J1bihtYWluTG9vcCk7CisgICAgZ19idXNfdW53YXRjaF9uYW1lKHdhdGNoZXJJRCk7CisK
KyAgICBHREJ1c1Byb3h5KiBwcm94eSA9IGdfZGJ1c19wcm94eV9uZXdfc3luYygKKyAgICAgICAg
Y29ubmVjdGlvbigpLAorICAgICAgICBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0FVVE9fU1RB
UlQsCisgICAgICAgIDAsIC8vIEdEQnVzSW50ZXJmYWNlSW5mbworICAgICAgICBzZXJ2aWNlTmFt
ZSwKKyAgICAgICAgb2JqZWN0UGF0aCwKKyAgICAgICAgaW50ZXJmYWNlTmFtZSwKKyAgICAgICAg
MCwgLy8gR0NhbmNlbGxhYmxlCisgICAgICAgIDApOworICAgIGdfYXNzZXJ0KHByb3h5KTsKKyAg
ICByZXR1cm4gcHJveHk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWQ5ZDliYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuaApAQCAtMCwwICsxLDQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0VGVzdEJ1c19o
CisjZGVmaW5lIFdlYktpdFRlc3RCdXNfaAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKK2NsYXNzIFdlYktpdFRlc3RCdXMgeworcHVibGljOgorICAgIFdlYktpdFRlc3RCdXMoKTsK
KyAgICB2aXJ0dWFsIH5XZWJLaXRUZXN0QnVzKCk7CisKKyAgICBib29sIHJ1bigpOworICAgIEdE
QnVzUHJveHkqIGNyZWF0ZVByb3h5KGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lLCBjb25zdCBjaGFy
KiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBHTWFpbkxvb3AqKTsKKwor
cHJpdmF0ZToKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKTsKKworICAgIHBpZF90
IG1fcGlkOworICAgIENTdHJpbmcgbV9hZGRyZXNzOworICAgIEdSZWZQdHI8R0RCdXNDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247Cit9OworCisjZW5kaWYgLy8gV2ViS2l0VGVzdEJ1c19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJiZDExOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5o
IgorCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVQYWdl
LmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVu
c2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsKKyAgICBQQUdFX0NSRUFURUQsCisKKyAg
ICBMQVNUX1NJR05BTAorfTsKKwordHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2UqLCBHUmVmUHRyPFdl
YktpdFdlYlBhZ2U+ID4gV2ViUGFnZU1hcDsKKworc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25Q
cml2YXRlIHsKKyAgICBXZWJQYWdlTWFwIHBhZ2VzOworfTsKKworc3RhdGljIGd1aW50IHNpZ25h
bHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2Vi
RXh0ZW5zaW9uLCB3ZWJraXRfd2ViX2V4dGVuc2lvbiwgR19UWVBFX09CSkVDVCkKKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3NfaW5pdChXZWJLaXRXZWJFeHRlbnNpb25D
bGFzcyoga2xhc3MpCit7CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViRXh0ZW5zaW9uOjpwYWdl
LWNyZWF0ZWQ6CisgICAgICogQGV4dGVuc2lvbjogdGhlICNXZWJLaXRXZWJFeHRlbnNpb24gb24g
d2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktp
dFdlYlBhZ2UgY3JlYXRlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3
aGVuIGEgbmV3ICNXZWJLaXRXZWJQYWdlIGlzIGNyZWF0ZWQgaW4KKyAgICAgKiB0aGUgV2ViIFBy
b2Nlc3MuCisgICAgICovCisgICAgc2lnbmFsc1tQQUdFX0NSRUFURURdID0gZ19zaWduYWxfbmV3
KAorICAgICAgICAicGFnZS1jcmVhdGVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xh
c3MpLAorICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgMCwgMCwgMCwKKyAgICAg
ICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKKyAgICAgICAgR19UWVBFX05PTkUs
IDEsCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QQUdFKTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0V2ViRXh0ZW5zaW9uUGFnZUNyZWF0ZWQoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24s
IFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJQYWdlPiB3ZWJQYWdlID0g
YWRvcHRHUmVmKHdlYmtpdFdlYlBhZ2VDcmVhdGUocGFnZSkpOworICAgIGV4dGVuc2lvbi0+cHJp
di0+cGFnZXMuYWRkKHBhZ2UsIHdlYlBhZ2UpOworICAgIGdfc2lnbmFsX2VtaXQoZXh0ZW5zaW9u
LCBzaWduYWxzW1BBR0VfQ1JFQVRFRF0sIDAsIHdlYlBhZ2UuZ2V0KCkpOworfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJveShXZWJLaXRXZWJFeHRlbnNpb24qIGV4
dGVuc2lvbiwgV2ViUGFnZSogcGFnZSkKK3sKKyAgICBleHRlbnNpb24tPnByaXYtPnBhZ2VzLnJl
bW92ZShwYWdlKTsKK30KKworc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIHdlYmtpdFdlYkV4dGVuc2lvblBhZ2VDcmVhdGVkKFdFQktJVF9XRUJfRVhURU5TSU9OKGNs
aWVudEluZm8pLCB0b0ltcGwocGFnZSkpOworfQorCitzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVBh
Z2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJFeHRlbnNpb25QYWdlRGVzdHJveShXRUJLSVRf
V0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKHBhZ2UpKTsKK30KKworV2ViS2l0V2Vi
RXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRs
ZSkKK3sKKyAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhU
RU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7CisK
KyAgICBXS0J1bmRsZUNsaWVudCB3a0J1bmRsZUNsaWVudCA9IHsKKyAgICAgICAga1dLQnVuZGxl
Q2xpZW50Q3VycmVudFZlcnNpb24sCisgICAgICAgIGV4dGVuc2lvbiwgLy8gY2xpZW50SW5mbwor
ICAgICAgICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCisgICAgICAg
IDAsIC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZU1l
c3NhZ2UKKyAgICAgICAgMCAvLyBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZQorICAgIH07CisgICAg
V0tCdW5kbGVTZXRDbGllbnQodG9BUEkoYnVuZGxlKSwgJndrQnVuZGxlQ2xpZW50KTsKKworICAg
IHJldHVybiBleHRlbnNpb247Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X3BhZ2U6CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBwYWdlX2lk
OiB0aGUgaWRlbnRpZmllciBvZiB0aGUgI1dlYktpdFdlYlBhZ2UgdG8gZ2V0CisgKgorICogR2V0
IHRoZSB3ZWIgcGFnZSBvZiB0aGUgZ2l2ZW4gQHBhZ2VfaWQuCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYlBhZ2UgZm9yIHRoZSBnaXZlbiBAcGFnZV9pZCwg
b3IgJU5VTEwgaWYgdGhlCisgKiAgICBpZGVudGlmaWVyIGRvZXNuJ3QgY29ycmVzcG9uZCB0byBh
biBleHNpdGluZyB3ZWIgcGFnZS4KKyAqLworV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW50NjQgcGFn
ZUlEKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5TSU9O
KGV4dGVuc2lvbiksIDApOworCisgICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSogcHJpdiA9
IGV4dGVuc2lvbi0+cHJpdjsKKyAgICBXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBw
cml2LT5wYWdlcy5lbmQoKTsKKyAgICBmb3IgKFdlYlBhZ2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gcHJpdi0+cGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpZiAoaXQt
PmtleS0+cGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5n
ZXQoKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4
dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNDI0NzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9F
WFRFTlNJT05fSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNl
cnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0V2ViRXh0ZW5zaW9uX2gKKyNk
ZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJL
SVRfVFlQRV9XRUJfRVhURU5TSU9OICAgICAgICAgICAgKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRVhURU5TSU9OKG9iaikgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJ
T04sIFdlYktpdFdlYkV4dGVuc2lvbikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRVhURU5TSU9O
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9FWFRFTlNJT04pKQorI2RlZmluZSBXRUJLSVRfV0VCX0VYVEVOU0lPTl9DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfRVhURU5TSU9OLCBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcykpCisjZGVmaW5lIFdFQktJVF9J
U19XRUJfRVhURU5TSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04pKQorI2RlZmluZSBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb24gICAgICAgIFdlYktpdFdlYkV4dGVu
c2lvbjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyAgIFdlYktpdFdl
YkV4dGVuc2lvbkNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvblByaXZh
dGUgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZTsKKworLyoqCisgKiBXZWJLaXRXZWJFeHRlbnNp
b25Jbml0aWFsaXplRnVuY3Rpb246CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNp
b24KKyAqCisgKiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNh
bGxlZCB0byBpbml0aWFsaXplCisgKiB0aGUgd2ViIGV4dGVuc2lvbiB3aGVuIHRoZSB3ZWIgcHJv
Y2VzcyBzdGFydHMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0
aWFsaXplRnVuY3Rpb24pIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbik7CisKK3N0cnVj
dCBfV2ViS2l0V2ViRXh0ZW5zaW9uIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktp
dFdlYkV4dGVuc2lvblByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkV4dGVu
c2lvbkNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgKHZvaWQpOworCitXRUJL
SVRfQVBJIFdlYktpdFdlYlBhZ2UgKgord2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UgKFdl
YktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbkRlZmluZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFhNjM1OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg+IGNhbiBi
ZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRXZWJFeHRlbnNp
b25EZWZpbmVzX2gKKyNkZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uRGVmaW5lc19oCisKKyNpbmNs
dWRlIDxnbGliLmg+CisKKyNpZmRlZiBHX09TX1dJTjMyCisjICAgIGlmZGVmIEJVSUxESU5HX1dF
QktJVAorIyAgICAgICAgZGVmaW5lIFdFQktJVF9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpCisj
ICAgIGVsc2UKKyMgICAgICAgIGRlZmluZSBXRUJLSVRfQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQorIyAgICBlbmRpZgorIyAgICBkZWZpbmUgV0VCS0lUX09CU09MRVRFX0FQSSBXRUJLSVRfQVBJ
CisjZWxzZQorIyAgICBkZWZpbmUgV0VCS0lUX0FQSSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKQorIyAgICBkZWZpbmUgV0VCS0lUX09CU09MRVRFX0FQSSBXRUJLSVRfQVBJ
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKQorI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJLaXRX
ZWJFeHRlbnNpb25EZWZpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
RXh0ZW5zaW9uUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZm
N2QxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCkBAIC0wLDAgKzEs
MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJL
aXRXZWJFeHRlbnNpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4
dGVuc2lvbi5oIgorCitXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0
ZShXZWJLaXQ6OkluamVjdGVkQnVuZGxlKik7CisKKyNlbmRpZiAvLyBXZWJLaXRXZWJFeHRlbnNp
b25Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDIxM2M2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCisK
KyNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQ
cml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworc3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CisgICAgV2ViUGFn
ZSogd2ViUGFnZTsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJr
aXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFn
ZV9jbGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCit7Cit9CisKK1dlYktpdFdl
YlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBXZWJL
aXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfUEFHRSwgTlVMTCkpOworICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwor
ICAgIHJldHVybiBwYWdlOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50OgorICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQYWdlCisgKgorICogR2V0IHRoZSAj
V2ViS2l0RE9NRG9jdW1lbnQgY3VycmVudGx5IGxvYWRlZCBpbiBAd2ViX3BhZ2UKKyAqCisgKiBS
ZXR1cm5zOiB0aGUgI1dlYktpdERPTURvY3VtZW50IGN1cnJlbnRseSBsb2FkZWQsIG9yICVOVUxM
CisgKiAgICBpZiBubyBkb2N1bWVudCBpcyBjdXJyZW50bHkgbG9hZGVkLgorICovCitXZWJLaXRE
T01Eb2N1bWVudCogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQoV2ViS2l0V2ViUGFn
ZSogd2ViUGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BB
R0Uod2ViUGFnZSksIDApOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IHdlYlBhZ2UtPnByaXYt
PndlYlBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIHJldHVybiBraXQoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ4ZjYyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dF
QktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElM
QVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4gY2Fu
IGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFdlYlBhZ2Vf
aAorI2RlZmluZSBXZWJLaXRXZWJQYWdlX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFeHRlbnNpb25EZWZpbmVzLmg+CisjaW5jbHVkZSA8
d2Via2l0ZG9tL3dlYmtpdGRvbS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfV0VCX1BBR0UgICAgICAgICAgICAod2Via2l0X3dlYl9wYWdlX2dldF90eXBlKCkpCisj
ZGVmaW5lIFdFQktJVF9XRUJfUEFHRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZSkpCisj
ZGVmaW5lIFdFQktJVF9JU19XRUJfUEFHRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUEFHRSkpCisjZGVmaW5lIFdFQktJVF9X
RUJfUEFHRV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJfUEFHRSwgV2ViS2l0V2ViUGFnZUNsYXNzKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1dFQl9QQUdFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QQUdFKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9QQUdFX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX1dFQl9QQUdFLCBXZWJLaXRXZWJQYWdlQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViUGFnZSAgICAgICAgV2ViS2l0V2ViUGFnZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJQYWdlQ2xhc3MgICBXZWJLaXRXZWJQYWdlQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViUGFnZVByaXZhdGUgV2ViS2l0V2ViUGFnZVByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2Vi
UGFnZSB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJQYWdlUHJpdmF0ZSAq
cHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViUGFnZUNsYXNzIHsKKyAgICBHT2JqZWN0Q2xh
c3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9wYWdl
X2dldF90eXBlICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdERPTURvY3VtZW50
ICoKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3ZWJf
cGFnZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
ZDNkYTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdl
YlBhZ2VQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViUGFnZVByaXZhdGVfaAorCisjaW5jbHVk
ZSAiV2ViS2l0V2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworV2ViS2l0V2ViUGFn
ZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJLaXQ6OldlYlBhZ2UqKTsKKworI2VuZGlmIC8vIFdl
YktpdFdlYlBhZ2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0
ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlZjM1YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XZWJLaXRXZWJFeHRlbnNp
b25faAorI2RlZmluZSBfX1dlYktpdFdlYkV4dGVuc2lvbl9oCisKKyNkZWZpbmUgX19XRUJLSVRf
V0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCisKKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkV4
dGVuc2lvbi5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgorCisjdW5kZWYg
X19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWEyOWFmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFu
YWdlci5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR3RrRXh0ZW5zaW9uTWFu
YWdlci5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciYgV2ViR3RrRXh0ZW5z
aW9uTWFuYWdlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYkd0a0V4
dGVuc2lvbk1hbmFnZXIsIGV4dGVuc2lvbk1hbmFnZXIsICgpKTsKKyAgICByZXR1cm4gZXh0ZW5z
aW9uTWFuYWdlcjsKK30KKworV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6V2ViR3RrRXh0ZW5zaW9u
TWFuYWdlcigpCit7Cit9CisKK3ZvaWQgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6YXBwZW5kTW9k
dWxlRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQoreworICAgIFN0cmlu
ZyBleHRlbnNpb25QYXRocyhnZXRlbnYoIldFQktJVF9XRUJfRVhURU5TSU9OU19QQVRIIikpOwor
ICAgIGlmICghZXh0ZW5zaW9uUGF0aHMuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHBhdGhzOworICAgICAgICBleHRlbnNpb25QYXRocy5zcGxpdChVQ2hhcignOicpLCAvKiBh
bGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQocGF0aHMpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleHRlbnNpb25E
ZWZhdWx0RGlyZWN0b3J5ID0gTElCRElSIiJHX0RJUl9TRVBBUkFUT1JfUyJ3ZWJraXRndGstIldF
QktJVEdUS19BUElfVkVSU0lPTl9TVFJJTkciIkdfRElSX1NFUEFSQVRPUl9TIndlYi1leHRlbnNp
b25zIkdfRElSX1NFUEFSQVRPUl9TOworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChXZWJDb3JlOjpm
aWxlbmFtZVRvU3RyaW5nKGV4dGVuc2lvbkRlZmF1bHREaXJlY3RvcnkpKTsKK30KKwordm9pZCBX
ZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjpzY2FuTW9kdWxlcyhWZWN0b3I8U3RyaW5nPiYgbW9kdWxl
cykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVEaXJlY3RvcmllczsKKyAgICBhcHBlbmRN
b2R1bGVEaXJlY3Rvcmllcyhtb2R1bGVEaXJlY3Rvcmllcyk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtb2R1bGVEaXJlY3Rvcmllcy5zaXplKCk7ICsraSkgeworICAgICAgICBWZWN0b3I8
U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobW9kdWxlRGlyZWN0
b3JpZXNbaV0sIFN0cmluZygiKi5zbyIpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCBtb2R1bGVQYXRocy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgaWYgKFdlYkNvcmU6OmZp
bGVFeGlzdHMobW9kdWxlUGF0aHNbal0pKQorICAgICAgICAgICAgICAgIG1vZHVsZXMuYXBwZW5k
KG1vZHVsZVBhdGhzW2pdKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJHdGtFeHRl
bnNpb25NYW5hZ2VyOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKK3sKKyAgICBtX2V4
dGVuc2lvbiA9IGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUodG9JbXBsKGJ1bmRs
ZSkpKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzOworICAgIHNjYW5Nb2R1bGVz
KG1vZHVsZVBhdGhzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIE93blB0cjxNb2R1bGU+IG1vZHVsZSA9IGFkb3B0UHRyKG5l
dyBNb2R1bGUobW9kdWxlUGF0aHNbaV0pKTsKKyAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbiBpbml0aWFsaXplRnVuY3Rpb24gPQorICAgICAgICAgICAgbW9kdWxlLT5m
dW5jdGlvblBvaW50ZXI8V2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uPigid2Vi
a2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZSIpOworICAgICAgICBpZiAoIWluaXRpYWxpemVG
dW5jdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEZJWE1FOiBjaGVj
ayB3ZSBkb24ndCBsb2FkIHRoZSBzYW1lIG1vZHVsZSB0d2ljZSBmcm9tIGRpZmZlcmVudCBwYXRo
cy4KKyAgICAgICAgbV9leHRlbnNpb25Nb2R1bGVzLmFwcGVuZChtb2R1bGUubGVha1B0cigpKTsK
KyAgICAgICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKG1fZXh0ZW5zaW9uLmdldCgpKTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjEzYjc3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYkd0a0V4
dGVuc2lvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJHdGtFeHRlbnNpb25NYW5hZ2VyX2gKKworI2lu
Y2x1ZGUgIk1vZHVsZS5oIgorI2luY2x1ZGUgIldLQnVuZGxlLmgiCisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvbiBXZWJL
aXRXZWJFeHRlbnNpb247CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcik7CisKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlciYgc2hhcmVkKCk7CisKKyAgICB2b2lk
IGluaXRpYWxpemUoV0tCdW5kbGVSZWYpOworCitwcml2YXRlOgorICAgIFdlYkd0a0V4dGVuc2lv
bk1hbmFnZXIoKTsKKworICAgIHZvaWQgYXBwZW5kTW9kdWxlRGlyZWN0b3JpZXMoVmVjdG9yPFN0
cmluZz4mKTsKKyAgICB2b2lkIHNjYW5Nb2R1bGVzKFZlY3RvcjxTdHJpbmc+Jik7CisKKyAgICBW
ZWN0b3I8TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1bGVzOworICAgIEdSZWZQdHI8V2ViS2l0V2Vi
RXh0ZW5zaW9uPiBtX2V4dGVuc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTk4MDUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrSW5qZWN0ZWRCdW5kbGVNYWlu
LmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkd0a0V4dGVuc2lvbk1hbmFn
ZXIuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCisjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIp
CitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKK2V4dGVybiAiQyIKKyNl
bmRpZgordm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVS
ZWYpCit7CisgICAgV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjo6c2hhcmVkKCkuaW5pdGlhbGl6ZShi
dW5kbGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBi
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNTc2MWNhOC4uNjNlYTdkZCAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yMzcsNiArMjM3LDggQEAgX1pON1dlYkNvcmUx
OFN0eWxlU2hlZXRDb250ZW50c0QxRXY7CiBfWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVl
dENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24x
NGFkZEF1dGhvclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFOwogX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2OworX1pONldlYktpdDIyV2ViR3Rr
RXh0ZW5zaW9uTWFuYWdlcjEwaW5pdGlhbGl6ZUVQSzE0T3BhcXVlV0tCdW5kbGU7CitfWk42V2Vi
S2l0MjJXZWJHdGtFeHRlbnNpb25NYW5hZ2VyNnNoYXJlZEV2OwogCiBsb2NhbDoKIF9aKjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMTg3ZTgx
Li40ZjljMGVjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBsb2Fk
aW5nIHdlYiBwcm9jZXNzIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTYzMQorCisgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAobWFpbik6IFNl
dCBXRUJLSVRfSU5KRUNURURfQlVORExFIGVudiB2YXIgdG8gdXNlIHRoZSBpbmplY3RlZAorICAg
ICAgICBidW5kbGUgbGliIGZyb20gYnVpbGQgZGlyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlci5weTogQWRkIGV4Y2VwdGlvbnMgZm9yIEdUSysgQVBJCisgICAgICAg
IGxvY2F0ZWQgaW4gV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrLgorICAgICAgICAq
IGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Via2l0Ml9vcHRpb25zKTogU2Nh
biBhbHNvIGZpbGVzIGluCisgICAgICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ayB0byBnZW5lcmF0ZSBBUEkgZG9jcy4KKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMuaW5q
ZWN0ZWRfYnVuZGxlX3NyY19wYXRoKTogSGVscGVyIGZ1bmN0aW9uIHRvCisgICAgICAgIGJ1aWxk
IHBhdGhzIGluIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay4KKwogMjAxMy0wMS0x
MCAgVGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgogCiAgICAgICAgIENo
YW5naW5nIHRlc3RzIHRvIGJlIGNvbnNpc3RlbnQgYW5kIHVzZSBzZWxmLnNjbSByYXRoZXIgdGhl
biByZWNyZWF0aW5nIHRoZSBzY20gb2JqZWN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDUwOTc0YWUuLjU3NWRlYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZp
bGUuYW0KQEAgLTksNiArOSw3IEBAIFByb2dyYW1zX01pbmlCcm93c2VyX0NQUEZMQUdTID0gXAog
CS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ayBcCiAJ
LUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3RrL2luY2x1
ZGUgXAogCS1EV0VCS0lUX0VYRUNfUEFUSD1cIiR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikv
UHJvZ3JhbXMvXCIgXAorCS1EV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIPVwiJHtzaGVsbCBw
d2R9LyQodG9wX2J1aWxkZGlyKS8ubGlic1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXAogCSQo
amF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwppbmRleCBjNzM2N2RmLi4xN2U0NmY0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTIyNiw2
ICsyMjYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2lmZGVmIFdFQktJ
VF9FWEVDX1BBVEgKICAgICBnX3NldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9QQVRIIiwgV0VCS0lU
X0VYRUNfUEFUSCAicmVzb3VyY2VzL2luc3BlY3RvciIsIEZBTFNFKTsKICNlbmRpZiAvKiBXRUJL
SVRfRVhFQ19QQVRIICovCisgICAgZ19zZXRlbnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFU
SCIsIFdFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCwgRkFMU0UpOwogCiAgICAgLy8gRW5hYmxl
IHRoZSBmYXZpY29uIGRhdGFiYXNlLCBieSBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IGRpcmVjdG9y
eS4KICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5
KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCA1YWUyOTBjLi4zZWY2N2FjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0xODAsNyArMTgwLDggQEAgX1BBVEhf
UlVMRVNfU1BFQ0lGSUVSID0gWwogCiAgICAgKFsjIFRoZSBHVEsrIEFQSSB1c2UgdXBwZXIgY2Fz
ZSwgdW5kZXJzY29yZSBzZXBhcmF0ZWQsIHdvcmRzIGluCiAgICAgICAjIGNlcnRhaW4gdHlwZXMg
b2YgZW51bXMgKGUuZy4gc2lnbmFscywgcHJvcGVydGllcykuCi0gICAgICAiU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsiXSwKKyAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ayIsCisgICAgICAiU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L2VudW1fY2FzaW5nIl0pLAogCiAgICAg
KFsjIEhlYWRlciBmaWxlcyBpbiBGb3J3YXJkaW5nSGVhZGVycyBoYXZlIG5vIGhlYWRlciBndWFy
ZHMgb3IKQEAgLTMyOSw3ICszMzAsOSBAQCBfU0tJUFBFRF9GSUxFU19XSVRIX1dBUk5JTkcgPSBb
CiAgICAgIyBleGNlcHQgdGhvc2UgZW5kaW5nIGluIC4uLlByaXZhdGUuaCBhcmUgR1RLKyBBUEkg
aGVhZGVycywKICAgICAjIHdoaWNoIGRpZmZlciBncmVhdGx5IGZyb20gV2ViS2l0IGNvZGluZyBz
dHlsZS4KICAgICByZS5jb21waWxlKHInU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0KD8hLipQcml2YXRlXC5oKS4qXC5oJCcpLAotICAgICdTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgnXQorICAgIHJlLmNvbXBpbGUocidTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0KD8hLipQcml2YXRlXC5o
KS4qXC5oJCcpLAorICAgICdTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
LmgnLAorICAgICdTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvd2Via2l0LXdlYi1leHRlbnNpb24uaCddCiAKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBt
b3JlIGNvbW1vbiBvciBvYnZpb3VzLgogIwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRl
LWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggNWFmMmZjMS4uYjBjYWIz
MSAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jCkBAIC03Nyw2ICs3Nyw4IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25z
KCk6CiAgICAgICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMn
LCAnV2ViS2l0MicpICsgYXJncykpCiAgICAgZGVmIHNyY19wYXRoKCphcmdzKToKICAgICAgICAg
cmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdDInLCAnVUlQ
cm9jZXNzJywgJ0FQSScsICdndGsnKSArIGFyZ3MpKQorICAgIGRlZiBpbmplY3RlZF9idW5kbGVf
c3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCoo
KCdTb3VyY2UnLCAnV2ViS2l0MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQ
SScsICdndGsnKSArIGFyZ3MpKQogCiAgICAgeHJlZl9kZXBzID0gZ2V0X2NvbW1vbl94cmVmX2Rl
cHMoKS5jb3B5KCkKICAgICB4cmVmX2RlcHMudXBkYXRlKHsKQEAgLTg4LDcgKzkwLDcgQEAgZGVm
IGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXQy
Z3RrJywKICAgICAgICAgJ2RvY19kaXInIDogc3JjX3BhdGgoJ2RvY3MnKSwKICAgICAgICAgJ291
dHB1dF9kaXInIDogY29tbW9uLmJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Mmd0
aycpLAotICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGRlcml2ZWRfc291cmNl
c19wYXRoKCd3ZWJraXQyZ3RrJywgJ3dlYmtpdDInKV0sCisgICAgICAgICdzb3VyY2VfZGlycycg
OiBbc3JjX3BhdGgoKSwgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnLCAnd2Via2l0
MicpLCBpbmplY3RlZF9idW5kbGVfc3JjX3BhdGgoKV0sCiAgICAgICAgICdjZmxhZ3MnIDogJyAt
SScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycsICdpbmNsdWRlJykgKyBcCiAg
ICAgICAgICAgICAgICAgICAgJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0
aycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgo
J2luY2x1ZGUnKSArIFwKQEAgLTk2LDYgKzk4LDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMo
KToKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCksCiAgICAgICAgICdjcm9z
c19yZWZlcmVuY2VfZGVwcycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpLAog
ICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUuaCcp
KSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2IoaW5qZWN0ZWRfYnVuZGxl
X3NyY19wYXRoKCcqUHJpdmF0ZS5oJykpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGds
b2IuZ2xvYihzcmNfcGF0aCgnKkNsaWVudConKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXQyR3RrQXV0aGVudGljYXRpb25EaWFsb2cuKicp
KSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1dlYktp
dEdlb2xvY2F0aW9uUHJvdmlkZXIuKicpKSArIFwK
</data>

          </attachment>
      

    </bug>

</bugzilla>