<?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>136449</bug_id>
          
          <creation_ts>2014-09-02 02:53:55 -0700</creation_ts>
          <short_desc>[GTK] UserMedia Permission Request API</short_desc>
          <delta_ts>2014-12-08 10:16:22 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>123158</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032588</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-02 02:53:55 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032590</commentid>
    <comment_count>1</comment_count>
      <attachid>237483</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-02 03:13:19 -0700</bug_when>
    <thetext>Created attachment 237483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032591</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-02 03:13:56 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032594</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-02 03:22:51 -0700</bug_when>
    <thetext>Already added some comments to the bug #123158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032617</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-02 08:14:47 -0700</bug_when>
    <thetext>Thanks for the review! I&apos;m going to upload a new patch.

(In reply to comment #53)
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:124
&gt; &gt; +const gchar* webkit_user_media_permission_get_origin(WebKitUserMediaPermissionRequest* request)
&gt; 
&gt; Is a string enough to represent a security origin?
&gt; 

I don&apos;t know. That&apos;s all I needed in the MiniBrowser but it&apos;s a weak argument :)
Also I wonder if that property should be stored in the parent class instead. I can also remove this for now and we&apos;d add it later.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:189
&gt; &gt; +    if (audio-&gt;value())
&gt; &gt; +        mediaParameters |= WEBKIT_USER_MEDIA_PARAMETERS_AUDIO;
&gt; &gt; +    if (video-&gt;value())
&gt; &gt; +        mediaParameters |= WEBKIT_USER_MEDIA_PARAMETERS_VIDEO;
&gt; 
&gt; So parameters is the media type?
&gt; 

yes

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h:55
&gt; &gt; +} WebKitUserMediaParameters;
&gt; 
&gt; I find it a bit confusing, using Parameters for the media type, or will this be expanded eventually with more &quot;parameters&quot;?
&gt; 

I don&apos;t think there will be new parameters... Another option would simply be 2 boolean properties, I don&apos;t really mind changing this code but it&apos;d be nice to decide so I don&apos;t lose more time with GObject :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032619</commentid>
    <comment_count>5</comment_count>
      <attachid>237487</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-02 08:17:01 -0700</bug_when>
    <thetext>Created attachment 237487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032628</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-02 08:33:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Thanks for the review! I&apos;m going to upload a new patch.
&gt; 
&gt; (In reply to comment #53)
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:124
&gt; &gt; &gt; +const gchar* webkit_user_media_permission_get_origin(WebKitUserMediaPermissionRequest* request)
&gt; &gt; 
&gt; &gt; Is a string enough to represent a security origin?
&gt; &gt; 
&gt; 
&gt; I don&apos;t know. That&apos;s all I needed in the MiniBrowser but it&apos;s a weak argument :)
&gt; Also I wonder if that property should be stored in the parent class instead. I can also remove this for now and we&apos;d add it later.

Yes, please.

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:189
&gt; &gt; &gt; +    if (audio-&gt;value())
&gt; &gt; &gt; +        mediaParameters |= WEBKIT_USER_MEDIA_PARAMETERS_AUDIO;
&gt; &gt; &gt; +    if (video-&gt;value())
&gt; &gt; &gt; +        mediaParameters |= WEBKIT_USER_MEDIA_PARAMETERS_VIDEO;
&gt; &gt; 
&gt; &gt; So parameters is the media type?
&gt; &gt; 
&gt; 
&gt; yes
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h:55
&gt; &gt; &gt; +} WebKitUserMediaParameters;
&gt; &gt; 
&gt; &gt; I find it a bit confusing, using Parameters for the media type, or will this be expanded eventually with more &quot;parameters&quot;?
&gt; &gt; 
&gt; 
&gt; I don&apos;t think there will be new parameters... Another option would simply be 2 boolean properties, I don&apos;t really mind changing this code but it&apos;d be nice to decide so I don&apos;t lose more time with GObject :)

I&apos;m fine with the flags, what I find confusing is the name &quot;parameters&quot; to refer to the media type this request is about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032650</commentid>
    <comment_count>7</comment_count>
      <attachid>237493</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-02 09:21:49 -0700</bug_when>
    <thetext>Created attachment 237493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048120</commentid>
    <comment_count>8</comment_count>
      <attachid>241416</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-12 00:44:31 -0800</bug_when>
    <thetext>Created attachment 241416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048142</commentid>
    <comment_count>9</comment_count>
      <attachid>241416</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-12 05:37:24 -0800</bug_when>
    <thetext>Comment on attachment 241416
Patch

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

Looks good to me in general, it&apos;s good that we can reuse the existing permission-request api

&gt; Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp:79
&gt;  }

Please, add a changelog entry for these changes too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:164
&gt; +        GRefPtr&lt;WebKitUserMediaPermissionRequest&gt; userMediaPermissionRequest = adoptGRef(webkitUserMediaPermissionRequestCreate(&amp;permissionRequest, &amp;securityOrigin));

Do not pass pointers, pass the references instead.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:111
&gt; + * Obtains the media parameters of the permission request. Some web
&gt; + * pages will ask access to only the audio device, while others might
&gt; + * ask access to the video device or both.
&gt; + *
&gt; + * Returns: the media parameters associated with the request.

You should document that the guint32 we are returning is a bitmask with the WebKitUserMediaTypes

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:115
&gt; +guint32 webkit_user_media_permission_get_media_types(WebKitUserMediaPermissionRequest* request)

I still find this name a bit confusing, but I&apos;m not familiar with the media APIs. Isn&apos;t this more about the type of request instead of the type of media? what about requested_media_types? does it sounds redundant?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:144
&gt; +     * The media device type(s) requested, either audio, video or both.

You should mention here that flags are WebKitUserMediaTypes

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:145
&gt; +     */

Since 2.8

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:157
&gt; +    WebKitUserMediaPermissionRequest* usermediaPermissionRequest = WEBKIT_USER_MEDIA_PERMISSION_REQUEST(g_object_new(WEBKIT_TYPE_USER_MEDIA_PERMISSION_REQUEST, NULL));

nullptr instead of NULL

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:165
&gt; +    RefPtr&lt;ImmutableDictionary&gt; parameters = request-&gt;mediaParameters();
&gt; +    API::Boolean* audio = reinterpret_cast&lt;API::Boolean*&gt;(parameters-&gt;get(&quot;audio&quot;));
&gt; +    API::Boolean* video = reinterpret_cast&lt;API::Boolean*&gt;(parameters-&gt;get(&quot;video&quot;));

I wonder why the proxy returns an array of API::Object. I would expect it to use non-API types that are converted to API types when passed to the C API.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h:48
&gt; + * Enum values used to specify which type of media device is requested.

If this is about media devices, what about WebKitMediaDeviceType? and webkit_media_permission_request_get_requested_device_types? Another option would be to not expose the enum, and provide methods to query this directly like get_requested_device_is_audio() and get_requested_device_is_video().

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h:49
&gt; + */

Since: 2.8

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:422
&gt; +        g_object_get(WEBKIT_USER_MEDIA_PERMISSION_REQUEST(request), &quot;media-types&quot;, &amp;media_types, NULL);

I would use webkit_user_media_permission_get_media_types() instead of g_object_get(), but in case of using g_object_get do not cast, since it expects a gpointer.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:695
&gt; +}

The get_media_types API is untested here, maybe we could another test to check that the values returned by get_media_types correspond to the values given in the JS (without doing any allow/deny check, since that&apos;s already tested by this one)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048385</commentid>
    <comment_count>10</comment_count>
      <attachid>241480</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-13 03:43:28 -0800</bug_when>
    <thetext>Created attachment 241480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048386</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-13 03:47:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:115
&gt; &gt; +guint32 webkit_user_media_permission_get_media_types(WebKitUserMediaPermissionRequest* request)
&gt; 
&gt; I still find this name a bit confusing, but I&apos;m not familiar with the media
&gt; APIs. Isn&apos;t this more about the type of request instead of the type of
&gt; media? what about requested_media_types? does it sounds redundant?
&gt; 

I think it&apos;s a bit redundant yeah.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h:48
&gt; &gt; + * Enum values used to specify which type of media device is requested.
&gt; 
&gt; If this is about media devices, what about WebKitMediaDeviceType? and
&gt; webkit_media_permission_request_get_requested_device_types? Another option
&gt; would be to not expose the enum, and provide methods to query this directly
&gt; like get_requested_device_is_audio() and get_requested_device_is_video().
&gt; 

I don&apos;t think the enum would grow so it&apos;d be also ok to simply use methods for this. What do Gustavo and Martin think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049458</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-11-18 04:53:35 -0800</bug_when>
    <thetext>So, I think methods or an enum won&apos;t really make a difference in terms of being future proof: we&apos;ll have to add either new enum entries or new methods if the number of media types ends up growing, anyway. We should probably consider what is more convenient for bindings, and I think methods are the answer in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049460</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-18 05:33:33 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; So, I think methods or an enum won&apos;t really make a difference in terms of
&gt; being future proof: we&apos;ll have to add either new enum entries or new methods
&gt; if the number of media types ends up growing, anyway. We should probably
&gt; consider what is more convenient for bindings, and I think methods are the
&gt; answer in this case.

What about the names? it seems to me that it should be WebKitMediaDeviceType instead of media type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049479</commentid>
    <comment_count>14</comment_count>
      <attachid>241789</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-18 07:36:47 -0800</bug_when>
    <thetext>Created attachment 241789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049480</commentid>
    <comment_count>15</comment_count>
      <attachid>241790</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-18 07:39:36 -0800</bug_when>
    <thetext>Created attachment 241790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049481</commentid>
    <comment_count>16</comment_count>
      <attachid>241791</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-18 07:42:40 -0800</bug_when>
    <thetext>Created attachment 241791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049759</commentid>
    <comment_count>17</comment_count>
      <attachid>241791</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-19 05:04:37 -0800</bug_when>
    <thetext>Comment on attachment 241791
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:106
&gt; + * Returns: TRUE if access to an audio device was requested.

%TRUE

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:110
&gt; +gboolean webkit_user_media_permission_is_audio(WebKitUserMediaPermissionRequest* request)

I have the same doubts about the names, this sounds to me like if the permission itself was audio, maybe is_audio_device? or is_for_audio_device?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:120
&gt; + * Returns: TRUE if access to a video device was requested.

%TRUE

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:155
&gt; +     * Wether the media device requested has a microphone or not.

We are not requesting a device, but permission to access a device, no?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:177
&gt; +

Extra line here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h:65
&gt; +WEBKIT_API gboolean
&gt; +webkit_user_media_permission_is_audio(WebKitUserMediaPermissionRequest *request);
&gt; +
&gt; +WEBKIT_API gboolean
&gt; +webkit_user_media_permission_is_video(WebKitUserMediaPermissionRequest *request);

Nit: the parameters should be lined up with the previous method webkit_user_media_permission_request_get_type

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:203
&gt; +            g_assert_cmpint(webkit_user_media_permission_is_audio(userMediaRequest), ==, test-&gt;m_expectedAudioMedia);
&gt; +            g_assert_cmpint(webkit_user_media_permission_is_video(userMediaRequest), ==, test-&gt;m_expectedVideoMedia);

Those are not actually int, use g_assert(a == b);

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:302
&gt; +    gboolean m_verifyMediaTypes;
&gt; +    gboolean m_expectedAudioMedia;
&gt; +    gboolean m_expectedVideoMedia;

Use bool instead of gboolean.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:702
&gt; +    test-&gt;loadHtml(userMediaRequestHTML, 0);

nullptr instead of 0

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:707
&gt; +    test-&gt;loadHtml(userMediaRequestHTML, 0);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:739
&gt; +    test-&gt;loadHtml(userMediaRequestHTML, 0);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050096</commentid>
    <comment_count>18</comment_count>
      <attachid>241934</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-20 02:08:35 -0800</bug_when>
    <thetext>Created attachment 241934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050386</commentid>
    <comment_count>19</comment_count>
      <attachid>241934</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-20 23:04:00 -0800</bug_when>
    <thetext>Comment on attachment 241934
Patch

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

The GTK+ API looks good to me, please ask a WebKit2 owner to review the cross-platform changes before landing. Thanks!

&gt; Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp:76
&gt; +    // FIXME: fill source vectors

Nit: finish the comment with period. A bug link for these FIXMEs would be great too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:23
&gt; +#include &quot;WebKitEnumTypes.h&quot;

I don&apos;t think you need this

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:27
&gt; +#include &lt;wtf/text/CString.h&gt;

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h:25
&gt; +WebKitUserMediaPermissionRequest* webkitUserMediaPermissionRequestCreate(WebKit::UserMediaPermissionRequestProxy&amp;, WebKit::WebSecurityOrigin&amp;);

I wonder why you don&apos;t need to include UserMediaPermissionRequestProxy.h or forward declare the class, same for WebSecurityOrigin. I guess there&apos;s something in WebKitPrivate.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050469</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-21 08:50:03 -0800</bug_when>
    <thetext>Adding Benjamin in CC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050470</commentid>
    <comment_count>21</comment_count>
      <attachid>241934</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-21 08:51:13 -0800</bug_when>
    <thetext>Comment on attachment 241934
Patch

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

&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h:42
&gt; -    PassRefPtr&lt;ImmutableDictionary&gt; mediaParameters() const { return m_mediaParameters; }
&gt; +    bool audio() const { return m_audio; }
&gt; +    bool video() const { return m_video; }

What do you think about this API change, Benjamin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052806</commentid>
    <comment_count>22</comment_count>
      <attachid>241934</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-12-05 12:37:47 -0800</bug_when>
    <thetext>Comment on attachment 241934
Patch

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

Approved for WebKit2.

Please poke me on IRC when you need me to rubber-stamp something. I easily miss emails.

&gt; Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp:65
&gt; +    // FIXME: Actually do constraints validation.

IMHO, you should extend this FIXME to fully explain what is missing.

&gt;&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h:42
&gt;&gt; +    bool video() const { return m_video; }
&gt; 
&gt; What do you think about this API change, Benjamin?

That simplification make sense for the permission request but the name is a bit too generic.

Maybe audioConstraint()? needsAudio()? requestAudio()? requiresAudio()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053420</commentid>
    <comment_count>23</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-08 10:15:49 -0800</bug_when>
    <thetext>Thanks Benjamin, I went with the requires{Audio,Video} version and explained the FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053421</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-08 10:16:22 -0800</bug_when>
    <thetext>Committed r176952: &lt;http://trac.webkit.org/changeset/176952&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237483</attachid>
            <date>2014-09-02 03:13:19 -0700</date>
            <delta_ts>2014-09-02 08:17:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>24869</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiZmQxNTFhOTc0ZDVkNzdlYmIyMDJlY2FjNmYyYzY1MmM1YmQyM2Q2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyOSArKysKIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlICAgICAgICAg
ICAgICAgICAgIHwgICA0ICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJ
Q2xpZW50LmNwcCAgIHwgICA4ICsKIC4uLi9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmNwcCAgIHwgMTk5ICsrKysrKysrKysrKysrKysrKysrKwogLi4uL0FQSS9ndGsv
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAgICAgfCAgODEgKysrKysrKysrCiAu
Li4vZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oICB8ICAyNyAr
KysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sICAgIHwg
ICAxICsKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
IHwgIDIxICsrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oICAg
ICAgICAgfCAgIDEgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMTYgKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMg
ICAgICAgICAgICAgIHwgIDM4ICsrKy0KIDExIGZpbGVzIGNoYW5nZWQsIDQxNiBpbnNlcnRpb25z
KCspLCA5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
aXZhdGUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2YzY2ZGQ0Li42MjhhYTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzIgQEAKKzIwMTQtMDktMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOiBHVEstc3BlY2lmaWMgbmV3IGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogIERlY2lkZVBvbGljeSBoYW5kbGVyCisgICAg
ICAgIGltcGxlbWVudGF0aW9uIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5j
cHA6IEFkZGVkLAorICAgICAgICBXZWJLaXRHVEsgQVBJIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdCwgdmVyeSBzaW1pbGFyIHRvIHRoZQorICAgICAgICBvbmUgdXNlZCBmb3IgR2VvbG9j
YXRpb24uCisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KToK
KyAgICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAg
ICh3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdl
YmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9wYXJhbWV0ZXJzKToKKyAgICAgICAgKHdlYmtpdF91
c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdpbik6CisgICAgICAgICh3ZWJraXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbDogRXhwb3NlIG5ldyBBUEkKKyAgICAgICAgaW4gZG9jdW1lbnRhdGlvbi4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEV4cG9zZSBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCBBUEkuCisKIDIwMTQtMDktMDEgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXSzJdIFVzZXJNZWRpYUNsaWVudCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDcyZGE3YmIuLmI1OGIzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMTMsNiArMjEzLDkgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQ
cml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4KICAgICBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzU0LDYgKzM1Nyw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5o
CiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2Uu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGll
bnQuY3BwCmluZGV4IDlkNmE4ZWMuLjBlYzk1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKQEAg
LTE1OCw2ICsxNTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CisgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHBlcm1pc3Npb25S
ZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdD4gdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocGVybWlzc2lvblJlcXVlc3Qs
IHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJl
cXVlc3QobV93ZWJWaWV3LCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKHVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAg
IHZpcnR1YWwgdm9pZCBwcmludEZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIGZy
YW1lKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1ByaW50RnJhbWUobV93
ZWJWaWV3LCBmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJkN2MwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaCIKKworI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aCIKKyNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRp
b246IEEgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBhY2Nlc3NpbmcgdXNlcidzIGF1ZGlvL3ZpZGVv
IGRldmljZXMuCisgKiBAVGl0bGU6IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Cisg
KiBAU2VlX2Fsc286ICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCwgI1dlYktpdFdlYlZpZXcKKyAq
CisgKiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVz
dCBmb3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBiZSBh
bGxvd2VkIHRvIGFjY2VzcyB0aGUgdXNlcidzCisgKiBhdWRpbyBhbmQgdmlkZW8gc291cmNlIGRl
dmljZXMgd2hlbiByZXF1ZXN0ZWQgdGhyb3VnaHQgdGhlIGdldFVzZXJNZWRpYSBBUEkuCisgKi8K
KworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfT1JJR0lOLAorICAgIFBST1BfUEFSQU1F
VEVSUworfTsKKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZh
Y2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdDsKKyAgICB1aW50MzJfdCBtZWRpYVBhcmFt
ZXRlcnM7CisgICAgYm9vbCBtYWRlRGVjaXNpb247CisgICAgZ2NoYXIqIG9yaWdpbjsKK307CisK
K1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdCwgR19UWVBF
X09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfUEVSTUlTU0lP
Tl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KSkKKwor
c3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1J
U1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9u
IGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYtPnJlcXVlc3QtPmFs
bG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VC
S0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkg
b25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYt
PnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSkK
K3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFs
bG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RE
ZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKG9i
amVjdCk7CisKKyAgICBnX2ZyZWUocmVxdWVzdC0+cHJpdi0+b3JpZ2luKTsKKworICAgIC8vIERl
ZmF1bHQgYmVoYXZpb3VyIHdoZW4gbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5n
IHRoZSByZXF1ZXN0LgorICAgIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShX
RUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3Nl
KG9iamVjdCk7Cit9CisKK2d1aW50MzIgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRf
cGFyYW1ldGVycyhXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCksIFdFQktJVF9VU0VSX01FRElBX1BBUkFNRVRFUlNfTk9ORSk7CisK
KyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+bWVkaWFQYXJhbWV0ZXJzOworfQorCisvKioKKyAq
IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdpbjoKKyAqIEByZXF1ZXN0OiBh
ICNXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIE9idGFpbnMgdGhlIFVS
SSBvZiB0aGUgc2VjdXJpdHkgb3JpZ2luIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViIHBhZ2UKKyAq
IHJlcXVlc3RpbmcgdGhlIHBlcm1pc3Npb24gdG8gYWNjZWMgbWVkaWEgZGV2aWNlKHMpLgorICoK
KyAqIFJldHVybnM6IHRoZSBzZWN1cml0eSBvcmlnaW4gVVJJIG9yIGFuIGVtcHR5IHN0cmluZy4K
KyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdp
bihXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qo
cmVxdWVzdCksICIiKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5vcmlnaW47Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVx
dWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpOworCisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfT1JJR0lOOgorICAgICAgICBnX3Zh
bHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29y
aWdpbihyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQVJBTUVURVJT
OgorICAgICAgICBnX3ZhbHVlX3NldF9mbGFncyh2YWx1ZSwgd2Via2l0X3VzZXJfbWVkaWFfcGVy
bWlzc2lvbl9nZXRfcGFyYW1ldGVycyhyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3
ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2U7CisgICAgb2JqZWN0Q2xhc3Mt
PmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVy
dHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyUGVybWlzc2lvblJlcXVlc3Q6b3JpZ2lu
OgorICAgICAqCisgICAgICogVGhlIHNlY3VyaXR5IG9yaWdpbiBVUkwgYXNzb2NpYXRlZCB3aXRo
IHRoZSB3ZWIgcGFnZSByZXF1ZXN0aW5nIHRoZSBwZXJtaXNzaW9uLgorICAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfT1JJR0lOLAor
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJvcmlnaW4iLCBfKCJPcmlnaW4iKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBzZWN1cml0eSBvcmlnaW4gVVJMIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2Vi
IHBhZ2UgcmVxdWVzdGluZyB0aGUgcGVybWlzc2lvbiIpLAorICAgICAgICAgICAgMCwgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyUGVybWlzc2lv
blJlcXVlc3Q6cGFyYW1ldGVyczoKKyAgICAgKgorICAgICAqIFRoZSBtZWRpYSBkZXZpY2UgdHlw
ZShzKSByZXF1ZXN0ZWQsIGVpdGhlciBhdWRpbywgdmlkZW8gb3IgYm90aC4KKyAgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1BBUkFN
RVRFUlMsCisgICAgICAgIGdfcGFyYW1fc3BlY19mbGFncygicGFyYW1ldGVycyIsIF8oIk1lZGlh
IHBhcmFtZXRlcnMiKSwKKyAgICAgICAgICAgIF8oIlRoZSBtZWRpYSBkZXZpY2UgdHlwZShzKSBy
ZXF1ZXN0ZWQsIGVpdGhlciBhdWRpbywgdmlkZW8gb3IgYm90aCIpLAorICAgICAgICAgICAgV0VC
S0lUX1RZUEVfVVNFUl9NRURJQV9QQVJBTUVURVJTLAorICAgICAgICAgICAgV0VCS0lUX1VTRVJf
TUVESUFfUEFSQU1FVEVSU19OT05FLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxF
KSk7CisKK30KKworV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkqIHJlcXVlc3QsIFdlYlNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK3sKKyAgICBX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlcm1lZGlhUGVybWlzc2lvblJlcXVl
c3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBOVUxMKSk7CisgICAgdWlu
dDMyX3QgbWVkaWFQYXJhbWV0ZXJzID0gMDsKKworICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9u
YXJ5PiBwYXJhbWV0ZXJzID0gcmVxdWVzdC0+bWVkaWFQYXJhbWV0ZXJzKCk7CisgICAgQVBJOjpC
b29sZWFuKiBhdWRpbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVBJOjpCb29sZWFuKj4ocGFyYW1ldGVy
cy0+Z2V0KCJhdWRpbyIpKTsKKyAgICBBUEk6OkJvb2xlYW4qIHZpZGVvID0gcmVpbnRlcnByZXRf
Y2FzdDxBUEk6OkJvb2xlYW4qPihwYXJhbWV0ZXJzLT5nZXQoInZpZGVvIikpOworCisgICAgaWYg
KGF1ZGlvLT52YWx1ZSgpKQorICAgICAgICBtZWRpYVBhcmFtZXRlcnMgfD0gV0VCS0lUX1VTRVJf
TUVESUFfUEFSQU1FVEVSU19BVURJTzsKKyAgICBpZiAodmlkZW8tPnZhbHVlKCkpCisgICAgICAg
IG1lZGlhUGFyYW1ldGVycyB8PSBXRUJLSVRfVVNFUl9NRURJQV9QQVJBTUVURVJTX1ZJREVPOwor
CisgICAgdXNlcm1lZGlhUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSByZXF1ZXN0
OworICAgIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0LT5wcml2LT5tZWRpYVBhcmFtZXRlcnMg
PSBtZWRpYVBhcmFtZXRlcnM7CisKKyAgICBTdHJpbmcgb3JpZ2luID0gc2VjdXJpdHlPcmlnaW4t
PnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAg
b3JpZ2luID0gIiI7CisgICAgdXNlcm1lZGlhUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPm9yaWdp
biA9IGdfc3RyZHVwKG9yaWdpbi51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gdXNlcm1lZGlh
UGVybWlzc2lvblJlcXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc4MGFiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZiAh
ZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxB
VElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBk
aXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdF9oCisjZGVmaW5lIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1J
U1NJT05fUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3Jl
cXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9S
RVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJ
T05fUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFz
cyksICBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX01F
RElBX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BF
Uk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RDbGFzcyAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3M7Cit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKKworLyoqCisgKiBXZWJLaXRV
c2VyTWVkaWFQYXJhbWV0ZXJzOgorICogQFdFQktJVF9VU0VSX01FRElBX1BBUkFNRVRFUlNfTk9O
RTogbm8gbWVkaWEuIFNob3VsZG4ndCBoYXBwZW4uCisgKiBAV0VCS0lUX1VTRVJfTUVESUFfUEFS
QU1FVEVSU19BVURJTzogQXVkaW8gaW5wdXQgZGV2aWNlLgorICogQFdFQktJVF9VU0VSX01FRElB
X1BBUkFNRVRFUlNfVklERU86IFZpZGVvIGlucHV0IGRldmljZS4KKyAqCisgKiBFbnVtIHZhbHVl
cyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggdHlwZSBvZiBtZWRpYSBkZXZpY2UgaXMgcmVxdWVzdGVk
LgorICovCit0eXBlZGVmIGVudW0geworICBXRUJLSVRfVVNFUl9NRURJQV9QQVJBTUVURVJTX05P
TkUsCisKKyAgV0VCS0lUX1VTRVJfTUVESUFfUEFSQU1FVEVSU19BVURJTyA9IDEgPDwgMCwKKyAg
V0VCS0lUX1VTRVJfTUVESUFfUEFSQU1FVEVSU19WSURFTyA9IDEgPDwgMQorfSBXZWJLaXRVc2Vy
TWVkaWFQYXJhbWV0ZXJzOworCitzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVj
dCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQp
OworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZv
aWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF90eXBlICh2b2lkKTsKKworZ3VpbnQzMiB3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2dldF9wYXJhbWV0ZXJzKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KiByZXF1ZXN0KTsKK2NvbnN0IGdjaGFyKiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dl
dF9vcmlnaW4oV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpOworCitH
X0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ3MjE5
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
aXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVf
aAorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmgiCisKK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KiB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqLCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luKik7CisK
KyNlbmRpZiAvLyBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1kb2NzLnNnbWwKaW5kZXggNjYzODdkZi4uYWZmYmRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDg1ZWNmNzEuLmIyMWYyZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNTkxLDYgKzU5MSwyNyBAQCB3ZWJraXRfbmF2aWdhdGlv
bl9hY3Rpb25fZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0CitXZWJLaXRVc2VyTWVkaWFQYXJhbWV0ZXJzCit3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2dldF9wYXJhbWV0ZXJzCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dl
dF9vcmlnaW4KKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVT
VAorV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfSVNfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVR
VUVTVF9DTEFTUworV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNT
CitXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJT
RUNUSU9OIFByaXZhdGU+CitXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUK
K3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9O
PgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdFBvbGljeURlY2lzaW9uPC9GSUxFPgogV2ViS2l0
UG9saWN5RGVjaXNpb24KIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBkNzkxNjNlLi5iNzhkYzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC02Miw2
ICs2Miw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lv
bi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzlkOWIwZC4uNzhlNTZiMiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0
LTA5LTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBVc2VyTWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEdUSyB2ZXJzaW9uIG9mIHRoZSBN
aW5pQnJvd3NlciBoYXMgZ2FpbmVkIFVzZXJNZWRpYSBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVl
c3Qgc3VwcG9ydC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6
IFNob3cgYSBwb3B1cCB3aGVuIHRoZSBwYWdlCisgICAgICAgIHJlcXVpcmVzIHVzZXIgcGVybWlz
c2lvbiB0byBhY2Nlc3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4KKyAgICAgICAgKHBlcm1pc3Npb25S
ZXF1ZXN0RGlhbG9nQ2FsbGJhY2spOgorICAgICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25S
ZXF1ZXN0KToKKyAgICAgICAgKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogRGVs
ZXRlZC4KKwogMjAxNC0wOS0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1dLMl0gVXNlck1lZGlhQ2xpZW50IHN1cHBvcnQKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDI3NTQ5MzEuLjYxNmNjY2MgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyB2b2lk
IGJhY2tGb3J3YWRsaXN0Q2hhbmdlZChXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRs
aXN0LCBXZWJLaXRCCiAgICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKHdp
bmRvdywgYmFja0ZvcndhZGxpc3QpOwogfQogCi1zdGF0aWMgdm9pZCBnZW9sb2NhdGlvblJlcXVl
c3REaWFsb2dDYWxsYmFjayhHdGtEaWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZSwgV2ViS2l0
UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpCitzdGF0aWMgdm9pZCBwZXJtaXNzaW9uUmVxdWVz
dERpYWxvZ0NhbGxiYWNrKEd0a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CiAg
ICAgY2FzZSBHVEtfUkVTUE9OU0VfWUVTOgpAQCAtNDA2LDE5ICs0MDYsMzkgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KIAogc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9u
UmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAq
cmVxdWVzdCwgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewotICAgIGlmICghV0VCS0lUX0lTX0dF
T0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKKyAgICBnY2hhciAqZGlhbG9n
X3RpdGxlID0gTlVMTDsKKyAgICBnY2hhciAqZGlhbG9nX21lc3NhZ2UgPSBOVUxMOworICAgIGdj
aGFyICpkaWFsb2dfbWVzc2FnZV9mb3JtYXQgPSBOVUxMOworCisgICAgaWYgKFdFQktJVF9JU19H
RU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9n
X3RpdGxlID0gIkdlb2xvY2F0aW9uIHJlcXVlc3QiOworICAgICAgICBkaWFsb2dfbWVzc2FnZV9m
b3JtYXQgPSAiJXMiOworICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJBbGxvdyBnZW9sb2NhdGlv
biByZXF1ZXN0PyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0g
IkFsbG93IGFjY2VzcyB0byAlcyBkZXZpY2U/IjsKKyAgICAgICAgV2ViS2l0VXNlck1lZGlhUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAgICBjb25zdCBnY2hhciAqb3JpZ2luOworICAgICAg
ICBnX29iamVjdF9nZXQoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpLCAicGFyYW1ldGVycyIsICZwYXJhbWV0ZXJzLCAib3JpZ2luIiwgJm9yaWdpbiwgTlVMTCk7
CisgICAgICAgIGRpYWxvZ190aXRsZSA9IGdfc3RyZHVwX3ByaW50ZigiVXNlck1lZGlhIHJlcXVl
c3QgZnJvbSAlcyIsIG9yaWdpbik7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzICYgV0VCS0lUX1VT
RVJfTUVESUFfUEFSQU1FVEVSU19BVURJTykgeworICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMg
JiBXRUJLSVRfVVNFUl9NRURJQV9QQVJBTUVURVJTX1ZJREVPKQorICAgICAgICAgICAgICAgIGRp
YWxvZ19tZXNzYWdlID0gImF1ZGlvL3ZpZGVvIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJhdWRpbyI7CisgICAgICAgIH0gZWxzZSBpZiAocGFy
YW1ldGVycyAmIFdFQktJVF9VU0VSX01FRElBX1BBUkFNRVRFUlNfVklERU8pCisgICAgICAgICAg
ICBkaWFsb2dfbWVzc2FnZSA9ICJ2aWRlbyI7CisgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBG
QUxTRTsKIAogICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhH
VEtfV0lORE9XKHdpbmRvdyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJF
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19N
RVNTQUdFX1FVRVNUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJHZW9sb2NhdGlvbiByZXF1ZXN0Iik7CisgICAgICAgIEdUS19E
SUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAgIEdU
S19NRVNTQUdFX1FVRVNUSU9OLAorICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAg
ICIlcyIsIGRpYWxvZ190aXRsZSk7CiAKLSAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3Nl
Y29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhkaWFsb2cpLCAiQWxsb3cgZ2VvbG9jYXRp
b24gcmVxdWVzdD8iKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwg
R19DQUxMQkFDSyhnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayksIGdfb2JqZWN0X3Jl
ZihyZXF1ZXN0KSk7CisgICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zvcm1hdF9zZWNvbmRhcnlfdGV4
dChHVEtfTUVTU0FHRV9ESUFMT0coZGlhbG9nKSwgZGlhbG9nX21lc3NhZ2VfZm9ybWF0LCBkaWFs
b2dfbWVzc2FnZSk7CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdf
Q0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3REaWFsb2dDYWxsYmFjayksIGdfb2JqZWN0X3JlZihy
ZXF1ZXN0KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7Ci0KICAgICByZXR1cm4gVFJV
RTsKIH0KIAotLSAKMi4xLjA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237487</attachid>
            <date>2014-09-02 08:17:01 -0700</date>
            <delta_ts>2014-09-02 09:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>30136</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiNTZiOTgzODRiNGIzYmJlMGM5ODEyMTE3OTM1YzBjOGYxNjI2MzdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcCAg
ICAgICB8ICAxNyArLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMjkgKysrCiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSAgICAg
ICAgICAgICAgICAgICB8ICAgNCArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVSUNsaWVudC5jcHAgICB8ICAgOCArCiAuLi4vQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC5jcHAgICB8IDIxMCArKysrKysrKysrKysrKysrKysrKysKIC4uLi9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggICAgIHwgIDg0ICsrKysrKysr
KwogLi4uL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCAgfCAg
MjcgKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCAg
ICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dCB8ICAyMSArKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aCAgICAgICAgIHwgICAxICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDE2ICsrCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jICAgICAgICAgICAgICB8ICA0MSArKystCiAuLi4vVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlD
bGllbnQuY3BwICAgICAgICAgICAgICB8ICAzOCArKystCiAxMyBmaWxlcyBjaGFuZ2VkLCA0ODEg
aW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNl
bnRlckdTdHJlYW1lci5jcHAKaW5kZXggY2VkYjAzOS4uZDg3ZTNkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2Vu
dGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCkBAIC01OSwxNCArNTks
MjMgQEAgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6On5NZWRpYVN0cmVhbUNlbnRlckdTdHJl
YW1lcigpCiB7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4pCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp2YWxpZGF0ZVJlcXVlc3RDb25z
dHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xp
ZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OworICAgIC8vIEZJWE1FOiBB
Y3R1YWxseSBkbyBjb25zdHJhaW50cyB2YWxpZGF0aW9uLgorICAgIGNsaWVudC0+Y29uc3RyYWlu
dHNWYWxpZGF0ZWQoKTsKIH0KICAgICAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6
OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4pCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpjcmVhdGVNZWRpYVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OworICAgIEFTU0VSVChjbGllbnQpOworCisg
ICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IGF1ZGlvU291cmNlczsKKyAgICBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gdmlkZW9Tb3VyY2VzOworICAgIC8vIEZJ
WE1FOiBmaWxsIHNvdXJjZSB2ZWN0b3JzCisgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVk
aWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKKwog
fQogCiBib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNmM2NmRkNC4uNjI4YWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDE0LTA5LTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBVc2VyTWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZTogR1RLLXNwZWNpZmljIG5ldyBmaWxlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVSUNsaWVudC5jcHA6ICBEZWNpZGVQb2xpY3kgaGFuZGxlcgorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiBmb3IgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRl
ZCwKKyAgICAgICAgV2ViS2l0R1RLIEFQSSBmb3IgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qs
IHZlcnkgc2ltaWxhciB0byB0aGUKKyAgICAgICAgb25lIHVzZWQgZm9yIEdlb2xvY2F0aW9uLgor
ICAgICAgICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAg
ICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkpOgorICAgICAgICAod2Via2l0
X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9nZXRfcGFyYW1ldGVycyk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX2dldF9vcmlnaW4pOgorICAgICAgICAod2Via2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6
IEV4cG9zZSBuZXcgQVBJCisgICAgICAgIGluIGRvY3VtZW50YXRpb24uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOiBFeHBvc2UgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QgQVBJLgorCiAyMDE0LTA5LTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0syXSBVc2VyTWVkaWFDbGllbnQgc3VwcG9ydApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3MmRhN2JiLi5iNThiMzIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjEzLDYgKzIxMyw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5o
CiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5o
CiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgK
KyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
aXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5oLmluCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM1NCw2ICszNTcsNyBAQCBzZXQoV2ViS2l0MkdUS19J
TlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuaAogICAgICR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApp
bmRleCA5ZDZhOGVjLi4wZWM5NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0TmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCkBAIC0xNTgsNiAr
MTU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZp
cnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KiBwZXJtaXNzaW9uUmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3Q+IHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKHBlcm1pc3Npb25SZXF1ZXN0LCBzZWN1cml0
eU9yaWdpbikpOworICAgICAgICB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KG1f
d2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdC5nZXQoKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICB2aXJ0dWFs
IHZvaWQgcHJpbnRGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKG1fd2ViVmlldywg
ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYjljYjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAKQEAgLTAsMCArMSwyMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
SWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisK
KyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCisjaW5j
bHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCisjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHBl
cm1pc3Npb24gcmVxdWVzdCBmb3IgYWNjZXNzaW5nIHVzZXIncyBhdWRpby92aWRlbyBkZXZpY2Vz
LgorICogQFRpdGxlOiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9h
bHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICogV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgcmVwcmVzZW50cyBhIHJlcXVlc3QgZm9yCisg
KiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgYmUgYWxsb3dlZCB0
byBhY2Nlc3MgdGhlIHVzZXIncworICogYXVkaW8gYW5kIHZpZGVvIHNvdXJjZSBkZXZpY2VzIHdo
ZW4gcmVxdWVzdGVkIHRocm91Z2h0IHRoZSBnZXRVc2VyTWVkaWEgQVBJLgorICoKKyAqIFNpbmNl
OiAyLjgKKyAqLworCitlbnVtIHsKKyAgICBQUk9QXzAsCisgICAgUFJPUF9PUklHSU4sCisgICAg
UFJPUF9QQVJBTUVURVJTCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1
ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKKworc3Ry
dWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgeworICAgIFJlZlB0
cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0OworICAgIHVpbnQzMl90
IG1lZGlhUGFyYW1ldGVyczsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsKKyAgICBDU3RyaW5nIG9y
aWdpbjsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVx
dWVzdCwgR19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZ
UEVfUEVSTUlTU0lPTl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFj
ZV9pbml0KSkKKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RB
bGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VC
S0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkg
b25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYt
PnJlcXVlc3QtPmFsbG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBBU1NFUlQoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
KTsKKworICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKwor
ICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURl
Y2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVl
OworICAgIHByaXYtPnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Bl
cm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElm
YWNlKiBpZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICAvLyBEZWZhdWx0IGJlaGF2aW91ciB3aGVuIG5vIGRl
Y2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0aGUgcmVxdWVzdC4KKyAgICB3ZWJraXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChv
YmplY3QpKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9u
X3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOworfQorCisvKioKKyAqIHdl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X3BhcmFtZXRlcnM6CisgKiBAcmVxdWVzdDog
YSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBPYnRhaW5zIHRoZSBt
ZWRpYSBwYXJhbWV0ZXJzIG9mIHRoZSBwZXJtaXNzaW9uIHJlcXVlc3QuIFNvbWUgd2ViCisgKiBw
YWdlcyB3aWxsIGFzayBhY2Nlc3MgdG8gb25seSB0aGUgYXVkaW8gZGV2aWNlLCB3aGlsZSBvdGhl
cnMgbWlnaHQKKyAqIGFzayBhY2Nlc3MgdG8gdGhlIHZpZGVvIGRldmljZSBvciBib3RoLgorICoK
KyAqIFJldHVybnM6IHRoZSBtZWRpYSBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVx
dWVzdC4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK2d1aW50MzIgd2Via2l0X3VzZXJfbWVkaWFf
cGVybWlzc2lvbl9nZXRfcGFyYW1ldGVycyhXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCksIFdFQktJVF9VU0VSX01FRElBX1BBUkFN
RVRFUlNfTk9ORSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+bWVkaWFQYXJhbWV0ZXJz
OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdpbjoK
KyAqIEByZXF1ZXN0OiBhICNXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAq
IE9idGFpbnMgdGhlIFVSSSBvZiB0aGUgc2VjdXJpdHkgb3JpZ2luIGFzc29jaWF0ZWQgd2l0aCB0
aGUgd2ViIHBhZ2UKKyAqIHJlcXVlc3RpbmcgdGhlIHBlcm1pc3Npb24gdG8gYWNjZXNzIG1lZGlh
IGRldmljZShzKS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgc2VjdXJpdHkgb3JpZ2luIFVSSSBvciBO
VUxMLgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdpbihXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAgcmV0dXJuIHJl
cXVlc3QtPnByaXYtPm9yaWdpbi5kYXRhKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAg
ICBjYXNlIFBST1BfT1JJR0lOOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdpbihyZXF1ZXN0KSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9QQVJBTUVURVJTOgorICAgICAgICBnX3ZhbHVlX3NldF9m
bGFncyh2YWx1ZSwgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfcGFyYW1ldGVycyhy
ZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVz
dF9jbGFzc19pbml0KFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFz
cyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdERpc3Bvc2U7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHk7CisKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRVc2VyUGVybWlzc2lvblJlcXVlc3Q6b3JpZ2luOgorICAgICAqCisgICAgICogVGhlIHNl
Y3VyaXR5IG9yaWdpbiBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgcGFnZSByZXF1ZXN0aW5n
IHRoZSBwZXJtaXNzaW9uLgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkob2JqZWN0Q2xhc3MsIFBST1BfT1JJR0lOLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3Ry
aW5nKCJvcmlnaW4iLCBfKCJPcmlnaW4iKSwKKyAgICAgICAgICAgIF8oIlRoZSBzZWN1cml0eSBv
cmlnaW4gVVJMIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViIHBhZ2UgcmVxdWVzdGluZyB0aGUgcGVy
bWlzc2lvbiIpLAorICAgICAgICAgICAgbnVsbHB0ciwgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyUGVybWlzc2lvblJlcXVlc3Q6cGFyYW1ldGVy
czoKKyAgICAgKgorICAgICAqIFRoZSBtZWRpYSBkZXZpY2UgdHlwZShzKSByZXF1ZXN0ZWQsIGVp
dGhlciBhdWRpbywgdmlkZW8gb3IgYm90aC4KKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1BBUkFNRVRFUlMsCisgICAgICAgIGdf
cGFyYW1fc3BlY19mbGFncygicGFyYW1ldGVycyIsIF8oIk1lZGlhIHBhcmFtZXRlcnMiKSwKKyAg
ICAgICAgICAgIF8oIlRoZSBtZWRpYSBkZXZpY2UgdHlwZShzKSByZXF1ZXN0ZWQsIGVpdGhlciBh
dWRpbywgdmlkZW8gb3IgYm90aCIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRURJ
QV9QQVJBTUVURVJTLAorICAgICAgICAgICAgV0VCS0lUX1VTRVJfTUVESUFfUEFSQU1FVEVSU19O
T05FLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKK30KKworV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Q3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHJlcXVlc3QsIFdlYlNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK3sKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCogdXNlcm1lZGlhUGVybWlzc2lvblJlcXVlc3QgPSBXRUJLSVRfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNULCBOVUxMKSk7CisgICAgdWludDMyX3QgbWVkaWFQYXJhbWV0
ZXJzID0gMDsKKworICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwYXJhbWV0ZXJzID0g
cmVxdWVzdC0+bWVkaWFQYXJhbWV0ZXJzKCk7CisgICAgQVBJOjpCb29sZWFuKiBhdWRpbyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QVBJOjpCb29sZWFuKj4ocGFyYW1ldGVycy0+Z2V0KCJhdWRpbyIpKTsK
KyAgICBBUEk6OkJvb2xlYW4qIHZpZGVvID0gcmVpbnRlcnByZXRfY2FzdDxBUEk6OkJvb2xlYW4q
PihwYXJhbWV0ZXJzLT5nZXQoInZpZGVvIikpOworCisgICAgaWYgKGF1ZGlvLT52YWx1ZSgpKQor
ICAgICAgICBtZWRpYVBhcmFtZXRlcnMgfD0gV0VCS0lUX1VTRVJfTUVESUFfUEFSQU1FVEVSU19B
VURJTzsKKyAgICBpZiAodmlkZW8tPnZhbHVlKCkpCisgICAgICAgIG1lZGlhUGFyYW1ldGVycyB8
PSBXRUJLSVRfVVNFUl9NRURJQV9QQVJBTUVURVJTX1ZJREVPOworCisgICAgdXNlcm1lZGlhUGVy
bWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSByZXF1ZXN0OworICAgIHVzZXJtZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LT5wcml2LT5tZWRpYVBhcmFtZXRlcnMgPSBtZWRpYVBhcmFtZXRlcnM7
CisgICAgdXNlcm1lZGlhUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPm9yaWdpbiA9IHNlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkudXRmOCgpOworCisgICAgcmV0dXJu
IHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4YjllMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJ
VDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUg
aW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X3VzZXJfbWVkaWFfcGVy
bWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BF
Uk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9D
QVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRURJ
QV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qs
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRf
SVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9O
X1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgICAgICAgIFdlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJpdmF0ZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU7CisKKy8qKgor
ICogV2ViS2l0VXNlck1lZGlhUGFyYW1ldGVyczoKKyAqIEBXRUJLSVRfVVNFUl9NRURJQV9QQVJB
TUVURVJTX05PTkU6IG5vIG1lZGlhLgorICogQFdFQktJVF9VU0VSX01FRElBX1BBUkFNRVRFUlNf
QVVESU86IEF1ZGlvIGlucHV0IGRldmljZS4KKyAqIEBXRUJLSVRfVVNFUl9NRURJQV9QQVJBTUVU
RVJTX1ZJREVPOiBWaWRlbyBpbnB1dCBkZXZpY2UuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0
byBzcGVjaWZ5IHdoaWNoIHR5cGUgb2YgbWVkaWEgZGV2aWNlIGlzIHJlcXVlc3RlZC4KKyAqLwor
dHlwZWRlZiBlbnVtIHsKKyAgV0VCS0lUX1VTRVJfTUVESUFfUEFSQU1FVEVSU19OT05FLAorCisg
IFdFQktJVF9VU0VSX01FRElBX1BBUkFNRVRFUlNfQVVESU8gPSAxIDw8IDAsCisgIFdFQktJVF9V
U0VSX01FRElBX1BBUkFNRVRFUlNfVklERU8gPSAxIDw8IDEKK30gV2ViS2l0VXNlck1lZGlhUGFy
YW1ldGVyczsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCB7Cisg
ICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJl
bnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307
CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVz
dF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9nZXRfcGFyYW1ldGVycyAgIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3Vz
ZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfb3JpZ2luICAgICAgIChXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDcyMTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIKKworV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0Q3JlYXRlKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSosIFdl
YktpdDo6V2ViU2VjdXJpdHlPcmlnaW4qKTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA2NjM4N2Rm
Li5hZmZiZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTI0LDYgKzI0LDcgQEAKICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25BY3Rpb24u
eG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQb2xpY3lE
ZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRS
ZXNwb25zZVBvbGljeURlY2lzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5k
ZXggODVlY2Y3MS4uYjIxZjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC01OTEs
NiArNTkxLDI3IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PC9G
SUxFPgorV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKK1dlYktpdFVzZXJNZWRpYVBh
cmFtZXRlcnMKK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X3BhcmFtZXRlcnMKK3dl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X29yaWdpbgorCis8U1VCU0VDVElPTiBTdGFu
ZGFyZD4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBF
X1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1QKK1dFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVAorV0VC
S0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJ
T05fUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0
UG9saWN5RGVjaXNpb248L0ZJTEU+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl9kb3dubG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCmluZGV4IGQ3OTE2M2UuLmI3OGRjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJD
b250ZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOWQ5
YjBkLi43OGU1NmIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDktMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9u
IFJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzY0NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgR1RLIHZlcnNpb24gb2YgdGhlIE1pbmlCcm93c2VyIGhhcyBnYWluZWQgVXNlck1l
ZGlhIHBlcm1pc3Npb24KKyAgICAgICAgcmVxdWVzdCBzdXBwb3J0LgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzogU2hvdyBhIHBvcHVwIHdoZW4gdGhlIHBhZ2UK
KyAgICAgICAgcmVxdWlyZXMgdXNlciBwZXJtaXNzaW9uIHRvIGFjY2VzcyBhdWRpby92aWRlbyBk
ZXZpY2VzLgorICAgICAgICAocGVybWlzc2lvblJlcXVlc3REaWFsb2dDYWxsYmFjayk6CisgICAg
ICAgICh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoZ2VvbG9jYXRp
b25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spOiBEZWxldGVkLgorCiAyMDE0LTA5LTAxICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0syXSBVc2VyTWVk
aWFDbGllbnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXgg
Mjc1NDkzMS4uYTBlOGM4NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBA
IC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIHZvaWQgYmFja0ZvcndhZGxpc3RDaGFuZ2VkKFdlYktp
dEJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhZGxpc3QsIFdlYktpdEIKICAgICBicm93c2VyV2lu
ZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMod2luZG93LCBiYWNrRm9yd2FkbGlzdCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0a0RpYWxvZyAq
ZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCkK
K3N0YXRpYyB2b2lkIHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2soR3RrRGlhbG9nICpk
aWFsb2csIGdpbnQgcmVzcG9uc2UsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KQog
ewogICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKICAgICBjYXNlIEdUS19SRVNQT05TRV9ZRVM6CkBA
IC00MDYsMTkgKzQwNiw0MCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBvbGljeShX
ZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbgogCiBzdGF0aWMgZ2Jv
b2xlYW4gd2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0LCBCcm93c2VyV2luZG93ICp3aW5k
b3cpCiB7Ci0gICAgaWYgKCFXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNU
KHJlcXVlc3QpKQorICAgIGdjaGFyICpkaWFsb2dfdGl0bGUgPSBOVUxMOworICAgIGNvbnN0IGdj
aGFyICpkaWFsb2dfbWVzc2FnZSA9IE5VTEw7CisgICAgY29uc3QgZ2NoYXIgKmRpYWxvZ19tZXNz
YWdlX2Zvcm1hdCA9IE5VTEw7CisKKyAgICBpZiAoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1J
U1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAgICAgICBkaWFsb2dfdGl0bGUgPSBnX3N0cmR1
cCgiR2VvbG9jYXRpb24gcmVxdWVzdCIpOworICAgICAgICBkaWFsb2dfbWVzc2FnZV9mb3JtYXQg
PSAiJXMiOworICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJBbGxvdyBnZW9sb2NhdGlvbiByZXF1
ZXN0PyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0gIkFsbG93
IGFjY2VzcyB0byAlcyBkZXZpY2U/IjsKKyAgICAgICAgV2ViS2l0VXNlck1lZGlhUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOworICAgICAgICBjb25zdCBnY2hhciAqb3JpZ2luOworICAgICAgICBnX29i
amVjdF9nZXQoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLCAi
cGFyYW1ldGVycyIsICZwYXJhbWV0ZXJzLCAib3JpZ2luIiwgJm9yaWdpbiwgTlVMTCk7CisgICAg
ICAgIGRpYWxvZ190aXRsZSA9IGdfc3RyZHVwX3ByaW50ZigiVXNlck1lZGlhIHJlcXVlc3QgZnJv
bSAlcyIsIG9yaWdpbik7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzICYgV0VCS0lUX1VTRVJfTUVE
SUFfUEFSQU1FVEVSU19BVURJTykgeworICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMgJiBXRUJL
SVRfVVNFUl9NRURJQV9QQVJBTUVURVJTX1ZJREVPKQorICAgICAgICAgICAgICAgIGRpYWxvZ19t
ZXNzYWdlID0gImF1ZGlvL3ZpZGVvIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBkaWFsb2dfbWVzc2FnZSA9ICJhdWRpbyI7CisgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVy
cyAmIFdFQktJVF9VU0VSX01FRElBX1BBUkFNRVRFUlNfVklERU8pCisgICAgICAgICAgICBkaWFs
b2dfbWVzc2FnZSA9ICJ2aWRlbyI7CisgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBGQUxTRTsK
IAogICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lO
RE9XKHdpbmRvdyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdF
X1FVRVNUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEtfQlVUVE9OU19ZRVNfTk8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJHZW9sb2NhdGlvbiByZXF1ZXN0Iik7Ci0KLSAgICBndGtfbWVzc2FnZV9k
aWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhkaWFsb2cpLCAi
QWxsb3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxv
ZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFj
ayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CisgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBH
VEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAgIEdUS19NRVNTQUdFX1FVRVNU
SU9OLAorICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAgICIlcyIsIGRpYWxvZ190
aXRsZSk7CisgICAgZ19mcmVlKGRpYWxvZ190aXRsZSk7CisKKyAgICBndGtfbWVzc2FnZV9kaWFs
b2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhkaWFsb2cpLCBkaWFs
b2dfbWVzc2FnZV9mb3JtYXQsIGRpYWxvZ19tZXNzYWdlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhwZXJtaXNzaW9uUmVxdWVzdERpYWxvZ0Nh
bGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKICAgICBndGtfd2lkZ2V0X3Nob3coZGlh
bG9nKTsKLQogICAgIHJldHVybiBUUlVFOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDFjOWQyNzguLmJl
ZDFiM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0VUlDbGllbnQuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdNb3VzZVRhcmdldChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
Z19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwogfQogCi1zdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBTb21l
IHZlcnNpb25zIG9mIGdlb2NsdWUgZ2l2ZSBhIHJ1bnRpbWUgd2FybmluZyBiZWNhdXNlIGl0IHRy
aWVzCiAgICAgLy8gdG8gcmVnaXN0ZXIgdGhlIGVycm9yIHF1YXJrIHR3aWNlLiBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODU4LgpAQCAtNjMzLDYgKzYzMywz
OSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+YWRkTG9nRmF0YWxGbGFnKEdfTE9H
X0xFVkVMX1dBUk5JTkcpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5n
cyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJsZWQgPSB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpOworICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJVRSk7CisKKyAgICB0ZXN0LT5z
aG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
dXNlck1lZGlhUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiICA8c2Ny
aXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgorICAgICAgICAiICB7IgorICAg
ICAgICAiICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlLCB2aWRl
bzogdHJ1ZX0sIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24ocykgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9LCIKKyAgICAgICAgIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsgZG9jdW1lbnQudGl0bGUgPSBl
Lm5hbWUgfSk7IgorICAgICAgICAiICB9IgorICAgICAgICAiICA8L3NjcmlwdD4iCisgICAgICAg
ICIgIDxib2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4i
OworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3Qt
Pm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1
c2VyTWVkaWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2Vk
VG8oIlBlcm1pc3Npb25EZW5pZWRFcnJvciIpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBl
cm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0g
dHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgMCk7CisgICAg
dGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk9LIik7CisKKyAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQpOworfQorCiBjbGFz
cyBGaWxlQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgewogcHVibGljOgogICAgIE1B
S0VfR0xJQl9URVNUX0ZJWFRVUkUoRmlsZUNob29zZXJUZXN0KTsKQEAgLTc1Nyw3ICs3OTAsOCBA
QCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiamF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CiAg
ICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRpZXMi
LCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQpOwot
ICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBlcm1pc3Npb24tcmVxdWVz
dHMiLCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk7CisgICAgVUlDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRpb24tcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRl
c3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3RzIiwg
dGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIEZpbGVDaG9vc2Vy
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdl
YlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCi0tIAoyLjEuMA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237493</attachid>
            <date>2014-09-02 09:21:49 -0700</date>
            <delta_ts>2014-11-12 00:44:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>28423</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyMDM4NDA0MDZkYzNhMDdjZjgzYjEzMjIyOWI2NTM2ZmFlNzIxN2EwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcCAg
ICAgICB8ICAxNyArLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMjggKysrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgICAg
ICAgICAgICAgICAgICAgfCAgIDQgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VUlDbGllbnQuY3BwICAgfCAgIDggKwogLi4uL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrCiAuLi4vQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICAgICB8ICA4MSArKysrKysr
KysrCiAuLi4vZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oICB8
ICAyNyArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bCAgICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dCB8ICAyMCArKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaCAgICAgICAgIHwgICAxICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDE2ICsrCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nlcldp
bmRvdy5jICAgICAgICAgICAgICB8ICAzNyArKystLQogLi4uL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFVJQ2xpZW50LmNwcCAgICAgICAgICAgICAgfCAgMzggKysrKy0KIDEzIGZpbGVzIGNoYW5nZWQs
IDQzOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAppbmRleCBjZWRiMDM5Li5kODdlM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJl
YW1DZW50ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKQEAgLTU5LDE0
ICs1OSwyMyBAQCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyKCkKIHsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6dmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVl
cnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisgICAgLy8gRklY
TUU6IEFjdHVhbGx5IGRvIGNvbnN0cmFpbnRzIHZhbGlkYXRpb24uCisgICAgY2xpZW50LT5jb25z
dHJhaW50c1ZhbGlkYXRlZCgpOwogfQogICAgIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJl
YW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQs
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisgICAgQVNTRVJUKGNsaWVudCk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAg
Ly8gRklYTUU6IGZpbGwgc291cmNlIHZlY3RvcnMKKyAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVh
bShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykp
OworCiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmdldE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xp
ZW50PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2YzY2ZGQ0Li4wYWViNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTQtMDktMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOiBHVEstc3BlY2lmaWMgbmV3IGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogIERlY2lkZVBvbGljeSBoYW5kbGVyCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6
IEFkZGVkLAorICAgICAgICBXZWJLaXRHVEsgQVBJIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCwgdmVyeSBzaW1pbGFyIHRvIHRoZQorICAgICAgICBvbmUgdXNlZCBmb3IgR2VvbG9jYXRp
b24uCisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKKyAg
ICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3
ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdlYmtp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcyk6CisgICAgICAgICh3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbDogRXhwb3NlIG5ldyBBUEkKKyAgICAgICAgaW4gZG9jdW1lbnRhdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEV4cG9zZSBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCBBUEkuCisKIDIwMTQtMDktMDEgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXSzJdIFVzZXJNZWRpYUNsaWVu
dCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDcyZGE3YmIuLmI1OGIzMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMTMsNiArMjEzLDkgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4KICAgICBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzU0LDYgKzM1Nyw3IEBAIHNldChX
ZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCisgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rv
ci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3Vy
Y2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IDlkNmE4ZWMuLjBlYzk1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIK
QEAgLTE1OCw2ICsxNTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCisgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHBlcm1pc3Np
b25SZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdD4gdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdS
ZWYod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocGVybWlzc2lvblJlcXVl
c3QsIHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lv
blJlcXVlc3QobV93ZWJWaWV3LCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKHVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIHZpcnR1YWwgdm9pZCBwcmludEZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
IGZyYW1lKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1ByaW50RnJhbWUo
bV93ZWJWaWV3LCBmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmZTAyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaCIKKworI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5
cGVzLmgiCisjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBm
b3IgYWNjZXNzaW5nIHVzZXIncyBhdWRpby92aWRlbyBkZXZpY2VzLgorICogQFRpdGxlOiBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICogV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QgcmVwcmVzZW50cyBhIHJlcXVlc3QgZm9yCisgKiBwZXJtaXNzaW9uIHRvIGRl
Y2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgYmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHVzZXIn
cworICogYXVkaW8gYW5kIHZpZGVvIHNvdXJjZSBkZXZpY2VzIHdoZW4gcmVxdWVzdGVkIHRocm91
Z2h0IHRoZSBnZXRVc2VyTWVkaWEgQVBJLgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworCitlbnVt
IHsKKyAgICBQUk9QXzAsCisgICAgUFJPUF9NRURJQV9UWVBFUworfTsKKworc3RhdGljIHZvaWQg
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlIHsKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4g
cmVxdWVzdDsKKyAgICB1aW50MzJfdCBtZWRpYVR5cGVzOworICAgIGJvb2wgbWFkZURlY2lzaW9u
OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERSgKKyAgICBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCwgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0
LCBHX1RZUEVfT0JKRUNULAorICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfVFlQRV9Q
RVJNSVNTSU9OX1JFUVVFU1QsIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2lu
aXQpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChXRUJLSVRf
SVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLT5wcml2OworCisgICAgLy8gT25seSBvbmUg
ZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlmIChwcml2LT5tYWRlRGVjaXNpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7CisgICAgcHJpdi0+cmVx
dWVzdC0+YWxsb3coKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3REZW55KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFT
U0VSVChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwor
CisgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VC
S0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLT5wcml2OworCisgICAg
Ly8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlmIChwcml2LT5tYWRlRGVjaXNp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7Cisg
ICAgcHJpdi0+cmVxdWVzdC0+ZGVueSgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2Uq
IGlmYWNlKQoreworICAgIGlmYWNlLT5hbGxvdyA9IHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdERlbnk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgLy8gRGVmYXVsdCBiZWhhdmlv
dXIgd2hlbiBubyBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIGlzIGRlbnlpbmcgdGhlIHJlcXVlc3Qu
CisgICAgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdFQktJVF9QRVJNSVNT
SU9OX1JFUVVFU1Qob2JqZWN0KSk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30K
KworLyoqCisgKiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlczoK
KyAqIEByZXF1ZXN0OiBhICNXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAq
IE9idGFpbnMgdGhlIG1lZGlhIHBhcmFtZXRlcnMgb2YgdGhlIHBlcm1pc3Npb24gcmVxdWVzdC4g
U29tZSB3ZWIKKyAqIHBhZ2VzIHdpbGwgYXNrIGFjY2VzcyB0byBvbmx5IHRoZSBhdWRpbyBkZXZp
Y2UsIHdoaWxlIG90aGVycyBtaWdodAorICogYXNrIGFjY2VzcyB0byB0aGUgdmlkZW8gZGV2aWNl
IG9yIGJvdGguCisgKgorICogUmV0dXJuczogdGhlIG1lZGlhIHBhcmFtZXRlcnMgYXNzb2NpYXRl
ZCB3aXRoIHRoZSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworZ3VpbnQzMiB3ZWJr
aXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcyhXZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCksIFdFQktJVF9V
U0VSX01FRElBX1RZUEVTX05PTkUpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPm1lZGlh
VHlwZXM7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChv
YmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfTUVESUFfVFlQ
RVM6CisgICAgICAgIGdfdmFsdWVfc2V0X2ZsYWdzKHZhbHVlLCB3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcyhyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmpl
Y3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF91
c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2Ug
PSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2U7CisgICAgb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJv
cGVydHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyUGVybWlzc2lvblJlcXVlc3Q6bWVk
aWEtdHlwZXM6CisgICAgICoKKyAgICAgKiBUaGUgbWVkaWEgZGV2aWNlIHR5cGUocykgcmVxdWVz
dGVkLCBlaXRoZXIgYXVkaW8sIHZpZGVvIG9yIGJvdGguCisgICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9NRURJQV9UWVBFUywKKyAg
ICAgICAgZ19wYXJhbV9zcGVjX2ZsYWdzKCJtZWRpYS10eXBlcyIsIF8oIk1lZGlhIFR5cGVzIiks
CisgICAgICAgICAgICBfKCJUaGUgbWVkaWEgZGV2aWNlIHR5cGUocykgcmVxdWVzdGVkLCBlaXRo
ZXIgYXVkaW8sIHZpZGVvIG9yIGJvdGgiKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1VTRVJf
TUVESUFfVFlQRVMsCisgICAgICAgICAgICBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19OT05FLAor
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKK30KKworV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3Jl
YXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHJlcXVlc3QsIFdlYlNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK3sKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdCogdXNlcm1lZGlhUGVybWlzc2lvblJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9Q
RVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVS
TUlTU0lPTl9SRVFVRVNULCBOVUxMKSk7CisgICAgdWludDMyX3QgbWVkaWFUeXBlcyA9IDA7CisK
KyAgICAvLyBGSVhNRTogc3RvcmUgU2VjdXJpdHlPcmlnaW4KKyAgICBVTlVTRURfUEFSQU0oc2Vj
dXJpdHlPcmlnaW4pOworCisgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBhcmFtZXRl
cnMgPSByZXF1ZXN0LT5tZWRpYVBhcmFtZXRlcnMoKTsKKyAgICBBUEk6OkJvb2xlYW4qIGF1ZGlv
ID0gcmVpbnRlcnByZXRfY2FzdDxBUEk6OkJvb2xlYW4qPihwYXJhbWV0ZXJzLT5nZXQoImF1ZGlv
IikpOworICAgIEFQSTo6Qm9vbGVhbiogdmlkZW8gPSByZWludGVycHJldF9jYXN0PEFQSTo6Qm9v
bGVhbio+KHBhcmFtZXRlcnMtPmdldCgidmlkZW8iKSk7CisKKyAgICBpZiAoYXVkaW8tPnZhbHVl
KCkpCisgICAgICAgIG1lZGlhVHlwZXMgfD0gV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfQVVESU87
CisgICAgaWYgKHZpZGVvLT52YWx1ZSgpKQorICAgICAgICBtZWRpYVR5cGVzIHw9IFdFQktJVF9V
U0VSX01FRElBX1RZUEVTX1ZJREVPOworCisgICAgdXNlcm1lZGlhUGVybWlzc2lvblJlcXVlc3Qt
PnByaXYtPnJlcXVlc3QgPSByZXF1ZXN0OworICAgIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LT5wcml2LT5tZWRpYVR5cGVzID0gbWVkaWFUeXBlczsKKworICAgIHJldHVybiB1c2VybWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZWM3ODEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmICFk
ZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRp
cmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0X2gKKyNkZWZpbmUgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4K
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlT
U0lPTl9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVx
dWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lP
Tl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVS
TUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdENsYXNzICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzczsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOworCisvKioKKyAqIFdlYktpdFVz
ZXJNZWRpYVR5cGVzOgorICogQFdFQktJVF9VU0VSX01FRElBX1RZUEVTX05PTkU6IG5vIG1lZGlh
LgorICogQFdFQktJVF9VU0VSX01FRElBX1RZUEVTX0FVRElPOiBBdWRpbyBpbnB1dCBkZXZpY2Uu
CisgKiBAV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfVklERU86IFZpZGVvIGlucHV0IGRldmljZS4K
KyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggdHlwZSBvZiBtZWRpYSBk
ZXZpY2UgaXMgcmVxdWVzdGVkLgorICovCit0eXBlZGVmIGVudW0geworICBXRUJLSVRfVVNFUl9N
RURJQV9UWVBFU19OT05FLAorCisgIFdFQktJVF9VU0VSX01FRElBX1RZUEVTX0FVRElPID0gMSA8
PCAwLAorICBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19WSURFTyA9IDEgPDwgMQorfSBXZWJLaXRV
c2VyTWVkaWFUeXBlczsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3Qg
X1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFz
cyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lk
KTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25f
cmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3Vz
ZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMgIChXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDcyMTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIKKworV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0Q3JlYXRlKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSosIFdl
YktpdDo6V2ViU2VjdXJpdHlPcmlnaW4qKTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA2NjM4N2Rm
Li5hZmZiZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTI0LDYgKzI0LDcgQEAKICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25BY3Rpb24u
eG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQb2xpY3lE
ZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRS
ZXNwb25zZVBvbGljeURlY2lzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5k
ZXggODVlY2Y3MS4uNTcwODUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC01OTEs
NiArNTkxLDI2IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PC9G
SUxFPgorV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKK1dlYktpdFVzZXJNZWRpYVR5
cGVzCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcworCis8U1VC
U0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MK
K1dFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05f
UkVRVUVTVAorV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJL
SVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9VU0VSX01F
RElBX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4K
K1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZQord2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgog
PEZJTEU+V2ViS2l0UG9saWN5RGVjaXNpb248L0ZJTEU+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgog
d2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGQ3OTE2M2UuLmI3OGRjMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJDb250ZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJ
bnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAyOTNiZGE1Li4yNmVlZDAwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDktMDIgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRp
YSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgR1RLIHZlcnNpb24gb2YgdGhlIE1pbmlCcm93c2VyIGhhcyBn
YWluZWQgVXNlck1lZGlhIHBlcm1pc3Npb24KKyAgICAgICAgcmVxdWVzdCBzdXBwb3J0LgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzogU2hvdyBhIHBvcHVwIHdo
ZW4gdGhlIHBhZ2UKKyAgICAgICAgcmVxdWlyZXMgdXNlciBwZXJtaXNzaW9uIHRvIGFjY2VzcyBh
dWRpby92aWRlbyBkZXZpY2VzLgorICAgICAgICAocGVybWlzc2lvblJlcXVlc3REaWFsb2dDYWxs
YmFjayk6CisgICAgICAgICh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAg
ICAoZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spOiBEZWxldGVkLgorCiAyMDE0LTA5
LTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V0syXSBVc2VyTWVkaWFDbGllbnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmMKaW5kZXggMjc1NDkzMS4uZjhmYTRkMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5jCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIHZvaWQgYmFja0ZvcndhZGxpc3RD
aGFuZ2VkKFdlYktpdEJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhZGxpc3QsIFdlYktpdEIKICAg
ICBicm93c2VyV2luZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMod2luZG93LCBiYWNrRm9yd2Fk
bGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNr
KEd0a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2so
R3RrRGlhbG9nICpkaWFsb2csIGdpbnQgcmVzcG9uc2UsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0
ICpyZXF1ZXN0KQogewogICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKICAgICBjYXNlIEdUS19SRVNQ
T05TRV9ZRVM6CkBAIC00MDYsMTkgKzQwNiwzOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Rl
Y2lkZVBvbGljeShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbgog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdl
YlZpZXcgKndlYlZpZXcsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0LCBCcm93c2Vy
V2luZG93ICp3aW5kb3cpCiB7Ci0gICAgaWYgKCFXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpKQorICAgIGNvbnN0IGdjaGFyICpkaWFsb2dfdGl0bGUgPSBO
VUxMOworICAgIGNvbnN0IGdjaGFyICpkaWFsb2dfbWVzc2FnZSA9IE5VTEw7CisgICAgY29uc3Qg
Z2NoYXIgKmRpYWxvZ19tZXNzYWdlX2Zvcm1hdCA9IE5VTEw7CisKKyAgICBpZiAoV0VCS0lUX0lT
X0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAgICAgICBkaWFs
b2dfdGl0bGUgPSAiR2VvbG9jYXRpb24gcmVxdWVzdCI7CisgICAgICAgIGRpYWxvZ19tZXNzYWdl
X2Zvcm1hdCA9ICIlcyI7CisgICAgICAgIGRpYWxvZ19tZXNzYWdlID0gIkFsbG93IGdlb2xvY2F0
aW9uIHJlcXVlc3Q/IjsKKyAgICB9IGVsc2UgaWYgKFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1J
U1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAgICAgICBkaWFsb2dfbWVzc2FnZV9mb3JtYXQg
PSAiQWxsb3cgYWNjZXNzIHRvICVzIGRldmljZT8iOworICAgICAgICBXZWJLaXRVc2VyTWVkaWFU
eXBlcyBtZWRpYV90eXBlczsKKyAgICAgICAgZ19vYmplY3RfZ2V0KFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSwgIm1lZGlhLXR5cGVzIiwgJm1lZGlhX3R5cGVz
LCBOVUxMKTsKKyAgICAgICAgZGlhbG9nX3RpdGxlID0gIlVzZXJNZWRpYSByZXF1ZXN0IjsKKyAg
ICAgICAgaWYgKG1lZGlhX3R5cGVzICYgV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfQVVESU8pIHsK
KyAgICAgICAgICAgIGlmIChtZWRpYV90eXBlcyAmIFdFQktJVF9VU0VSX01FRElBX1RZUEVTX1ZJ
REVPKQorICAgICAgICAgICAgICAgIGRpYWxvZ19tZXNzYWdlID0gImF1ZGlvL3ZpZGVvIjsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJhdWRpbyI7
CisgICAgICAgIH0gZWxzZSBpZiAobWVkaWFfdHlwZXMgJiBXRUJLSVRfVVNFUl9NRURJQV9UWVBF
U19WSURFTykKKyAgICAgICAgICAgIGRpYWxvZ19tZXNzYWdlID0gInZpZGVvIjsKKyAgICB9IGVs
c2UKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtf
bWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSU5ET1cod2luZG93KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJQUxPR19NT0RBTCB8IEdUS19ESUFM
T0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfUVVFU1RJT04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19CVVRUT05TX1lFU19OTywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlb2xvY2F0aW9uIHJlcXVl
c3QiKTsKKyAgICAgICAgR1RLX0RJQUxPR19NT0RBTCB8IEdUS19ESUFMT0dfREVTVFJPWV9XSVRI
X1BBUkVOVCwKKyAgICAgICAgR1RLX01FU1NBR0VfUVVFU1RJT04sCisgICAgICAgIEdUS19CVVRU
T05TX1lFU19OTywKKyAgICAgICAgIiVzIiwgZGlhbG9nX3RpdGxlKTsKIAotICAgIGd0a19tZXNz
YWdlX2RpYWxvZ19mb3JtYXRfc2Vjb25kYXJ5X3RleHQoR1RLX01FU1NBR0VfRElBTE9HKGRpYWxv
ZyksICJBbGxvdyBnZW9sb2NhdGlvbiByZXF1ZXN0PyIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
ZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0Nh
bGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKKyAgICBndGtfbWVzc2FnZV9kaWFsb2df
Zm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhkaWFsb2cpLCBkaWFsb2df
bWVzc2FnZV9mb3JtYXQsIGRpYWxvZ19tZXNzYWdlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRp
YWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhwZXJtaXNzaW9uUmVxdWVzdERpYWxvZ0NhbGxi
YWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKICAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9n
KTsKLQogICAgIHJldHVybiBUUlVFOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDFjOWQyNzguLmJlZDFi
M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0VUlDbGllbnQuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdNb3VzZVRhcmdldChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwogfQogCi1zdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBTb21lIHZl
cnNpb25zIG9mIGdlb2NsdWUgZ2l2ZSBhIHJ1bnRpbWUgd2FybmluZyBiZWNhdXNlIGl0IHRyaWVz
CiAgICAgLy8gdG8gcmVnaXN0ZXIgdGhlIGVycm9yIHF1YXJrIHR3aWNlLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODU4LgpAQCAtNjMzLDYgKzYzMywzOSBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xF
VkVMX1dBUk5JTkcpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0
ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJsZWQgPSB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpOworICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJVRSk7CisKKyAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogdXNl
ck1lZGlhUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiICA8c2NyaXB0
PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgorICAgICAgICAiICB7IgorICAgICAg
ICAiICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlLCB2aWRlbzog
dHJ1ZX0sIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24ocykgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9LCIKKyAgICAgICAgIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsgZG9jdW1lbnQudGl0bGUgPSBlLm5h
bWUgfSk7IgorICAgICAgICAiICB9IgorICAgICAgICAiICA8L3NjcmlwdD4iCisgICAgICAgICIg
IDxib2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOwor
CisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1f
YWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2Vy
TWVkaWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8o
IlBlcm1pc3Npb25EZW5pZWRFcnJvciIpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1p
c3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1
ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVz
dC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk9LIik7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQpOworfQorCiBjbGFzcyBG
aWxlQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgewogcHVibGljOgogICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoRmlsZUNob29zZXJUZXN0KTsKQEAgLTc1Nyw3ICs3OTAsOCBAQCB2
b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
amF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CiAgICAg
VUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0
ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQpOwotICAg
IFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBlcm1pc3Npb24tcmVxdWVzdHMi
LCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk7CisgICAgVUlDbGllbnRUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRpb24tcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RX
ZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3RzIiwgdGVz
dFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIEZpbGVDaG9vc2VyVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZp
ZXdGaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCi0tIAoyLjEuMA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241416</attachid>
            <date>2014-11-12 00:44:31 -0800</date>
            <delta_ts>2014-11-13 03:43:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>28383</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiOWRhMzA1YjIxOWM5OWMxOWZmZWEzNmNiNzZjNjdlZTQ3NTlhZmYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcCAg
ICAgICB8ICAxNyArLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMjggKysrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgICAg
ICAgICAgICAgICAgICAgfCAgIDQgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VUlDbGllbnQuY3BwICAgfCAgIDggKwogLi4uL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrCiAuLi4vQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICAgICB8ICA4MSArKysrKysr
KysrCiAuLi4vZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oICB8
ICAyNyArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bCAgICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dCB8ICAyMCArKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaCAgICAgICAgIHwgICAxICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDE2ICsrCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nlcldp
bmRvdy5jICAgICAgICAgICAgICB8ICAzNyArKystLQogLi4uL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFVJQ2xpZW50LmNwcCAgICAgICAgICAgICAgfCAgMzggKysrKy0KIDEzIGZpbGVzIGNoYW5nZWQs
IDQzOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAppbmRleCBjZWRiMDM5Li5kODdlM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJl
YW1DZW50ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKQEAgLTU5LDE0
ICs1OSwyMyBAQCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyKCkKIHsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6dmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVl
cnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisgICAgLy8gRklY
TUU6IEFjdHVhbGx5IGRvIGNvbnN0cmFpbnRzIHZhbGlkYXRpb24uCisgICAgY2xpZW50LT5jb25z
dHJhaW50c1ZhbGlkYXRlZCgpOwogfQogICAgIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJl
YW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQs
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisgICAgQVNTRVJUKGNsaWVudCk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAg
Ly8gRklYTUU6IGZpbGwgc291cmNlIHZlY3RvcnMKKyAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVh
bShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykp
OworCiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmdldE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xp
ZW50PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA5ZTVkMDgzLi4wMGQyMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTQtMDktMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOiBHVEstc3BlY2lmaWMgbmV3IGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogIERlY2lkZVBvbGljeSBoYW5kbGVyCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6
IEFkZGVkLAorICAgICAgICBXZWJLaXRHVEsgQVBJIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCwgdmVyeSBzaW1pbGFyIHRvIHRoZQorICAgICAgICBvbmUgdXNlZCBmb3IgR2VvbG9jYXRp
b24uCisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKKyAg
ICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3
ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdlYmtp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcyk6CisgICAgICAgICh3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbDogRXhwb3NlIG5ldyBBUEkKKyAgICAgICAgaW4gZG9jdW1lbnRhdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEV4cG9zZSBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCBBUEkuCisKIDIwMTQtMDktMDEgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXSzJdIFVzZXJNZWRpYUNsaWVu
dCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDc4ODQ0YzguLjliMTI0NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMDYsNiArMjA2LDkgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4KICAgICBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzYwLDYgKzM2Myw3IEBAIHNldChX
ZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCisgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rv
ci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3Vy
Y2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IDlkNmE4ZWMuLmMwNWMyZGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5o
IgpAQCAtMTU4LDYgKzE1OSwxMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlz
c2lvblJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0
R1JlZih3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSgmcGVybWlzc2lvblJl
cXVlc3QsICZzZWN1cml0eU9yaWdpbikpOworICAgICAgICB3ZWJraXRXZWJWaWV3TWFrZVBlcm1p
c3Npb25SZXF1ZXN0KG1fd2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVCh1c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdQcmludEZy
YW1lKG1fd2ViVmlldywgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZmUwMjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVk
ZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdEVu
dW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSA8
Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZXJtaXNzaW9uIHJlcXVl
c3QgZm9yIGFjY2Vzc2luZyB1c2VyJ3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4KKyAqIEBUaXRsZTog
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0IHJlcHJlc2VudHMgYSByZXF1ZXN0IGZvcgorICogcGVybWlzc2lvbiB0
byBkZWNpZGUgd2hldGhlciBXZWJLaXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSB1
c2VyJ3MKKyAqIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgZGV2aWNlcyB3aGVuIHJlcXVlc3RlZCB0
aHJvdWdodCB0aGUgZ2V0VXNlck1lZGlhIEFQSS4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KKwor
ZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfTUVESUFfVFlQRVMKK307CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlz
c2lvblJlcXVlc3RJZmFjZSopOworCitzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZSB7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk+IHJlcXVlc3Q7CisgICAgdWludDMyX3QgbWVkaWFUeXBlczsKKyAgICBib29sIG1hZGVEZWNp
c2lvbjsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVx
dWVzdCwgR19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZ
UEVfUEVSTUlTU0lPTl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFj
ZV9pbml0KSkKKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RB
bGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VC
S0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkg
b25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYt
PnJlcXVlc3QtPmFsbG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBBU1NFUlQoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
KTsKKworICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKwor
ICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURl
Y2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVl
OworICAgIHByaXYtPnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Bl
cm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElm
YWNlKiBpZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVo
YXZpb3VyIHdoZW4gbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5nIHRoZSByZXF1
ZXN0LgorICAgIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVS
TUlTU0lPTl9SRVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7
Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlw
ZXM6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAq
CisgKiBPYnRhaW5zIHRoZSBtZWRpYSBwYXJhbWV0ZXJzIG9mIHRoZSBwZXJtaXNzaW9uIHJlcXVl
c3QuIFNvbWUgd2ViCisgKiBwYWdlcyB3aWxsIGFzayBhY2Nlc3MgdG8gb25seSB0aGUgYXVkaW8g
ZGV2aWNlLCB3aGlsZSBvdGhlcnMgbWlnaHQKKyAqIGFzayBhY2Nlc3MgdG8gdGhlIHZpZGVvIGRl
dmljZSBvciBib3RoLgorICoKKyAqIFJldHVybnM6IHRoZSBtZWRpYSBwYXJhbWV0ZXJzIGFzc29j
aWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK2d1aW50MzIg
d2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMoV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLCBXRUJL
SVRfVVNFUl9NRURJQV9UWVBFU19OT05FKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5t
ZWRpYVR5cGVzOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVF
U1Qob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX01FRElB
X1RZUEVTOgorICAgICAgICBnX3ZhbHVlX3NldF9mbGFncyh2YWx1ZSwgd2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMocmVxdWVzdCkpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9iamVjdENsYXNzLT5kaXNw
b3NlID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REaXNwb3NlOworICAgIG9iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdl
dFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0VXNlclBlcm1pc3Npb25SZXF1ZXN0
Om1lZGlhLXR5cGVzOgorICAgICAqCisgICAgICogVGhlIG1lZGlhIGRldmljZSB0eXBlKHMpIHJl
cXVlc3RlZCwgZWl0aGVyIGF1ZGlvLCB2aWRlbyBvciBib3RoLgorICAgICAqLworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfTUVESUFfVFlQRVMs
CisgICAgICAgIGdfcGFyYW1fc3BlY19mbGFncygibWVkaWEtdHlwZXMiLCBfKCJNZWRpYSBUeXBl
cyIpLAorICAgICAgICAgICAgXygiVGhlIG1lZGlhIGRldmljZSB0eXBlKHMpIHJlcXVlc3RlZCwg
ZWl0aGVyIGF1ZGlvLCB2aWRlbyBvciBib3RoIiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9V
U0VSX01FRElBX1RZUEVTLAorICAgICAgICAgICAgV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfTk9O
RSwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCit9CisKK1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dENyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KiByZXF1ZXN0LCBXZWJTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCit7CisgICAgV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QqIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVCwgTlVMTCkpOworICAgIHVpbnQzMl90IG1lZGlhVHlwZXMgPSAw
OworCisgICAgLy8gRklYTUU6IHN0b3JlIFNlY3VyaXR5T3JpZ2luCisgICAgVU5VU0VEX1BBUkFN
KHNlY3VyaXR5T3JpZ2luKTsKKworICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwYXJh
bWV0ZXJzID0gcmVxdWVzdC0+bWVkaWFQYXJhbWV0ZXJzKCk7CisgICAgQVBJOjpCb29sZWFuKiBh
dWRpbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVBJOjpCb29sZWFuKj4ocGFyYW1ldGVycy0+Z2V0KCJh
dWRpbyIpKTsKKyAgICBBUEk6OkJvb2xlYW4qIHZpZGVvID0gcmVpbnRlcnByZXRfY2FzdDxBUEk6
OkJvb2xlYW4qPihwYXJhbWV0ZXJzLT5nZXQoInZpZGVvIikpOworCisgICAgaWYgKGF1ZGlvLT52
YWx1ZSgpKQorICAgICAgICBtZWRpYVR5cGVzIHw9IFdFQktJVF9VU0VSX01FRElBX1RZUEVTX0FV
RElPOworICAgIGlmICh2aWRlby0+dmFsdWUoKSkKKyAgICAgICAgbWVkaWFUeXBlcyB8PSBXRUJL
SVRfVVNFUl9NRURJQV9UWVBFU19WSURFTzsKKworICAgIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LT5wcml2LT5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICB1c2VybWVkaWFQZXJtaXNzaW9uUmVx
dWVzdC0+cHJpdi0+bWVkaWFUeXBlcyA9IG1lZGlhVHlwZXM7CisKKyAgICByZXR1cm4gdXNlcm1l
ZGlhUGVybWlzc2lvblJlcXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWVjNzgxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01Q
SUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVz
Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BF
Uk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9u
X3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9i
aiksIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BFUk1J
U1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChr
bGFzcyksICBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVT
VCkpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9V
U0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwg
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RDbGFzcyAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3M7
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKKworLyoqCisgKiBXZWJL
aXRVc2VyTWVkaWFUeXBlczoKKyAqIEBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19OT05FOiBubyBt
ZWRpYS4KKyAqIEBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19BVURJTzogQXVkaW8gaW5wdXQgZGV2
aWNlLgorICogQFdFQktJVF9VU0VSX01FRElBX1RZUEVTX1ZJREVPOiBWaWRlbyBpbnB1dCBkZXZp
Y2UuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHR5cGUgb2YgbWVk
aWEgZGV2aWNlIGlzIHJlcXVlc3RlZC4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgV0VCS0lUX1VT
RVJfTUVESUFfVFlQRVNfTk9ORSwKKworICBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19BVURJTyA9
IDEgPDwgMCwKKyAgV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfVklERU8gPSAxIDw8IDEKK30gV2Vi
S2l0VXNlck1lZGlhVHlwZXM7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAg
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3Ry
dWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9p
ZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAo
dm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGd1aW50MzIKK3dlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X21lZGlhX3R5cGVzICAoV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ3MjE5MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisK
K1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdENyZWF0ZShXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkq
LCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luKik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggMzQ4
ZjQ0YS4uMmQ1M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0yNCw2ICsyNCw3IEBACiAg
ICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9uQWN0
aW9uLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9s
aWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
CmluZGV4IDNmOWJkYmQuLjY3MDQ0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAt
NTk1LDYgKzU5NSwyNiBAQCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIDwvU0VD
VElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dDwvRklMRT4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CitXZWJLaXRVc2VyTWVk
aWFUeXBlcword2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMKKwor
PFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENs
YXNzCitXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX1VT
RVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1QKK1dFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUwor
V0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZh
dGU+CitXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUKK3dlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KIDxGSUxFPldlYktpdFBvbGljeURlY2lzaW9uPC9GSUxFPgogV2ViS2l0UG9saWN5RGVjaXNp
b24KIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBkNzkxNjNlLi5iNzhkYzJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC02Miw2ICs2Miw3IEBACiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRVc2VyQ29udGVudC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
V2ViSW5zcGVjdG9yLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMmVkY2ExMy4uMjZjOWQ5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA5LTAyICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBVc2Vy
TWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIEdUSyB2ZXJzaW9uIG9mIHRoZSBNaW5pQnJvd3NlciBo
YXMgZ2FpbmVkIFVzZXJNZWRpYSBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVlc3Qgc3VwcG9ydC4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6IFNob3cgYSBwb3B1
cCB3aGVuIHRoZSBwYWdlCisgICAgICAgIHJlcXVpcmVzIHVzZXIgcGVybWlzc2lvbiB0byBhY2Nl
c3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4KKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9n
Q2FsbGJhY2spOgorICAgICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogRGVsZXRlZC4KKwogMjAx
NC0wOS0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dLMl0gVXNlck1lZGlhQ2xpZW50IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5jCmluZGV4IGE5ZGI1MTkuLmJiZThjNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuYwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGJhY2tGb3J3YWRs
aXN0Q2hhbmdlZChXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0LCBXZWJLaXRC
CiAgICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKHdpbmRvdywgYmFja0Zv
cndhZGxpc3QpOwogfQogCi1zdGF0aWMgdm9pZCBnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxs
YmFjayhHdGtEaWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZSwgV2ViS2l0UGVybWlzc2lvblJl
cXVlc3QgKnJlcXVlc3QpCitzdGF0aWMgdm9pZCBwZXJtaXNzaW9uUmVxdWVzdERpYWxvZ0NhbGxi
YWNrKEd0a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdCAqcmVxdWVzdCkKIHsKICAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CiAgICAgY2FzZSBHVEtf
UkVTUE9OU0VfWUVTOgpAQCAtNDA4LDE5ICs0MDgsMzggQEAgc3RhdGljIGdib29sZWFuIHdlYlZp
ZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNp
b24KIAogc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCwgQnJv
d3NlcldpbmRvdyAqd2luZG93KQogewotICAgIGlmICghV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKKyAgICBjb25zdCBnY2hhciAqZGlhbG9nX3RpdGxl
ID0gTlVMTDsKKyAgICBjb25zdCBnY2hhciAqZGlhbG9nX21lc3NhZ2UgPSBOVUxMOworICAgIGNv
bnN0IGdjaGFyICpkaWFsb2dfbWVzc2FnZV9mb3JtYXQgPSBOVUxMOworCisgICAgaWYgKFdFQktJ
VF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAg
ZGlhbG9nX3RpdGxlID0gIkdlb2xvY2F0aW9uIHJlcXVlc3QiOworICAgICAgICBkaWFsb2dfbWVz
c2FnZV9mb3JtYXQgPSAiJXMiOworICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJBbGxvdyBnZW9s
b2NhdGlvbiByZXF1ZXN0PyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfVVNFUl9NRURJQV9Q
RVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9y
bWF0ID0gIkFsbG93IGFjY2VzcyB0byAlcyBkZXZpY2U/IjsKKyAgICAgICAgV2ViS2l0VXNlck1l
ZGlhVHlwZXMgbWVkaWFfdHlwZXM7CisgICAgICAgIGdfb2JqZWN0X2dldChXRUJLSVRfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCksICJtZWRpYS10eXBlcyIsICZtZWRpYV90
eXBlcywgTlVMTCk7CisgICAgICAgIGRpYWxvZ190aXRsZSA9ICJVc2VyTWVkaWEgcmVxdWVzdCI7
CisgICAgICAgIGlmIChtZWRpYV90eXBlcyAmIFdFQktJVF9VU0VSX01FRElBX1RZUEVTX0FVRElP
KSB7CisgICAgICAgICAgICBpZiAobWVkaWFfdHlwZXMgJiBXRUJLSVRfVVNFUl9NRURJQV9UWVBF
U19WSURFTykKKyAgICAgICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJhdWRpby92aWRlbyI7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAiYXVk
aW8iOworICAgICAgICB9IGVsc2UgaWYgKG1lZGlhX3R5cGVzICYgV0VCS0lUX1VTRVJfTUVESUFf
VFlQRVNfVklERU8pCisgICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJ2aWRlbyI7CisgICAg
fSBlbHNlCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIEd0a1dpZGdldCAqZGlhbG9nID0g
Z3RrX21lc3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lORE9XKHdpbmRvdyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtf
RElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9sb2NhdGlvbiBy
ZXF1ZXN0Iik7CisgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lf
V0lUSF9QQVJFTlQsCisgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAorICAgICAgICBHVEtf
QlVUVE9OU19ZRVNfTk8sCisgICAgICAgICIlcyIsIGRpYWxvZ190aXRsZSk7CiAKLSAgICBndGtf
bWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhk
aWFsb2cpLCAiQWxsb3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsKLSAgICBnX3NpZ25hbF9jb25u
ZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9sb2NhdGlvblJlcXVlc3REaWFs
b2dDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CisgICAgZ3RrX21lc3NhZ2VfZGlh
bG9nX2Zvcm1hdF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9ESUFMT0coZGlhbG9nKSwgZGlh
bG9nX21lc3NhZ2VfZm9ybWF0LCBkaWFsb2dfbWVzc2FnZSk7CisgICAgZ19zaWduYWxfY29ubmVj
dChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3REaWFsb2dD
YWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KGRp
YWxvZyk7Ci0KICAgICByZXR1cm4gVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBkYTc3NDU0Li4x
ZTIwMDU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFVJQ2xpZW50LmNwcApAQCAtNjIwLDcgKzYyMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3TW91c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiB9
CiAKLXN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewogICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgZ2VvY2x1ZSBnaXZlIGEgcnVudGltZSB3YXJuaW5n
IGJlY2F1c2UgaXQgdHJpZXMKICAgICAvLyB0byByZWdpc3RlciB0aGUgZXJyb3IgcXVhcmsgdHdp
Y2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NTguCkBA
IC02NjEsNiArNjYxLDM5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVl
c3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5hZGRMb2dG
YXRhbEZsYWcoR19MT0dfTEVWRUxfV0FSTklORyk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gZW5hYmxlZCA9
IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncyk7CisgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBUUlVFKTsK
KworICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiB1c2VyTWVkaWFSZXF1ZXN0SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisg
ICAgICAgICIgIDxzY3JpcHQ+IgorICAgICAgICAiICBmdW5jdGlvbiBydW5UZXN0KCkiCisgICAg
ICAgICIgIHsiCisgICAgICAgICIgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86IHRydWUsIHZpZGVvOiB0cnVlfSwiCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbihzKSB7IGRvY3VtZW50LnRpdGxlID0gXCJPS1wiIH0sIgorICAg
ICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgeyBkb2N1
bWVudC50aXRsZSA9IGUubmFtZSB9KTsiCisgICAgICAgICIgIH0iCisgICAgICAgICIgIDwvc2Ny
aXB0PiIKKyAgICAgICAgIiAgPGJvZHkgb25sb2FkPSdydW5UZXN0KCk7Jz48L2JvZHk+IgorICAg
ICAgICAiPC9odG1sPiI7CisKKyAgICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVl
c3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOworICAgIHRl
c3QtPmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxUaXRsZUNoYW5nZWRUbygiUGVybWlzc2lvbkRlbmllZEVycm9yIik7CisKKyAgICAvLyBUZXN0
IGFsbG93aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNz
aW9uUmVxdWVzdHMgPSB0cnVlOworICAgIHRlc3QtPmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RI
VE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiT0siKTsKKworICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxl
ZCk7Cit9CisKIGNsYXNzIEZpbGVDaG9vc2VyVGVzdDogcHVibGljIFVJQ2xpZW50VGVzdCB7CiBw
dWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShGaWxlQ2hvb3NlclRlc3QpOwpAQCAt
Nzg1LDcgKzgxOCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0phdmFTY3Jp
cHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3aW5k
b3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAgVUlDbGll
bnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdlYlZpZXdN
b3VzZVRhcmdldCk7Ci0gICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicGVy
bWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBV
SUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJnZW9sb2NhdGlvbi1wZXJtaXNzaW9u
LXJlcXVlc3RzIiwgdGVzdFdlYlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk7Cisg
ICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1pc3Np
b24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CiAg
ICAgRmlsZUNob29zZXJUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZmlsZS1jaG9vc2VyLXJl
cXVlc3QiLCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAKLS0gCjIuMS4x
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241480</attachid>
            <date>2014-11-13 03:43:28 -0800</date>
            <delta_ts>2014-11-18 07:36:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>33214</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhYzRkODIzZTRmYzJlMmU0YmE3YTFhMjAyMjNmYTgyNjZlMjlhM2ZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxNiArKwogLi4uL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAgICAgICAgfCAgMTcgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDI4ICsrKysKIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
ICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcCAgIHwgICA4ICsKIC4uLi9BUEkvZ3RrL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrKwogLi4u
L0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAgICAgfCAgODMgKysr
KysrKysrKwogLi4uL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aCAgfCAgMjcgKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwgICAgfCAgIDEgKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQgfCAgMjAgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmggICAgICAgICB8ICAgMSArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAxNiArKwogVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgMzYgKysrLS0KIFRvb2xzL1NjcmlwdHMvcnVuLWd0
ay10ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RVSUNsaWVudC5jcHAgICAgICAgICAgICAgIHwgIDc4ICsrKysrKysrLQogMTUgZmls
ZXMgY2hhbmdlZCwgNDk5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YjE0OTBl
Li5jNDVlM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMTEtMTIgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZXJN
ZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBWZXJ5IGJhc2ljIGNvbnN0cmFpbnRzIHZhbGlkYXRpb24gc3Vw
cG9ydCBpbiB0aGUgR1N0cmVhbWVyCisgICAgICAgIE1lZGlhU3RyZWFtQ2VudGVyLiBUaGlzIGlz
IG5lZWRlZCBzbyB0aGUgR1RLIEMgQVBJIHRlc3RzIHVzaW5nIHRoZQorICAgICAgICBnZXRVc2Vy
TWVkaWEoKSBBUEkgd291bGQgbm90IHRpbWUgb3V0LgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp+TWVkaWFTdHJlYW1DZW50
ZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFt
ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisKIDIwMTQtMTEtMTIg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIEV4cG9zZSB1c2VyIHNjcmlwdCBtZXNzYWdlcyB0byBHT2JqZWN0IERPTSBiaW5kaW5ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKaW5k
ZXggY2VkYjAzOS4uZDg3ZTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJl
YW1DZW50ZXJHU3RyZWFtZXIuY3BwCkBAIC01OSwxNCArNTksMjMgQEAgTWVkaWFTdHJlYW1DZW50
ZXJHU3RyZWFtZXI6On5NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcigpCiB7CiB9CiAKLXZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCit2b2lkIE1lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IGNsaWVu
dCA9IHBycFF1ZXJ5Q2xpZW50OworICAgIC8vIEZJWE1FOiBBY3R1YWxseSBkbyBjb25zdHJhaW50
cyB2YWxpZGF0aW9uLgorICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoKTsKIH0KICAg
ICAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCit2b2lkIE1lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1
ZXJ5Q2xpZW50OworICAgIEFTU0VSVChjbGllbnQpOworCisgICAgVmVjdG9yPFJlZlB0cjxNZWRp
YVN0cmVhbVNvdXJjZT4+IGF1ZGlvU291cmNlczsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlPj4gdmlkZW9Tb3VyY2VzOworICAgIC8vIEZJWE1FOiBmaWxsIHNvdXJjZSB2ZWN0
b3JzCisgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVh
dGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKKwogfQogCiBib29sIE1lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyOjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGY1MDcx
Ny4uMGU0OTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA5LTAyICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBVc2Vy
TWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogR1RLLXNwZWNpZmljIG5l
dyBmaWxlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6
ICBEZWNpZGVQb2xpY3kgaGFuZGxlcgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBmb3IgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZCwKKyAgICAgICAgV2ViS2l0R1RL
IEFQSSBmb3IgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsIHZlcnkgc2ltaWxhciB0byB0aGUK
KyAgICAgICAgb25lIHVzZWQgZm9yIEdlb2xvY2F0aW9uLgorICAgICAgICAod2Via2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdERlbnkpOgorICAgICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9p
bnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVk
aWFfdHlwZXMpOgorICAgICAgICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRQ
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6IEV4cG9zZSBuZXcgQVBJ
CisgICAgICAgIGluIGRvY3VtZW50YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oOiBFeHBvc2UgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgQVBJ
LgorCiAyMDE0LTExLTEyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBNb3ZlIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IGZyb20g
cGxhdGZvcm0gdG8gV2ViS2l0MiBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5
NTRhYTBlLi41ODE5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjA2LDYgKzIw
Niw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFZlcnNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5o
LmluCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM2MSw2
ICszNjQsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAgICR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmgKICAgICAk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
aAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlJlc291cmNlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA5ZDZhOGVjLi5kM2ZlNzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0TmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVx
dWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3Bl
cnRpZXNQcml2YXRlLmgiCkBAIC0xNTgsNiArMTU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2Vi
U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdSZWZQ
dHI8V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IHVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRl
KHBlcm1pc3Npb25SZXF1ZXN0LCBzZWN1cml0eU9yaWdpbikpOworICAgICAgICB3ZWJraXRXZWJW
aWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KG1fd2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVR
VUVTVCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRGcmFtZShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdl
YlZpZXdQcmludEZyYW1lKG1fd2ViVmlldywgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1
NzE5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5
LmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgorI2luY2x1
ZGUgIldlYktpdEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgi
CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZXJt
aXNzaW9uIHJlcXVlc3QgZm9yIGFjY2Vzc2luZyB1c2VyJ3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4K
KyAqIEBUaXRsZTogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxz
bzogI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0IHJlcHJlc2VudHMgYSByZXF1ZXN0IGZvcgorICog
cGVybWlzc2lvbiB0byBkZWNpZGUgd2hldGhlciBXZWJLaXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8g
YWNjZXNzIHRoZSB1c2VyJ3MKKyAqIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgZGV2aWNlcyB3aGVu
IHJlcXVlc3RlZCB0aHJvdWdodCB0aGUgZ2V0VXNlck1lZGlhIEFQSS4KKyAqCisgKiBTaW5jZTog
Mi44CisgKi8KKworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfTUVESUFfVFlQRVMKK307
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQo
V2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSopOworCitzdHJ1Y3QgX1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSB7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk+IHJlcXVlc3Q7CisgICAgdWludDMyX3QgbWVkaWFUeXBlczsKKyAgICBi
b29sIG1hZGVEZWNpc2lvbjsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisg
ICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Bl
cm1pc3Npb25fcmVxdWVzdCwgR19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZB
Q0UoV0VCS0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1
ZXN0X2ludGVyZmFjZV9pbml0KSkKKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBBU1NFUlQoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
KTsKKworICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKwor
ICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURl
Y2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVl
OworICAgIHByaXYtPnJlcXVlc3QtPmFsbG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0
KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAo
cHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVj
aXNpb24gPSB0cnVlOworICAgIHByaXYtPnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdElmYWNlKiBpZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIC8v
IERlZmF1bHQgYmVoYXZpb3VyIHdoZW4gbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55
aW5nIHRoZSByZXF1ZXN0LgorICAgIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVu
eShXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNw
b3NlKG9iamVjdCk7Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9n
ZXRfbWVkaWFfdHlwZXM6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QKKyAqCisgKiBPYnRhaW5zIHRoZSBtZWRpYSBwYXJhbWV0ZXJzIG9mIHRoZSBwZXJt
aXNzaW9uIHJlcXVlc3QuIFNvbWUgd2ViCisgKiBwYWdlcyB3aWxsIGFzayBhY2Nlc3MgdG8gb25s
eSB0aGUgYXVkaW8gZGV2aWNlLCB3aGlsZSBvdGhlcnMgbWlnaHQKKyAqIGFzayBhY2Nlc3MgdG8g
dGhlIHZpZGVvIGRldmljZSBvciBib3RoLgorICoKKyAqIFJldHVybnM6IGEgYml0bWFzayBvZiAj
V2ViS2l0VXNlck1lZGlhVHlwZXMgcmVwcmVzZW50aW5nIHRoZSBtZWRpYSBwYXJhbWV0ZXJzIGFz
c29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK2d1aW50
MzIgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMoV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLCBX
RUJLSVRfVVNFUl9NRURJQV9UWVBFU19OT05FKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2
LT5tZWRpYVR5cGVzOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUq
IHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1Qob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX01F
RElBX1RZUEVTOgorICAgICAgICBnX3ZhbHVlX3NldF9mbGFncyh2YWx1ZSwgd2Via2l0X3VzZXJf
bWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMocmVxdWVzdCkpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3Mq
IG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9iamVjdENsYXNzLT5k
aXNwb3NlID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REaXNwb3NlOworICAgIG9i
amVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dEdldFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0VXNlclBlcm1pc3Npb25SZXF1
ZXN0Om1lZGlhLXR5cGVzOgorICAgICAqCisgICAgICogVGhlIG1lZGlhIGRldmljZSB0eXBlKHMp
IHJlcXVlc3RlZCwgZWl0aGVyIGF1ZGlvLCB2aWRlbyBvcgorICAgICAqIGJvdGgsIHJlcHJlc2Vu
dGVkIGFzIGEgI1dlYktpdFVzZXJNZWRpYVR5cGVzIGJpdG1hc2suCisgICAgICoKKyAgICAgKiBT
aW5jZTogMi44CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShv
YmplY3RDbGFzcywgUFJPUF9NRURJQV9UWVBFUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX2ZsYWdz
KCJtZWRpYS10eXBlcyIsIF8oIk1lZGlhIFR5cGVzIiksCisgICAgICAgICAgICBfKCJUaGUgbWVk
aWEgZGV2aWNlIHR5cGUocykgcmVxdWVzdGVkLCBlaXRoZXIgYXVkaW8sIHZpZGVvIG9yIGJvdGgi
KSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfVFlQRVMsCisgICAgICAgICAg
ICBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19OT05FLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7CisKK30KKworV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHdl
YmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHJlcXVlc3QsIFdlYlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikK
K3sKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlcm1lZGlhUGVybWlz
c2lvblJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBudWxscHRy
KSk7CisgICAgdWludDMyX3QgbWVkaWFUeXBlcyA9IDA7CisKKyAgICAvLyBGSVhNRTogc3RvcmUg
U2VjdXJpdHlPcmlnaW4KKyAgICBVTlVTRURfUEFSQU0oc2VjdXJpdHlPcmlnaW4pOworCisgICAg
UmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBhcmFtZXRlcnMgPSByZXF1ZXN0Lm1lZGlhUGFy
YW1ldGVycygpOworICAgIEFQSTo6Qm9vbGVhbiogYXVkaW8gPSByZWludGVycHJldF9jYXN0PEFQ
STo6Qm9vbGVhbio+KHBhcmFtZXRlcnMtPmdldCgiYXVkaW8iKSk7CisgICAgQVBJOjpCb29sZWFu
KiB2aWRlbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVBJOjpCb29sZWFuKj4ocGFyYW1ldGVycy0+Z2V0
KCJ2aWRlbyIpKTsKKworICAgIGlmIChhdWRpby0+dmFsdWUoKSkKKyAgICAgICAgbWVkaWFUeXBl
cyB8PSBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19BVURJTzsKKyAgICBpZiAodmlkZW8tPnZhbHVl
KCkpCisgICAgICAgIG1lZGlhVHlwZXMgfD0gV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfVklERU87
CisKKyAgICB1c2VybWVkaWFQZXJtaXNzaW9uUmVxdWVzdC0+cHJpdi0+cmVxdWVzdCA9ICZyZXF1
ZXN0OworICAgIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0LT5wcml2LT5tZWRpYVR5cGVzID0g
bWVkaWFUeXBlczsKKworICAgIHJldHVybiB1c2VybWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmY4ZjE5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lO
U0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3
ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisj
aWZuZGVmIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisj
ZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUICAgICAgICAg
ICAgKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9NRURJ
QV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KSkK
KyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VT
RVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9D
TEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBF
X1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0ICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlOworCisvKioKKyAqIFdlYktpdFVzZXJNZWRpYVR5cGVzOgorICogQFdF
QktJVF9VU0VSX01FRElBX1RZUEVTX05PTkU6IG5vIG1lZGlhLgorICogQFdFQktJVF9VU0VSX01F
RElBX1RZUEVTX0FVRElPOiBBdWRpbyBpbnB1dCBkZXZpY2UuCisgKiBAV0VCS0lUX1VTRVJfTUVE
SUFfVFlQRVNfVklERU86IFZpZGVvIGlucHV0IGRldmljZS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1
c2VkIHRvIHNwZWNpZnkgd2hpY2ggdHlwZSBvZiBtZWRpYSBkZXZpY2UgaXMgcmVxdWVzdGVkLgor
ICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgV0VCS0lUX1VTRVJfTUVE
SUFfVFlQRVNfTk9ORSwKKworICBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19BVURJTyA9IDEgPDwg
MCwKKyAgV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfVklERU8gPSAxIDw8IDEKK30gV2ViS2l0VXNl
ck1lZGlhVHlwZXM7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qg
eworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9X
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7
Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3Jl
cXVlc3RfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGd1aW50MzIKK3dlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fZ2V0X21lZGlhX3R5cGVzICAoV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QgKnJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uODA2OWQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdh
bGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisKK1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdENyZWF0ZShXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmLCBXZWJL
aXQ6OldlYlNlY3VyaXR5T3JpZ2luJik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggMzQ4ZjQ0YS4u
MmQ1M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLnht
bCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVj
aXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4
IDNmOWJkYmQuLjY3MDQ0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNTk1LDYg
KzU5NSwyNiBAQCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIDwvU0VDVElPTj4K
IAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDwvRklM
RT4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CitXZWJLaXRVc2VyTWVkaWFUeXBl
cword2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXMKKworPFNVQlNF
Q1RJT04gU3RhbmRhcmQ+CitXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzCitX
RUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1QKK1dFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lU
X0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfVVNFUl9NRURJ
QV9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUKK3dlYmtpdF91c2VyX21lZGlh
X3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPldlYktpdFBvbGljeURlY2lzaW9uPC9GSUxFPgogV2ViS2l0UG9saWN5RGVjaXNpb24KIHdl
YmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaAppbmRleCBkNzkxNjNlLi5iNzhkYzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRVc2VyQ29udGVudC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5z
cGVjdG9yLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYzYzNGE5YS4uMTM3OGRmOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA5LTAyICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBVc2VyTWVkaWEg
UGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIEdUSyB2ZXJzaW9uIG9mIHRoZSBNaW5pQnJvd3NlciBoYXMgZ2Fp
bmVkIFVzZXJNZWRpYSBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVlc3Qgc3VwcG9ydC4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6IFNob3cgYSBwb3B1cCB3aGVu
IHRoZSBwYWdlCisgICAgICAgIHJlcXVpcmVzIHVzZXIgcGVybWlzc2lvbiB0byBhY2Nlc3MgYXVk
aW8vdmlkZW8gZGV2aWNlcy4KKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2FsbGJh
Y2spOgorICAgICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogRGVsZXRlZC4KKwogMjAxNC0xMS0x
MiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgR1RLIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
CmluZGV4IGE5ZGI1MTkuLmE4ZDZhM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuYwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGJhY2tGb3J3YWRsaXN0Q2hhbmdl
ZChXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0LCBXZWJLaXRCCiAgICAgYnJv
d3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKHdpbmRvdywgYmFja0ZvcndhZGxpc3Qp
OwogfQogCi1zdGF0aWMgdm9pZCBnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayhHdGtE
aWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZSwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJl
cXVlc3QpCitzdGF0aWMgdm9pZCBwZXJtaXNzaW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0a0Rp
YWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVx
dWVzdCkKIHsKICAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CiAgICAgY2FzZSBHVEtfUkVTUE9OU0Vf
WUVTOgpAQCAtNDA4LDE5ICs0MDgsMzcgQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQ
b2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNpb24KIAogc3Rh
dGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCwgQnJvd3NlcldpbmRv
dyAqd2luZG93KQogewotICAgIGlmICghV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05f
UkVRVUVTVChyZXF1ZXN0KSkKKyAgICBjb25zdCBnY2hhciAqZGlhbG9nX3RpdGxlID0gTlVMTDsK
KyAgICBjb25zdCBnY2hhciAqZGlhbG9nX21lc3NhZ2UgPSBOVUxMOworICAgIGNvbnN0IGdjaGFy
ICpkaWFsb2dfbWVzc2FnZV9mb3JtYXQgPSBOVUxMOworCisgICAgaWYgKFdFQktJVF9JU19HRU9M
T0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX3Rp
dGxlID0gIkdlb2xvY2F0aW9uIHJlcXVlc3QiOworICAgICAgICBkaWFsb2dfbWVzc2FnZV9mb3Jt
YXQgPSAiJXMiOworICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJBbGxvdyBnZW9sb2NhdGlvbiBy
ZXF1ZXN0PyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0gIkFs
bG93IGFjY2VzcyB0byAlcyBkZXZpY2U/IjsKKyAgICAgICAgV2ViS2l0VXNlck1lZGlhVHlwZXMg
bWVkaWFfdHlwZXMgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBl
cyhXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAg
ICBkaWFsb2dfdGl0bGUgPSAiVXNlck1lZGlhIHJlcXVlc3QiOworICAgICAgICBpZiAobWVkaWFf
dHlwZXMgJiBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19BVURJTykgeworICAgICAgICAgICAgaWYg
KG1lZGlhX3R5cGVzICYgV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfVklERU8pCisgICAgICAgICAg
ICAgICAgZGlhbG9nX21lc3NhZ2UgPSAiYXVkaW8vdmlkZW8iOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGRpYWxvZ19tZXNzYWdlID0gImF1ZGlvIjsKKyAgICAgICAgfSBlbHNl
IGlmIChtZWRpYV90eXBlcyAmIFdFQktJVF9VU0VSX01FRElBX1RZUEVTX1ZJREVPKQorICAgICAg
ICAgICAgZGlhbG9nX21lc3NhZ2UgPSAidmlkZW8iOworICAgIH0gZWxzZQogICAgICAgICByZXR1
cm4gRkFMU0U7CiAKICAgICBHdGtXaWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19u
ZXcoR1RLX1dJTkRPVyh3aW5kb3cpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhf
UEFSRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
VEtfTUVTU0FHRV9RVUVTVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiR2VvbG9jYXRpb24gcmVxdWVzdCIpOworICAgICAgICBH
VEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAorICAgICAg
ICBHVEtfTUVTU0FHRV9RVUVTVElPTiwKKyAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAorICAg
ICAgICAiJXMiLCBkaWFsb2dfdGl0bGUpOwogCi0gICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zvcm1h
dF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9ESUFMT0coZGlhbG9nKSwgIkFsbG93IGdlb2xv
Y2F0aW9uIHJlcXVlc3Q/Iik7Ci0gICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25z
ZSIsIEdfQ0FMTEJBQ0soZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29iamVj
dF9yZWYocmVxdWVzdCkpOworICAgIGd0a19tZXNzYWdlX2RpYWxvZ19mb3JtYXRfc2Vjb25kYXJ5
X3RleHQoR1RLX01FU1NBR0VfRElBTE9HKGRpYWxvZyksIGRpYWxvZ19tZXNzYWdlX2Zvcm1hdCwg
ZGlhbG9nX21lc3NhZ2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2Ui
LCBHX0NBTExCQUNLKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29iamVjdF9y
ZWYocmVxdWVzdCkpOwogICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOwotCiAgICAgcmV0dXJu
IFRSVUU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cyBiL1Rv
b2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBlMGZhMzg2Li5lNmY1ZWE0IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4t
Z3RrLXRlc3RzCkBAIC04MSw3ICs4MSw2IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIFNr
aXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuVGVybWluYXRlVHdpY2Ui
LCAiVGVzdCBjYXVzZXMgY3Jhc2ggb24gdGhlIG5leHQgdGVzdCIsIDEyMTk3MCksCiAgICAgICAg
IFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuR2VvbG9jYXRpb25U
cmFuc2l0aW9uVG9IaWdoQWNjdXJhY3kiLCAiVGVzdCBjYXVzZXMgY3Jhc2ggb24gdGhlIG5leHQg
dGVzdCIsIDEyNTA2OCksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQy
IiwgIldlYktpdDIuR2VvbG9jYXRpb25UcmFuc2l0aW9uVG9Mb3dBY2N1cmFjeSIsICJUZXN0IGNh
dXNlcyBjcmFzaCBvbiB0aGUgbmV4dCB0ZXN0IiwgMTI1MDY4KSwKLSAgICAgICAgU2tpcHBlZFRl
c3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5Vc2VyTWVkaWFCYXNpYyIsICJUZXN0
IHRpbWVzIG91dCBiZWNhdXNlIGNvbnN0cmFpbnRzIHZhbGlkYXRpb24gc3VwcG9ydCBpcyBtaXNz
aW5nIiwgMTM2NDQ5KSwKICAgICBdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywg
dGVzdHM9W10pOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBkYTc3NDU0Li44ZDgzNTkyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcApA
QCAtMTk3LDYgKzE5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19Q
RVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKIAorICAgICAgICBp
ZiAodGVzdC0+bV9leHBlY3RlZE1lZGlhVHlwZXMgJiYgV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVS
TUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAgICAgICAgICBXZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCogdXNlck1lZGlhUmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BF
Uk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXModXNlck1lZGlhUmVx
dWVzdCksID09LCB0ZXN0LT5tX2V4cGVjdGVkTWVkaWFUeXBlcyk7CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cykKICAgICAgICAgICAgIHdl
YmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CiAgICAgICAgIGVsc2UKQEAg
LTIwOSw2ICsyMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9zY3JpcHREaWFsb2dUeXBlKFdF
QktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0RGlhbG9nQ29uZmly
bWVkKHRydWUpCiAgICAgICAgICwgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyhmYWxzZSkKKyAg
ICAgICAgLCBtX2V4cGVjdGVkTWVkaWFUeXBlcygwKQogICAgICAgICAsIG1fbW91c2VUYXJnZXRN
b2RpZmllcnMoMCkKICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9zZXR0
aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKQEAgLTI4OCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAg
V2ViS2l0U2NyaXB0RGlhbG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7CiAgICAgYm9vbCBtX3Nj
cmlwdERpYWxvZ0NvbmZpcm1lZDsKICAgICBib29sIG1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHM7
CisgICAgZ3VpbnQzMiBtX2V4cGVjdGVkTWVkaWFUeXBlczsKICAgICBXaW5kb3dQcm9wZXJ0aWVz
IG1fd2luZG93UHJvcGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX3dpbmRvd1By
b3BlcnRpZXNDaGFuZ2VkOwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gbV9tb3Vz
ZVRhcmdldEhpdFRlc3RSZXN1bHQ7CkBAIC02MjAsNyArNjI3LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdNb3VzZVRhcmdldChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAK
IH0KIAotc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiB7CiAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBnZW9jbHVlIGdpdmUgYSBydW50aW1lIHdhcm5p
bmcgYmVjYXVzZSBpdCB0cmllcwogICAgIC8vIHRvIHJlZ2lzdGVyIHRoZSBlcnJvciBxdWFyayB0
d2ljZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg1OC4K
QEAgLTY2MSw2ICs2NjgsNzEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVx
dWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmFkZExv
Z0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJf
dmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiBlbmFibGVk
ID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKTsKKyAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIFRSVUUp
OworCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHVzZXJNZWRpYVJlcXVlc3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIK
KyAgICAgICAgIiAgPHNjcmlwdD4iCisgICAgICAgICIgIGZ1bmN0aW9uIHJ1blRlc3QoKSIKKyAg
ICAgICAgIiAgeyIKKyAgICAgICAgIiAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzogdHJ1ZSwgdmlkZW86IHRydWV9LCIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKHMpIHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCIgfSwiCisg
ICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlKSB7IGRv
Y3VtZW50LnRpdGxlID0gZS5uYW1lIH0pOyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIiAgPC9z
Y3JpcHQ+IgorICAgICAgICAiICA8Ym9keSBvbmxvYWQ9J3J1blRlc3QoKTsnPjwvYm9keT4iCisg
ICAgICAgICI8L2h0bWw+IjsKKworICAgIHRlc3QtPm1fZXhwZWN0ZWRNZWRpYVR5cGVzID0gV0VC
S0lUX1VTRVJfTUVESUFfVFlQRVNfQVVESU8gfCBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19WSURF
TzsKKworICAgIC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0
LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7CisgICAgdGVzdC0+bG9hZEh0bWwo
dXNlck1lZGlhUmVxdWVzdEhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdl
ZFRvKCJQZXJtaXNzaW9uRGVuaWVkRXJyb3IiKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBw
ZXJtaXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9
IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwodXNlck1lZGlhUmVxdWVzdEhUTUwsIDApOworICAg
IHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJPSyIpOworCisgICAgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMo
VUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3
KTsKKyAgICBnYm9vbGVhbiBlbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVk
aWFfc3RyZWFtKHNldHRpbmdzKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRp
YV9zdHJlYW0oc2V0dGluZ3MsIFRSVUUpOworCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2Fp
dFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJNZWRpYVJlcXVlc3RI
VE1MID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPHNjcmlwdD4iCisgICAgICAgICIg
IGZ1bmN0aW9uIHJ1blRlc3QoKSIKKyAgICAgICAgIiAgeyIKKyAgICAgICAgIiAgICBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZSwgdmlkZW86IGZhbHNlfSwiCisgICAg
ICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihzKSB7IGRvY3Vt
ZW50LnRpdGxlID0gXCJPS1wiIH0sIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oZSkgeyBkb2N1bWVudC50aXRsZSA9IGUubmFtZSB9KTsiCisgICAg
ICAgICIgIH0iCisgICAgICAgICIgIDwvc2NyaXB0PiIKKyAgICAgICAgIiAgPGJvZHkgb25sb2Fk
PSdydW5UZXN0KCk7Jz48L2JvZHk+IgorICAgICAgICAiPC9odG1sPiI7CisKKyAgICB0ZXN0LT5t
X2V4cGVjdGVkTWVkaWFUeXBlcyA9IFdFQktJVF9VU0VSX01FRElBX1RZUEVTX0FVRElPOworCisg
ICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxs
b3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVk
aWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIlBl
cm1pc3Npb25EZW5pZWRFcnJvciIpOworCisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
bWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsKK30KKwogY2xhc3MgRmlsZUNob29zZXJU
ZXN0OiBwdWJsaWMgVUlDbGllbnRUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKEZpbGVDaG9vc2VyVGVzdCk7CkBAIC03ODUsNyArODU3LDkgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3JpcHQt
ZGlhbG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOwogICAgIFVJQ2xpZW50VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1wcm9wZXJ0aWVzIiwgdGVzdFdlYlZpZXdX
aW5kb3dQcm9wZXJ0aWVzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJtb3VzZS10YXJnZXQiLCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KTsKLSAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwZXJtaXNzaW9uLXJlcXVlc3RzIiwgdGVzdFdlYlZp
ZXdQZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImdlb2xvY2F0aW9uLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJhdWRpby11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0IiwgdGVzdFdlYlZp
ZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIEZpbGVDaG9vc2Vy
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdl
YlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCi0tIAoyLjEuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241789</attachid>
            <date>2014-11-18 07:36:47 -0800</date>
            <delta_ts>2014-11-18 07:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>35269</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyODgwNTNkYzhmNDQ4OWRkMWQzYzVlN2JkZTdiMTRlMWI5YzRkNmRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxNiArKwogLi4uL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAgICAgICAgfCAgMTcgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDI4ICsrKysKIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
ICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcCAgIHwgICA4ICsKIC4uLi9BUEkvZ3RrL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAgIHwgMTc0ICsrKysrKysrKysrKysrKysrKysrKwogLi4u
L0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAgICAgfCAgODMgKysr
KysrKysrKwogLi4uL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aCAgfCAgMjcgKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwgICAgfCAgIDEgKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQgfCAgMjAgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmggICAgICAgICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuY3BwICB8ICAgNyArLQogLi4uL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmggICAgfCAgIDcgKy0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrCiBUb29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jICAgICAgICAgICAgICB8ICAzNiArKystLQogVG9vbHMvU2NyaXB0
cy9ydW4tZ3RrLXRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQogLi4uL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcCAgICAgICAgICAgICAgfCAgNzggKysrKysrKyst
CiAxNyBmaWxlcyBjaGFuZ2VkLCA1MDAgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGU0ZjA0ZWUuLjFiODZhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0xMS0x
NyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gVXNlck1lZGlhIFBlcm1pc3Npb24gUmVxdWVzdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjQ0OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcnkgYmFzaWMgY29uc3RyYWludHMgdmFsaWRh
dGlvbiBzdXBwb3J0IGluIHRoZSBHU3RyZWFtZXIKKyAgICAgICAgTWVkaWFTdHJlYW1DZW50ZXIu
IFRoaXMgaXMgbmVlZGVkIHNvIHRoZSBHVEsgQyBBUEkgdGVzdHMgdXNpbmcgdGhlCisgICAgICAg
IGdldFVzZXJNZWRpYSgpIEFQSSB3b3VsZCBub3QgdGltZSBvdXQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6On5NZWRpYVN0
cmVhbUNlbnRlckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRl
ckdTdHJlYW1lcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKwogMjAx
NC0xMS0xNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggYSBzbWFsbCBpbmRlbnRhdGlvbiBtaXN0YWtlIGluIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVOdGhGaWx0ZXJUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAppbmRleCBjZWRiMDM5Li5kODdlM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJl
YW1DZW50ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKQEAgLTU5LDE0
ICs1OSwyMyBAQCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyKCkKIHsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6dmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVl
cnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisgICAgLy8gRklY
TUU6IEFjdHVhbGx5IGRvIGNvbnN0cmFpbnRzIHZhbGlkYXRpb24uCisgICAgY2xpZW50LT5jb25z
dHJhaW50c1ZhbGlkYXRlZCgpOwogfQogICAgIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJl
YW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQs
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisgICAgQVNTRVJUKGNsaWVudCk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAg
Ly8gRklYTUU6IGZpbGwgc291cmNlIHZlY3RvcnMKKyAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVh
bShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykp
OworCiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmdldE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xp
ZW50PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA4N2ViZGUyLi41NzM5Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTQtMTEtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOiBHVEstc3BlY2lmaWMgbmV3IGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogIERlY2lkZVBvbGljeSBoYW5kbGVyCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6
IEFkZGVkLAorICAgICAgICBXZWJLaXRHVEsgQVBJIGZvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCwgdmVyeSBzaW1pbGFyIHRvIHRoZQorICAgICAgICBvbmUgdXNlZCBmb3IgR2VvbG9jYXRp
b24uCisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKKyAg
ICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3
ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdlYmtp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcyk6CisgICAgICAgICh3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbDogRXhwb3NlIG5ldyBBUEkKKyAgICAgICAgaW4gZG9jdW1lbnRhdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEV4cG9zZSBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCBBUEkuCisKIDIwMTQtMTEtMTggIENhcmxvcyBBbGJlcnRv
IExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIFtHbnVU
TFNdIERvbid0IHVzZSBhIFNTTDMuMCByZWNvcmQgdmVyc2lvbiBpbiBjbGllbnQgaGVsbG8uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk1NGFhMGUuLjU4MTlkMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0yMDYsNiArMjA2LDkgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgK
ICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgK
ICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4KICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzYxLDYgKzM2NCw3IEBAIHNldChXZWJLaXQyR1RLX0lO
U1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5oCiAgICAgJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2UuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmlu
ZGV4IDlkNmE4ZWMuLmQzZmU3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJXZWJLaXROYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKQEAgLTE1OCw2ICsx
NTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgdmly
dHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmln
aW4sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdD4gdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocGVybWlzc2lvblJlcXVlc3QsIHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QobV93
ZWJWaWV3LCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmdldCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHZpcnR1YWwg
dm9pZCBwcmludEZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIGZyYW1lKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1ByaW50RnJhbWUobV93ZWJWaWV3LCBm
cmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhlM2RjOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIKKwor
I2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJLaXRFbnVtVHlwZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oIgor
I2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcGVybWlzc2lv
biByZXF1ZXN0IGZvciBhY2Nlc3NpbmcgdXNlcidzIGF1ZGlvL3ZpZGVvIGRldmljZXMuCisgKiBA
VGl0bGU6IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCwgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAqIHBlcm1p
c3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBiZSBhbGxvd2VkIHRvIGFjY2Vz
cyB0aGUgdXNlcidzCisgKiBhdWRpbyBhbmQgdmlkZW8gc291cmNlIGRldmljZXMgd2hlbiByZXF1
ZXN0ZWQgdGhyb3VnaHQgdGhlIGdldFVzZXJNZWRpYSBBUEkuCisgKgorICogU2luY2U6IDIuOAor
ICovCisKK2VudW0geworICAgIFBST1BfMCwKKyAgICBQUk9QX01FRElBX1RZUEVTCit9OworCitz
dGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUgeworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiByZXF1ZXN0OworICAgIHVpbnQzMl90IG1lZGlhVHlwZXM7CisgICAgYm9vbCBt
YWRlRGVjaXNpb247Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEVfV0lUSF9DT0RFKAorICAgIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdF
QktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9p
bnRlcmZhY2VfaW5pdCkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0QWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNT
RVJUKFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisK
KyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCktPnByaXY7CisKKyAgICAv
LyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYgKHByaXYtPm1hZGVEZWNpc2lv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsKKyAg
ICBwcml2LT5yZXF1ZXN0LT5hbGxvdygpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3Qp
Cit7CisgICAgQVNTRVJUKFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChy
ZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUq
IHByaXYgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCktPnBy
aXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYgKHByaXYt
Pm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+bWFkZURlY2lzaW9u
ID0gdHJ1ZTsKKyAgICBwcml2LT5yZXF1ZXN0LT5kZW55KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJl
cXVlc3RJZmFjZSogaWZhY2UpCit7CisgICAgaWZhY2UtPmFsbG93ID0gd2Via2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RBbGxvdzsKKyAgICBpZmFjZS0+ZGVueSA9IHdlYmtpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICAvLyBEZWZh
dWx0IGJlaGF2aW91ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0
aGUgcmVxdWVzdC4KKyAgICB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0VC
S0lUX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShv
YmplY3QpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X21l
ZGlhX3R5cGVzOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0CisgKgorICogT2J0YWlucyB0aGUgbWVkaWEgcGFyYW1ldGVycyBvZiB0aGUgcGVybWlzc2lv
biByZXF1ZXN0LiBTb21lIHdlYgorICogcGFnZXMgd2lsbCBhc2sgYWNjZXNzIHRvIG9ubHkgdGhl
IGF1ZGlvIGRldmljZSwgd2hpbGUgb3RoZXJzIG1pZ2h0CisgKiBhc2sgYWNjZXNzIHRvIHRoZSB2
aWRlbyBkZXZpY2Ugb3IgYm90aC4KKyAqCisgKiBSZXR1cm5zOiBhIGJpdG1hc2sgb2YgI1dlYktp
dFVzZXJNZWRpYVR5cGVzIHJlcHJlc2VudGluZyB0aGUgbWVkaWEgcGFyYW1ldGVycyBhc3NvY2lh
dGVkIHdpdGggdGhlIHJlcXVlc3QuCisgKgorICogU2luY2U6IDIuOAorICovCitndWludDMyIHdl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fZ2V0X21lZGlhX3R5cGVzKFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSwgV0VCS0lU
X1VTRVJfTUVESUFfVFlQRVNfTk9ORSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+bWVk
aWFUeXBlczsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
KG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9NRURJQV9U
WVBFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfZmxhZ3ModmFsdWUsIHdlYmtpdF91c2VyX21lZGlh
X3Blcm1pc3Npb25fZ2V0X21lZGlhX3R5cGVzKHJlcXVlc3QpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0
X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZGlzcG9z
ZSA9IHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKKyAgICBvYmplY3RD
bGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRQ
cm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFVzZXJQZXJtaXNzaW9uUmVxdWVzdDpt
ZWRpYS10eXBlczoKKyAgICAgKgorICAgICAqIFRoZSBtZWRpYSBkZXZpY2UgdHlwZShzKSByZXF1
ZXN0ZWQsIGVpdGhlciBhdWRpbywgdmlkZW8gb3IKKyAgICAgKiBib3RoLCByZXByZXNlbnRlZCBh
cyBhICNXZWJLaXRVc2VyTWVkaWFUeXBlcyBiaXRtYXNrLgorICAgICAqCisgICAgICogU2luY2U6
IDIuOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0
Q2xhc3MsIFBST1BfTUVESUFfVFlQRVMsCisgICAgICAgIGdfcGFyYW1fc3BlY19mbGFncygibWVk
aWEtdHlwZXMiLCBfKCJNZWRpYSBUeXBlcyIpLAorICAgICAgICAgICAgXygiVGhlIG1lZGlhIGRl
dmljZSB0eXBlKHMpIHJlcXVlc3RlZCwgZWl0aGVyIGF1ZGlvLCB2aWRlbyBvciBib3RoIiksCisg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1RZUEVTLAorICAgICAgICAgICAgV0VC
S0lUX1VTRVJfTUVESUFfVFlQRVNfTk9ORSwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSkpOworCit9CisKK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiByZXF1ZXN0LCBXZWJTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCit7Cisg
ICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJtZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgbnVsbHB0cikpOwor
ICAgIHVpbnQzMl90IG1lZGlhVHlwZXMgPSAwOworCisgICAgLy8gRklYTUU6IHN0b3JlIFNlY3Vy
aXR5T3JpZ2luCisgICAgVU5VU0VEX1BBUkFNKHNlY3VyaXR5T3JpZ2luKTsKKworICAgIGlmIChy
ZXF1ZXN0LmF1ZGlvKCkpCisgICAgICAgIG1lZGlhVHlwZXMgfD0gV0VCS0lUX1VTRVJfTUVESUFf
VFlQRVNfQVVESU87CisgICAgaWYgKHJlcXVlc3QudmlkZW8oKSkKKyAgICAgICAgbWVkaWFUeXBl
cyB8PSBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19WSURFTzsKKworICAgIHVzZXJtZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LT5wcml2LT5yZXF1ZXN0ID0gJnJlcXVlc3Q7CisgICAgdXNlcm1lZGlhUGVy
bWlzc2lvblJlcXVlc3QtPnByaXYtPm1lZGlhVHlwZXMgPSBtZWRpYVR5cGVzOworCisgICAgcmV0
dXJuIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhmMTk1
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdF
QktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4g
YmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X3VzZXJfbWVkaWFf
cGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwg
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVF
U1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJL
SVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRf
VVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9O
X1JFUVVFU1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgICAgICAgIFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU7CisKKy8q
KgorICogV2ViS2l0VXNlck1lZGlhVHlwZXM6CisgKiBAV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNf
Tk9ORTogbm8gbWVkaWEuCisgKiBAV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfQVVESU86IEF1ZGlv
IGlucHV0IGRldmljZS4KKyAqIEBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19WSURFTzogVmlkZW8g
aW5wdXQgZGV2aWNlLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCB0
eXBlIG9mIG1lZGlhIGRldmljZSBpcyByZXF1ZXN0ZWQuCisgKgorICogU2luY2U6IDIuOAorICov
Cit0eXBlZGVmIGVudW0geworICBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19OT05FLAorCisgIFdF
QktJVF9VU0VSX01FRElBX1RZUEVTX0FVRElPID0gMSA8PCAwLAorICBXRUJLSVRfVVNFUl9NRURJ
QV9UWVBFU19WSURFTyA9IDEgPDwgMQorfSBXZWJLaXRVc2VyTWVkaWFUeXBlczsKKworc3RydWN0
IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7
CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5
cGUKK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7
CisKK1dFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRf
bWVkaWFfdHlwZXMgIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7
CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
MDY5ZDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSwy
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIKKworV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QqIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4m
KTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCAzNDhmNDRhLi4yZDUzZWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwKQEAgLTI0LDYgKzI0LDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25BY3Rpb24ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLnht
bCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggM2Y5YmRiZC4uNjcwNDQ1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC01OTUsNiArNTk1LDI2IEBAIHdlYmtpdF9uYXZp
Z2F0aW9uX2FjdGlvbl9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PC9GSUxFPgorV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QKK1dlYktpdFVzZXJNZWRpYVR5cGVzCit3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX1VTRVJfTUVESUFf
UEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QK
K1dFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9H
RVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0X2dl
dF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9saWN5RGVjaXNp
b248L0ZJTEU+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9k
b3dubG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4
IGQ3OTE2M2UuLmI3OGRjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmgKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNj
aGVtZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmNwcAppbmRleCA5NTA4NTkyLi5lNTNhNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
Y3BwCkBAIC0xOSw3ICsxOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogCi0jaW5jbHVkZSAiQVBJTnVtYmVyLmgi
CiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTI4LDExICsyNyw5IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYXVkaW8sIGJvb2wgdmlk
ZW8pCiAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1fdXNlck1lZGlhSUQodXNlck1l
ZGlhSUQpCisgICAgLCBtX2F1ZGlvKGF1ZGlvKQorICAgICwgbV92aWRlbyh2aWRlbykKIHsKLSAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gcGFyYW1ldGVyc01hcDsKLSAg
ICBwYXJhbWV0ZXJzTWFwLmFkZChBU0NJSUxpdGVyYWwoImF1ZGlvIiksIEFQSTo6Qm9vbGVhbjo6
Y3JlYXRlKGF1ZGlvKSk7Ci0gICAgcGFyYW1ldGVyc01hcC5hZGQoQVNDSUlMaXRlcmFsKCJ2aWRl
byIpLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2aWRlbykpOwotICAgIG1fbWVkaWFQYXJhbWV0ZXJz
ID0gSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKFdURjo6bW92ZShwYXJhbWV0ZXJzTWFwKSk7
CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6YWxsb3coKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmgKaW5kZXggZjA0NzI3Mi4uYzI4M2U0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5oCkBAIC0yMCw3ICsyMCw2IEBACiAjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlRGlj
dGlvbmFyeS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMzksMTQgKzM4LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwogCi0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBtZWRpYVBhcmFtZXRlcnMo
KSBjb25zdCB7IHJldHVybiBtX21lZGlhUGFyYW1ldGVyczsgfQorICAgIGJvb2wgYXVkaW8oKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvOyB9CisgICAgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJu
IG1fdmlkZW87IH0KIAogcHJpdmF0ZToKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNl
ck1lZGlhSUQsIGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pOwogCiAgICAgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBtX3VzZXJN
ZWRpYUlEOwotICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBtX21lZGlhUGFyYW1ldGVy
czsKKyAgICBib29sIG1fYXVkaW87CisgICAgYm9vbCBtX3ZpZGVvOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNmY0NDhmYy4uNzBlNzkwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTExLTE3ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBVc2VyTWVk
aWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIEdUSyB2ZXJzaW9uIG9mIHRoZSBNaW5pQnJvd3NlciBoYXMg
Z2FpbmVkIFVzZXJNZWRpYSBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVlc3Qgc3VwcG9ydC4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6IFNob3cgYSBwb3B1cCB3
aGVuIHRoZSBwYWdlCisgICAgICAgIHJlcXVpcmVzIHVzZXIgcGVybWlzc2lvbiB0byBhY2Nlc3Mg
YXVkaW8vdmlkZW8gZGV2aWNlcy4KKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2Fs
bGJhY2spOgorICAgICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAg
ICAgKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogRGVsZXRlZC4KKwogMjAxNC0x
MS0xNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE3NjIzMi4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IGE5ZGI1MTkuLmE4ZDZhM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGJhY2tGb3J3YWRsaXN0Q2hh
bmdlZChXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0LCBXZWJLaXRCCiAgICAg
YnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKHdpbmRvdywgYmFja0ZvcndhZGxp
c3QpOwogfQogCi1zdGF0aWMgdm9pZCBnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayhH
dGtEaWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZSwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qg
KnJlcXVlc3QpCitzdGF0aWMgdm9pZCBwZXJtaXNzaW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0
a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAq
cmVxdWVzdCkKIHsKICAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CiAgICAgY2FzZSBHVEtfUkVTUE9O
U0VfWUVTOgpAQCAtNDA4LDE5ICs0MDgsMzcgQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNp
ZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNpb24KIAog
c3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCwgQnJvd3Nlcldp
bmRvdyAqd2luZG93KQogewotICAgIGlmICghV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJ
T05fUkVRVUVTVChyZXF1ZXN0KSkKKyAgICBjb25zdCBnY2hhciAqZGlhbG9nX3RpdGxlID0gTlVM
TDsKKyAgICBjb25zdCBnY2hhciAqZGlhbG9nX21lc3NhZ2UgPSBOVUxMOworICAgIGNvbnN0IGdj
aGFyICpkaWFsb2dfbWVzc2FnZV9mb3JtYXQgPSBOVUxMOworCisgICAgaWYgKFdFQktJVF9JU19H
RU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9n
X3RpdGxlID0gIkdlb2xvY2F0aW9uIHJlcXVlc3QiOworICAgICAgICBkaWFsb2dfbWVzc2FnZV9m
b3JtYXQgPSAiJXMiOworICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJBbGxvdyBnZW9sb2NhdGlv
biByZXF1ZXN0PyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0g
IkFsbG93IGFjY2VzcyB0byAlcyBkZXZpY2U/IjsKKyAgICAgICAgV2ViS2l0VXNlck1lZGlhVHlw
ZXMgbWVkaWFfdHlwZXMgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90
eXBlcyhXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAg
ICAgICBkaWFsb2dfdGl0bGUgPSAiVXNlck1lZGlhIHJlcXVlc3QiOworICAgICAgICBpZiAobWVk
aWFfdHlwZXMgJiBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19BVURJTykgeworICAgICAgICAgICAg
aWYgKG1lZGlhX3R5cGVzICYgV0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfVklERU8pCisgICAgICAg
ICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAiYXVkaW8vdmlkZW8iOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGRpYWxvZ19tZXNzYWdlID0gImF1ZGlvIjsKKyAgICAgICAgfSBl
bHNlIGlmIChtZWRpYV90eXBlcyAmIFdFQktJVF9VU0VSX01FRElBX1RZUEVTX1ZJREVPKQorICAg
ICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAidmlkZW8iOworICAgIH0gZWxzZQogICAgICAgICBy
ZXR1cm4gRkFMU0U7CiAKICAgICBHdGtXaWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxv
Z19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJ
VEhfUEFSRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEtfTUVTU0FHRV9RVUVTVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvbG9jYXRpb24gcmVxdWVzdCIpOworICAgICAg
ICBHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAorICAg
ICAgICBHVEtfTUVTU0FHRV9RVUVTVElPTiwKKyAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAor
ICAgICAgICAiJXMiLCBkaWFsb2dfdGl0bGUpOwogCi0gICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zv
cm1hdF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9ESUFMT0coZGlhbG9nKSwgIkFsbG93IGdl
b2xvY2F0aW9uIHJlcXVlc3Q/Iik7Ci0gICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNw
b25zZSIsIEdfQ0FMTEJBQ0soZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29i
amVjdF9yZWYocmVxdWVzdCkpOworICAgIGd0a19tZXNzYWdlX2RpYWxvZ19mb3JtYXRfc2Vjb25k
YXJ5X3RleHQoR1RLX01FU1NBR0VfRElBTE9HKGRpYWxvZyksIGRpYWxvZ19tZXNzYWdlX2Zvcm1h
dCwgZGlhbG9nX21lc3NhZ2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9u
c2UiLCBHX0NBTExCQUNLKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29iamVj
dF9yZWYocmVxdWVzdCkpOwogICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOwotCiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBlMGZhMzg2Li5lNmY1ZWE0IDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9y
dW4tZ3RrLXRlc3RzCkBAIC04MSw3ICs4MSw2IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAg
IFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuVGVybWluYXRlVHdp
Y2UiLCAiVGVzdCBjYXVzZXMgY3Jhc2ggb24gdGhlIG5leHQgdGVzdCIsIDEyMTk3MCksCiAgICAg
ICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuR2VvbG9jYXRp
b25UcmFuc2l0aW9uVG9IaWdoQWNjdXJhY3kiLCAiVGVzdCBjYXVzZXMgY3Jhc2ggb24gdGhlIG5l
eHQgdGVzdCIsIDEyNTA2OCksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJL
aXQyIiwgIldlYktpdDIuR2VvbG9jYXRpb25UcmFuc2l0aW9uVG9Mb3dBY2N1cmFjeSIsICJUZXN0
IGNhdXNlcyBjcmFzaCBvbiB0aGUgbmV4dCB0ZXN0IiwgMTI1MDY4KSwKLSAgICAgICAgU2tpcHBl
ZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5Vc2VyTWVkaWFCYXNpYyIsICJU
ZXN0IHRpbWVzIG91dCBiZWNhdXNlIGNvbnN0cmFpbnRzIHZhbGlkYXRpb24gc3VwcG9ydCBpcyBt
aXNzaW5nIiwgMTM2NDQ5KSwKICAgICBdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9u
cywgdGVzdHM9W10pOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBkYTc3NDU0Li44ZDgzNTkyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNw
cApAQCAtMTk3LDYgKzE5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9J
U19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKIAorICAgICAg
ICBpZiAodGVzdC0+bV9leHBlY3RlZE1lZGlhVHlwZXMgJiYgV0VCS0lUX0lTX1VTRVJfTUVESUFf
UEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAgICAgICAgICBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlck1lZGlhUmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9nZXRfbWVkaWFfdHlwZXModXNlck1lZGlh
UmVxdWVzdCksID09LCB0ZXN0LT5tX2V4cGVjdGVkTWVkaWFUeXBlcyk7CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cykKICAgICAgICAgICAg
IHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CiAgICAgICAgIGVsc2UK
QEAgLTIwOSw2ICsyMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9zY3JpcHREaWFsb2dUeXBl
KFdFQktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0RGlhbG9nQ29u
ZmlybWVkKHRydWUpCiAgICAgICAgICwgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyhmYWxzZSkK
KyAgICAgICAgLCBtX2V4cGVjdGVkTWVkaWFUeXBlcygwKQogICAgICAgICAsIG1fbW91c2VUYXJn
ZXRNb2RpZmllcnMoMCkKICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNj
cmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9z
ZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKQEAgLTI4OCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViS2l0U2NyaXB0RGlhbG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7CiAgICAgYm9vbCBt
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsKICAgICBib29sIG1fYWxsb3dQZXJtaXNzaW9uUmVxdWVz
dHM7CisgICAgZ3VpbnQzMiBtX2V4cGVjdGVkTWVkaWFUeXBlczsKICAgICBXaW5kb3dQcm9wZXJ0
aWVzIG1fd2luZG93UHJvcGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX3dpbmRv
d1Byb3BlcnRpZXNDaGFuZ2VkOwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gbV9t
b3VzZVRhcmdldEhpdFRlc3RSZXN1bHQ7CkBAIC02MjAsNyArNjI3LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdNb3VzZVRhcmdldChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAKIH0KIAotc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGll
bnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBnZW9jbHVlIGdpdmUgYSBydW50aW1lIHdh
cm5pbmcgYmVjYXVzZSBpdCB0cmllcwogICAgIC8vIHRvIHJlZ2lzdGVyIHRoZSBlcnJvciBxdWFy
ayB0d2ljZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg1
OC4KQEAgLTY2MSw2ICs2NjgsNzEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQZXJtaXNzaW9u
UmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmFk
ZExvZ0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKIH0KIAorc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiBlbmFi
bGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKTsK
KyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIFRS
VUUpOworCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHVzZXJNZWRpYVJlcXVlc3RIVE1MID0KKyAgICAgICAgIjxodG1s
PiIKKyAgICAgICAgIiAgPHNjcmlwdD4iCisgICAgICAgICIgIGZ1bmN0aW9uIHJ1blRlc3QoKSIK
KyAgICAgICAgIiAgeyIKKyAgICAgICAgIiAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzogdHJ1ZSwgdmlkZW86IHRydWV9LCIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHMpIHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCIgfSwi
CisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlKSB7
IGRvY3VtZW50LnRpdGxlID0gZS5uYW1lIH0pOyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIiAg
PC9zY3JpcHQ+IgorICAgICAgICAiICA8Ym9keSBvbmxvYWQ9J3J1blRlc3QoKTsnPjwvYm9keT4i
CisgICAgICAgICI8L2h0bWw+IjsKKworICAgIHRlc3QtPm1fZXhwZWN0ZWRNZWRpYVR5cGVzID0g
V0VCS0lUX1VTRVJfTUVESUFfVFlQRVNfQVVESU8gfCBXRUJLSVRfVVNFUl9NRURJQV9UWVBFU19W
SURFTzsKKworICAgIC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7CisgICAgdGVzdC0+bG9hZEh0
bWwodXNlck1lZGlhUmVxdWVzdEhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKCJQZXJtaXNzaW9uRGVuaWVkRXJyb3IiKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcg
YSBwZXJtaXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0
cyA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwodXNlck1lZGlhUmVxdWVzdEhUTUwsIDApOwor
ICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJPSyIpOworCisgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJW
aWV3KTsKKyAgICBnYm9vbGVhbiBlbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
bWVkaWFfc3RyZWFtKHNldHRpbmdzKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9t
ZWRpYV9zdHJlYW0oc2V0dGluZ3MsIFRSVUUpOworCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5k
V2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJNZWRpYVJlcXVl
c3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPHNjcmlwdD4iCisgICAgICAg
ICIgIGZ1bmN0aW9uIHJ1blRlc3QoKSIKKyAgICAgICAgIiAgeyIKKyAgICAgICAgIiAgICBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZSwgdmlkZW86IGZhbHNlfSwiCisg
ICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihzKSB7IGRv
Y3VtZW50LnRpdGxlID0gXCJPS1wiIH0sIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oZSkgeyBkb2N1bWVudC50aXRsZSA9IGUubmFtZSB9KTsiCisg
ICAgICAgICIgIH0iCisgICAgICAgICIgIDwvc2NyaXB0PiIKKyAgICAgICAgIiAgPGJvZHkgb25s
b2FkPSdydW5UZXN0KCk7Jz48L2JvZHk+IgorICAgICAgICAiPC9odG1sPiI7CisKKyAgICB0ZXN0
LT5tX2V4cGVjdGVkTWVkaWFUeXBlcyA9IFdFQktJVF9VU0VSX01FRElBX1RZUEVTX0FVRElPOwor
CisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1f
YWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2Vy
TWVkaWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8o
IlBlcm1pc3Npb25EZW5pZWRFcnJvciIpOworCisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsKK30KKwogY2xhc3MgRmlsZUNob29z
ZXJUZXN0OiBwdWJsaWMgVUlDbGllbnRUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVT
VF9GSVhUVVJFKEZpbGVDaG9vc2VyVGVzdCk7CkBAIC03ODUsNyArODU3LDkgQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3Jp
cHQtZGlhbG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOwogICAgIFVJQ2xpZW50
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1wcm9wZXJ0aWVzIiwgdGVzdFdlYlZp
ZXdXaW5kb3dQcm9wZXJ0aWVzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJtb3VzZS10YXJnZXQiLCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KTsKLSAgICBVSUNsaWVu
dFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwZXJtaXNzaW9uLXJlcXVlc3RzIiwgdGVzdFdl
YlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImdlb2xvY2F0aW9uLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJhdWRpby11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0IiwgdGVzdFdl
YlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIEZpbGVDaG9v
c2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVz
dFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCi0tIAoyLjEuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241790</attachid>
            <date>2014-11-18 07:39:36 -0800</date>
            <delta_ts>2014-11-18 07:42:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>35501</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyNWQ5NjIzNjU2MTMyZjhlMDc3ODAzYWI4NjE3NWU2M2E3ZTg0MDgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxNiArKwogLi4uL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAgICAgICAgfCAgMTcgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDI4ICsrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwICAgfCAgIDggKwogLi4uL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwICAgfCAxODkgKysrKysrKysrKysrKysrKysrKysrCiAuLi4v
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICAgICB8ICA2OSArKysr
KysrKwogLi4uL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCAg
fCAgMjcgKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bCAgICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dCB8ICAyMCArKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaCAgICAgICAgIHwgICAxICsKIC4uLi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAgIHwgICA3ICstCiAuLi4vVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCAgICB8ICAgNyArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgIDM3ICsrKy0KIFRvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKy0KIDE3
IGZpbGVzIGNoYW5nZWQsIDUxMSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRm
MDRlZS4uMWI4NmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTExLTE3ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBV
c2VyTWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyeSBiYXNpYyBjb25zdHJhaW50cyB2YWxpZGF0aW9u
IHN1cHBvcnQgaW4gdGhlIEdTdHJlYW1lcgorICAgICAgICBNZWRpYVN0cmVhbUNlbnRlci4gVGhp
cyBpcyBuZWVkZWQgc28gdGhlIEdUSyBDIEFQSSB0ZXN0cyB1c2luZyB0aGUKKyAgICAgICAgZ2V0
VXNlck1lZGlhKCkgQVBJIHdvdWxkIG5vdCB0aW1lIG91dC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorCiAyMDE0LTEx
LTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBhIHNtYWxsIGluZGVudGF0aW9uIG1pc3Rha2UgaW4gU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZU50aEZpbHRlclRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1D
ZW50ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGNlZGIwMzkuLmQ4N2UzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNl
bnRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcApAQCAtNTksMTQgKzU5
LDIzIEBAIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp+TWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXIoKQogewogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+KQordm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNs
aWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKKyAgICAvLyBGSVhNRTog
QWN0dWFsbHkgZG8gY29uc3RyYWludHMgdmFsaWRhdGlvbi4KKyAgICBjbGllbnQtPmNvbnN0cmFp
bnRzVmFsaWRhdGVkKCk7CiB9CiAgICAgCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVy
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+KQordm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKKyAgICBBU1NFUlQoY2xpZW50KTsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBhdWRpb1NvdXJjZXM7CisgICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IHZpZGVvU291cmNlczsKKyAgICAvLyBG
SVhNRTogZmlsbCBzb3VyY2UgdmVjdG9ycworICAgIGNsaWVudC0+ZGlkQ3JlYXRlU3RyZWFtKE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CisK
IH0KIAogYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Z2V0TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDg3ZWJkZTIuLjU3MzlmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxNC0xMS0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gVXNlck1lZGlhIFBlcm1pc3Npb24gUmVxdWVzdCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjQ0OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6IEdUSy1zcGVjaWZpYyBuZXcgZmlsZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwOiAgRGVjaWRlUG9saWN5IGhhbmRsZXIKKyAgICAgICAgaW1w
bGVtZW50YXRpb24gZm9yIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRk
ZWQsCisgICAgICAgIFdlYktpdEdUSyBBUEkgZm9yIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LCB2ZXJ5IHNpbWlsYXIgdG8gdGhlCisgICAgICAgIG9uZSB1c2VkIGZvciBHZW9sb2NhdGlvbi4K
KyAgICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cpOgorICAgICAg
ICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Via2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25fZ2V0X21lZGlhX3R5cGVzKToKKyAgICAgICAgKHdlYmtpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sOiBFeHBvc2UgbmV3IEFQSQorICAgICAgICBpbiBkb2N1bWVudGF0aW9uLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDogRXhwb3NlIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0IEFQSS4KKwogMjAxNC0xMS0xOCAgQ2FybG9zIEFsYmVydG8gTG9w
ZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gW0dudVRMU10g
RG9uJ3QgdXNlIGEgU1NMMy4wIHJlY29yZCB2ZXJzaW9uIGluIGNsaWVudCBoZWxsby4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOTU0YWEwZS4uNTgxOWQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTIwNiw2ICsyMDYsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC0zNjEsNiArMzY0LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVc2VyQ29udGVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXgg
OWQ2YThlYy4uZDNmZTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldl
YktpdE5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgpAQCAtMTU4LDYgKzE1OSwx
MyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2aXJ0dWFs
IGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJlcXVlc3QpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShwZXJtaXNzaW9uUmVxdWVzdCwgc2VjdXJpdHlPcmln
aW4pKTsKKyAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZp
ZXcsIFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1QodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
Z2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lk
IHByaW50RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShtX3dlYlZpZXcsIGZyYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmFhYThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaW5j
bHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgorI2luY2x1ZGUgIldlYktp
dEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5j
bHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZXJtaXNzaW9uIHJl
cXVlc3QgZm9yIGFjY2Vzc2luZyB1c2VyJ3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4KKyAqIEBUaXRs
ZTogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktp
dFBlcm1pc3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0IHJlcHJlc2VudHMgYSByZXF1ZXN0IGZvcgorICogcGVybWlzc2lv
biB0byBkZWNpZGUgd2hldGhlciBXZWJLaXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYWNjZXNzIHRo
ZSB1c2VyJ3MKKyAqIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgZGV2aWNlcyB3aGVuIHJlcXVlc3Rl
ZCB0aHJvdWdodCB0aGUgZ2V0VXNlck1lZGlhIEFQSS4KKyAqCisgKiBTaW5jZTogMi44CisgKi8K
KworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfSVNfQVVESU8sCisgICAgUFJPUF9JU19W
SURFTworfTsKKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZh
Y2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdDsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsK
K307CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdCwg
R19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfUEVS
TUlTU0lPTl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0
KSkKKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lT
X1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRl
Y2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYtPnJlcXVl
c3QtPmFsbG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NF
UlQoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKwor
ICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8v
IE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAg
IHByaXYtPnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Np
b25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBp
ZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3Vy
IHdoZW4gbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5nIHRoZSByZXF1ZXN0Lgor
ICAgIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91c2VyX21lZGlh
X3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisK
Ky8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19hdWRpbzoKKyAqIEByZXF1
ZXN0OiBhICNXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIFJldHVybnM6
IFRSVUUgaWYgYWNjZXNzIHRvIGFuIGF1ZGlvIGRldmljZSB3YXMgcmVxdWVzdGVkLgorICoKKyAq
IFNpbmNlOiAyLjgKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19hdWRpbyhXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LCBGQUxTRSk7Cisg
ICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPmF1ZGlvKCk7Cit9CisKKy8qKgorICog
d2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc192aWRlbzoKKyAqIEByZXF1ZXN0OiBhICNX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIFJldHVybnM6IFRSVUUgaWYg
YWNjZXNzIHRvIGFuIHZpZGVvIGRldmljZSB3YXMgcmVxdWVzdGVkLgorICoKKyAqIFNpbmNlOiAy
LjgKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc192aWRlbyhX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChyZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LCBGQUxTRSk7CisgICAgcmV0dXJu
IHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPnZpZGVvKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAg
ICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQp
IHsKKyAgICBjYXNlIFBST1BfSVNfQVVESU86CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfYXVkaW8ocmVxdWVzdCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVNfVklERU86CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfdmlkZW8o
cmVxdWVzdCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVl
c3RfY2xhc3NfaW5pdChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzKiBrbGFz
cykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3REaXNwb3NlOworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5OworCisgICAgLyoqCisgICAgICog
V2ViS2l0VXNlclBlcm1pc3Npb25SZXF1ZXN0OmlzLWF1ZGlvOgorICAgICAqCisgICAgICogV2V0
aGVyIHRoZSBtZWRpYSBkZXZpY2UgcmVxdWVzdGVkIGhhcyBhIG1pY3JvcGhvbmUgb3Igbm90Lgor
ICAgICAqCisgICAgICogU2luY2U6IDIuOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfSVNfQVVESU8sCisgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJpcy1hdWRpbyIsIF8oIklzIGF1ZGlvIGRldmljZSIpLAorICAgICAg
ICAgICAgXygiV2V0aGVyIHRoZSBtZWRpYSBkZXZpY2UgcmVxdWVzdGVkIGhhcyBhIG1pY3JvcGhv
bmUgb3Igbm90LiIpLAorICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFVzZXJQZXJtaXNzaW9uUmVx
dWVzdDppcy12aWRlbzoKKyAgICAgKgorICAgICAqIFdldGhlciB0aGUgbWVkaWEgZGV2aWNlIHJl
cXVlc3RlZCBoYXMgYSBtaWNyb3Bob25lIG9yIG5vdC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAy
LjgKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENs
YXNzLCBQUk9QX0lTX1ZJREVPLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiaXMtdmlk
ZW8iLCBfKCJJcyB2aWRlbyBkZXZpY2UiKSwKKyAgICAgICAgICAgIF8oIldldGhlciB0aGUgbWVk
aWEgZGV2aWNlIHJlcXVlc3RlZCBoYXMgYSB2aWRlbyBjYXB0dXJlIGNhcGFiaWxpdHkgb3Igbm90
LiIpLAorICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKKworfQorCitXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eSYgcmVxdWVzdCwgV2ViU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQoreworICAg
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiB1c2VybWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QsIG51bGxwdHIpKTsKKwor
ICAgIC8vIEZJWE1FOiBzdG9yZSBTZWN1cml0eU9yaWdpbgorICAgIFVOVVNFRF9QQVJBTShzZWN1
cml0eU9yaWdpbik7CisKKyAgICB1c2VybWVkaWFQZXJtaXNzaW9uUmVxdWVzdC0+cHJpdi0+cmVx
dWVzdCA9ICZyZXF1ZXN0OworICAgIHJldHVybiB1c2VybWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjQ1NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5o
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5
IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgor
CisjaWZuZGVmIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUICAgICAg
ICAgICAgKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VT
RVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9S
RVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0ICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAg
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0
cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAgR09iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykg
KHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlz
c2lvbl9yZXF1ZXN0X2dldF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19hdWRpbyhXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25faXNfdmlkZW8oV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QgKnJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODA2OWQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIldlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisKK1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0
ZShXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmLCBXZWJLaXQ6OldlYlNl
Y3VyaXR5T3JpZ2luJik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggMzQ4ZjQ0YS4uMmQ1M2ViZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLnhtbCIvPgorICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC54
bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1s
Ii8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDNmOWJkYmQu
Ljk3NWVjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNTk1LDYgKzU5NSwyNiBA
QCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Cit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9u
X2lzX2F1ZGlvCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX3ZpZGVvCisKKzxTVUJT
RUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcwor
V0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9VU0VSX01F
RElBX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9S
RVFVRVNUCitXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJ
VF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lUX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgor
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8
RklMRT5XZWJLaXRQb2xpY3lEZWNpc2lvbjwvRklMRT4KIFdlYktpdFBvbGljeURlY2lzaW9uCiB3
ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKaW5kZXggZDc5MTYzZS4uYjc4ZGMyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VXNlckNvbnRlbnQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlci5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYklu
c3BlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCmluZGV4IDk1MDg1OTIuLmU1M2E2MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCiAK
LSNpbmNsdWRlICJBUElOdW1iZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtMjgsMTEgKzI3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbykKICAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQogICAg
ICwgbV91c2VyTWVkaWFJRCh1c2VyTWVkaWFJRCkKKyAgICAsIG1fYXVkaW8oYXVkaW8pCisgICAg
LCBtX3ZpZGVvKHZpZGVvKQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiBwYXJhbWV0ZXJzTWFwOwotICAgIHBhcmFtZXRlcnNNYXAuYWRkKEFTQ0lJTGl0ZXJhbCgi
YXVkaW8iKSwgQVBJOjpCb29sZWFuOjpjcmVhdGUoYXVkaW8pKTsKLSAgICBwYXJhbWV0ZXJzTWFw
LmFkZChBU0NJSUxpdGVyYWwoInZpZGVvIiksIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHZpZGVvKSk7
Ci0gICAgbV9tZWRpYVBhcmFtZXRlcnMgPSBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoV1RG
Ojptb3ZlKHBhcmFtZXRlcnNNYXApKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjphbGxvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAppbmRleCBmMDQ3MjcyLi5jMjgz
ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKQEAgLTIwLDcgKzIwLDYgQEAKICNkZWZpbmUgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
LSNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSwxNCArMzgsMTYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IG1lZGlhUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQYXJhbWV0ZXJz
OyB9CisgICAgYm9vbCBhdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW87IH0KKyAgICBib29s
IHZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV92aWRlbzsgfQogCiBwcml2YXRlOgogICAgIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbyk7
CiAKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbV9tYW5hZ2Vy
OwogICAgIHVpbnQ2NF90IG1fdXNlck1lZGlhSUQ7Ci0gICAgUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IG1fbWVkaWFQYXJhbWV0ZXJzOworICAgIGJvb2wgbV9hdWRpbzsKKyAgICBib29sIG1f
dmlkZW87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZjQ0OGZjLi43MGU3OTBiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTQtMTEtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgR1RLIHZlcnNpb24g
b2YgdGhlIE1pbmlCcm93c2VyIGhhcyBnYWluZWQgVXNlck1lZGlhIHBlcm1pc3Npb24KKyAgICAg
ICAgcmVxdWVzdCBzdXBwb3J0LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYzogU2hvdyBhIHBvcHVwIHdoZW4gdGhlIHBhZ2UKKyAgICAgICAgcmVxdWlyZXMgdXNl
ciBwZXJtaXNzaW9uIHRvIGFjY2VzcyBhdWRpby92aWRlbyBkZXZpY2VzLgorICAgICAgICAocGVy
bWlzc2lvblJlcXVlc3REaWFsb2dDYWxsYmFjayk6CisgICAgICAgICh3ZWJWaWV3RGVjaWRlUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJh
Y2spOiBEZWxldGVkLgorCiAyMDE0LTExLTE3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTc2MjMyLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggYTlkYjUxOS4uZDM3NmQ5YSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGlj
IHZvaWQgYmFja0ZvcndhZGxpc3RDaGFuZ2VkKFdlYktpdEJhY2tGb3J3YXJkTGlzdCAqYmFja0Zv
cndhZGxpc3QsIFdlYktpdEIKICAgICBicm93c2VyV2luZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlv
bnMod2luZG93LCBiYWNrRm9yd2FkbGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlb2xvY2F0aW9u
UmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHBlcm1pc3Npb25S
ZXF1ZXN0RGlhbG9nQ2FsbGJhY2soR3RrRGlhbG9nICpkaWFsb2csIGdpbnQgcmVzcG9uc2UsIFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KQogewogICAgIHN3aXRjaCAocmVzcG9uc2Up
IHsKICAgICBjYXNlIEdUS19SRVNQT05TRV9ZRVM6CkBAIC00MDgsMTkgKzQwOCwzOCBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBvbGljeShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBX
ZWJLaXRQb2xpY3lEZWNpc2lvbgogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBlcm1p
c3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBlcm1pc3Npb25SZXF1
ZXN0ICpyZXF1ZXN0LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgaWYgKCFXRUJLSVRf
SVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKQorICAgIGNvbnN0IGdj
aGFyICpkaWFsb2dfdGl0bGUgPSBOVUxMOworICAgIGNvbnN0IGdjaGFyICpkaWFsb2dfbWVzc2Fn
ZSA9IE5VTEw7CisgICAgY29uc3QgZ2NoYXIgKmRpYWxvZ19tZXNzYWdlX2Zvcm1hdCA9IE5VTEw7
CisKKyAgICBpZiAoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1
ZXN0KSkgeworICAgICAgICBkaWFsb2dfdGl0bGUgPSAiR2VvbG9jYXRpb24gcmVxdWVzdCI7Cisg
ICAgICAgIGRpYWxvZ19tZXNzYWdlX2Zvcm1hdCA9ICIlcyI7CisgICAgICAgIGRpYWxvZ19tZXNz
YWdlID0gIkFsbG93IGdlb2xvY2F0aW9uIHJlcXVlc3Q/IjsKKyAgICB9IGVsc2UgaWYgKFdFQktJ
VF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAgICAgICBk
aWFsb2dfbWVzc2FnZV9mb3JtYXQgPSAiQWxsb3cgYWNjZXNzIHRvICVzIGRldmljZT8iOworICAg
ICAgICBnYm9vbGVhbiBpc19hdWRpbyA9IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNf
YXVkaW8oV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAg
ICAgICAgZ2Jvb2xlYW4gaXNfdmlkZW8gPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lz
X3ZpZGVvKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7Cisg
ICAgICAgIGRpYWxvZ190aXRsZSA9ICJVc2VyTWVkaWEgcmVxdWVzdCI7CisgICAgICAgIGlmIChp
c19hdWRpbykgeworICAgICAgICAgICAgaWYgKGlzX3ZpZGVvKQorICAgICAgICAgICAgICAgIGRp
YWxvZ19tZXNzYWdlID0gImF1ZGlvL3ZpZGVvIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJhdWRpbyI7CisgICAgICAgIH0gZWxzZSBpZiAoaXNf
dmlkZW8pCisgICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJ2aWRlbyI7CisgICAgfSBlbHNl
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21l
c3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lORE9XKHdpbmRvdyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9H
X0RFU1RST1lfV0lUSF9QQVJFTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9sb2NhdGlvbiByZXF1ZXN0
Iik7CisgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9Q
QVJFTlQsCisgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAorICAgICAgICBHVEtfQlVUVE9O
U19ZRVNfTk8sCisgICAgICAgICIlcyIsIGRpYWxvZ190aXRsZSk7CiAKLSAgICBndGtfbWVzc2Fn
ZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhkaWFsb2cp
LCAiQWxsb3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGRp
YWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxs
YmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CisgICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zv
cm1hdF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9ESUFMT0coZGlhbG9nKSwgZGlhbG9nX21l
c3NhZ2VfZm9ybWF0LCBkaWFsb2dfbWVzc2FnZSk7CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFs
b2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3REaWFsb2dDYWxsYmFj
ayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7
Ci0KICAgICByZXR1cm4gVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
Z3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGUwZmEzODYuLmU2
ZjVlYTQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cworKysgYi9Ub29s
cy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTgxLDcgKzgxLDYgQEAgY2xhc3MgVGVzdFJ1bm5l
cjoKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5U
ZXJtaW5hdGVUd2ljZSIsICJUZXN0IGNhdXNlcyBjcmFzaCBvbiB0aGUgbmV4dCB0ZXN0IiwgMTIx
OTcwKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0
Mi5HZW9sb2NhdGlvblRyYW5zaXRpb25Ub0hpZ2hBY2N1cmFjeSIsICJUZXN0IGNhdXNlcyBjcmFz
aCBvbiB0aGUgbmV4dCB0ZXN0IiwgMTI1MDY4KSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktp
dDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5HZW9sb2NhdGlvblRyYW5zaXRpb25Ub0xvd0FjY3Vy
YWN5IiwgIlRlc3QgY2F1c2VzIGNyYXNoIG9uIHRoZSBuZXh0IHRlc3QiLCAxMjUwNjgpLAotICAg
ICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIsICJXZWJLaXQyLlVzZXJNZWRp
YUJhc2ljIiwgIlRlc3QgdGltZXMgb3V0IGJlY2F1c2UgY29uc3RyYWludHMgdmFsaWRhdGlvbiBz
dXBwb3J0IGlzIG1pc3NpbmciLCAxMzY0NDkpLAogICAgIF0KIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBvcHRpb25zLCB0ZXN0cz1bXSk6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQuY3BwCmluZGV4IGRhNzc0NTQuLjJkODMzNDYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlD
bGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
VUlDbGllbnQuY3BwCkBAIC0xOTcsNiArMTk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0lTX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CiAgICAgICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkp
OwogCisgICAgICAgIGlmICh0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMgJiYgV0VCS0lUX0lTX1VT
RVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAgICAgICAgICBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlck1lZGlhUmVxdWVzdCA9IFdFQktJVF9V
U0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2NtcGludCh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2F1ZGlvKHVzZXJNZWRp
YVJlcXVlc3QpLCA9PSwgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEpOworICAgICAgICAgICAg
Z19hc3NlcnRfY21waW50KHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfdmlkZW8odXNl
ck1lZGlhUmVxdWVzdCksID09LCB0ZXN0LT5tX2V4cGVjdGVkVmlkZW9NZWRpYSk7CisgICAgICAg
IH0KKwogICAgICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cykKICAgICAg
ICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CiAgICAgICAg
IGVsc2UKQEAgLTIwOSw2ICsyMTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9zY3JpcHREaWFs
b2dUeXBlKFdFQktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0RGlh
bG9nQ29uZmlybWVkKHRydWUpCiAgICAgICAgICwgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyhm
YWxzZSkKKyAgICAgICAgLCBtX3ZlcmlmeU1lZGlhVHlwZXMoZmFsc2UpCisgICAgICAgICwgbV9l
eHBlY3RlZEF1ZGlvTWVkaWEoZmFsc2UpCisgICAgICAgICwgbV9leHBlY3RlZFZpZGVvTWVkaWEo
ZmFsc2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAgICAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21h
dGljYWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwpA
QCAtMjg4LDYgKzI5Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJLaXRTY3JpcHREaWFsb2dUeXBlIG1f
c2NyaXB0RGlhbG9nVHlwZTsKICAgICBib29sIG1fc2NyaXB0RGlhbG9nQ29uZmlybWVkOwogICAg
IGJvb2wgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0czsKKyAgICBnYm9vbGVhbiBtX3ZlcmlmeU1l
ZGlhVHlwZXM7CisgICAgZ2Jvb2xlYW4gbV9leHBlY3RlZEF1ZGlvTWVkaWE7CisgICAgZ2Jvb2xl
YW4gbV9leHBlY3RlZFZpZGVvTWVkaWE7CiAgICAgV2luZG93UHJvcGVydGllcyBtX3dpbmRvd1By
b3BlcnRpZXM7CiAgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV93aW5kb3dQcm9wZXJ0aWVzQ2hh
bmdlZDsKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1fbW91c2VUYXJnZXRIaXRU
ZXN0UmVzdWx0OwpAQCAtNjIwLDcgKzYzMiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91
c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiB9CiAKLXN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8v
IFNvbWUgdmVyc2lvbnMgb2YgZ2VvY2x1ZSBnaXZlIGEgcnVudGltZSB3YXJuaW5nIGJlY2F1c2Ug
aXQgdHJpZXMKICAgICAvLyB0byByZWdpc3RlciB0aGUgZXJyb3IgcXVhcmsgdHdpY2UuIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NTguCkBAIC02NjEsNiAr
NjczLDc1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKFVJQ2xp
ZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5hZGRMb2dGYXRhbEZsYWco
R19MT0dfTEVWRUxfV0FSTklORyk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nl
dHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gZW5hYmxlZCA9IHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncyk7CisgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBUUlVFKTsKKworICAgIHRl
c3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiB1c2VyTWVkaWFSZXF1ZXN0SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICIg
IDxzY3JpcHQ+IgorICAgICAgICAiICBmdW5jdGlvbiBydW5UZXN0KCkiCisgICAgICAgICIgIHsi
CisgICAgICAgICIgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86IHRydWUs
IHZpZGVvOiB0cnVlfSwiCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbihzKSB7IGRvY3VtZW50LnRpdGxlID0gXCJPS1wiIH0sIgorICAgICAgICAiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgeyBkb2N1bWVudC50aXRs
ZSA9IGUubmFtZSB9KTsiCisgICAgICAgICIgIH0iCisgICAgICAgICIgIDwvc2NyaXB0PiIKKyAg
ICAgICAgIiAgPGJvZHkgb25sb2FkPSdydW5UZXN0KCk7Jz48L2JvZHk+IgorICAgICAgICAiPC9o
dG1sPiI7CisKKyAgICB0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMgPSBUUlVFOworICAgIHRlc3Qt
Pm1fZXhwZWN0ZWRBdWRpb01lZGlhID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkVmlkZW9N
ZWRpYSA9IFRSVUU7CisKKyAgICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3Qu
CisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOworICAgIHRlc3Qt
PmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxU
aXRsZUNoYW5nZWRUbygiUGVybWlzc2lvbkRlbmllZEVycm9yIik7CisKKyAgICAvLyBUZXN0IGFs
bG93aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9u
UmVxdWVzdHMgPSB0cnVlOworICAgIHRlc3QtPmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RIVE1M
LCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiT0siKTsKKworICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3Qt
Pm1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncyk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBUUlVFKTsKKworICAgIHRlc3QtPnNob3dJbldp
bmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyTWVk
aWFSZXF1ZXN0SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICIgIDxzY3JpcHQ+Igor
ICAgICAgICAiICBmdW5jdGlvbiBydW5UZXN0KCkiCisgICAgICAgICIgIHsiCisgICAgICAgICIg
ICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86IHRydWUsIHZpZGVvOiBmYWxz
ZX0sIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24o
cykgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9LCIKKyAgICAgICAgIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsgZG9jdW1lbnQudGl0bGUgPSBlLm5hbWUg
fSk7IgorICAgICAgICAiICB9IgorICAgICAgICAiICA8L3NjcmlwdD4iCisgICAgICAgICIgIDxi
b2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisg
ICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVk
QXVkaW9NZWRpYSA9IFRSVUU7CisgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBGQUxT
RTsKKworICAgIC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0
LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7CisgICAgdGVzdC0+bG9hZEh0bWwo
dXNlck1lZGlhUmVxdWVzdEhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdl
ZFRvKCJQZXJtaXNzaW9uRGVuaWVkRXJyb3IiKTsKKworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7Cit9CisKIGNsYXNzIEZpbGVD
aG9vc2VyVGVzdDogcHVibGljIFVJQ2xpZW50VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShGaWxlQ2hvb3NlclRlc3QpOwpAQCAtNzg1LDcgKzg2Niw5IEBAIHZvaWQg
YmVmb3JlQWxsKCkKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZh
c2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RX
ZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7Ci0gICAgVUlD
bGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRl
c3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJnZW9sb2NhdGlvbi1wZXJtaXNzaW9uLXJlcXVlc3RzIiwgdGVzdFdlYlZp
ZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk7CisgICAgVUlDbGllbnRUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0V2Vi
Vmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CisgICAgVUlDbGllbnRUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAiYXVkaW8tdXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRl
c3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBGaWxl
Q2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJmaWxlLWNob29zZXItcmVxdWVzdCIs
IHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KTsKIH0KIAotLSAKMi4xLjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241791</attachid>
            <date>2014-11-18 07:42:40 -0800</date>
            <delta_ts>2014-11-20 02:08:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>35514</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiYjgyYzU1NmUxNWViYWIxZWIxZWIyM2FjNzI5NDExN2Q2MWZhYWFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxNiArKwogLi4uL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAgICAgICAgfCAgMTcgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDI4ICsrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwICAgfCAgIDggKwogLi4uL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwICAgfCAxODkgKysrKysrKysrKysrKysrKysrKysrCiAuLi4v
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICAgICB8ICA2OSArKysr
KysrKwogLi4uL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCAg
fCAgMjcgKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bCAgICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dCB8ICAyMCArKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaCAgICAgICAgIHwgICAxICsKIC4uLi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAgIHwgICA3ICstCiAuLi4vVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCAgICB8ICAgNyArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgIDM3ICsrKy0KIFRvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKy0KIDE3
IGZpbGVzIGNoYW5nZWQsIDUxMSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRm
MDRlZS4uMWI4NmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTExLTE3ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBV
c2VyTWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyeSBiYXNpYyBjb25zdHJhaW50cyB2YWxpZGF0aW9u
IHN1cHBvcnQgaW4gdGhlIEdTdHJlYW1lcgorICAgICAgICBNZWRpYVN0cmVhbUNlbnRlci4gVGhp
cyBpcyBuZWVkZWQgc28gdGhlIEdUSyBDIEFQSSB0ZXN0cyB1c2luZyB0aGUKKyAgICAgICAgZ2V0
VXNlck1lZGlhKCkgQVBJIHdvdWxkIG5vdCB0aW1lIG91dC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorCiAyMDE0LTEx
LTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBhIHNtYWxsIGluZGVudGF0aW9uIG1pc3Rha2UgaW4gU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZU50aEZpbHRlclRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1D
ZW50ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGNlZGIwMzkuLmQ4N2UzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNl
bnRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcApAQCAtNTksMTQgKzU5
LDIzIEBAIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp+TWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXIoKQogewogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+KQordm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNs
aWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKKyAgICAvLyBGSVhNRTog
QWN0dWFsbHkgZG8gY29uc3RyYWludHMgdmFsaWRhdGlvbi4KKyAgICBjbGllbnQtPmNvbnN0cmFp
bnRzVmFsaWRhdGVkKCk7CiB9CiAgICAgCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVy
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+KQordm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKKyAgICBBU1NFUlQoY2xpZW50KTsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBhdWRpb1NvdXJjZXM7CisgICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IHZpZGVvU291cmNlczsKKyAgICAvLyBG
SVhNRTogZmlsbCBzb3VyY2UgdmVjdG9ycworICAgIGNsaWVudC0+ZGlkQ3JlYXRlU3RyZWFtKE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CisK
IH0KIAogYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Z2V0TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDg3ZWJkZTIuLjU3MzlmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxNC0xMS0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gVXNlck1lZGlhIFBlcm1pc3Npb24gUmVxdWVzdCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjQ0OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6IEdUSy1zcGVjaWZpYyBuZXcgZmlsZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwOiAgRGVjaWRlUG9saWN5IGhhbmRsZXIKKyAgICAgICAgaW1w
bGVtZW50YXRpb24gZm9yIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRk
ZWQsCisgICAgICAgIFdlYktpdEdUSyBBUEkgZm9yIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LCB2ZXJ5IHNpbWlsYXIgdG8gdGhlCisgICAgICAgIG9uZSB1c2VkIGZvciBHZW9sb2NhdGlvbi4K
KyAgICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cpOgorICAgICAg
ICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Via2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25fZ2V0X21lZGlhX3R5cGVzKToKKyAgICAgICAgKHdlYmtpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sOiBFeHBvc2UgbmV3IEFQSQorICAgICAgICBpbiBkb2N1bWVudGF0aW9uLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDogRXhwb3NlIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0IEFQSS4KKwogMjAxNC0xMS0xOCAgQ2FybG9zIEFsYmVydG8gTG9w
ZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gW0dudVRMU10g
RG9uJ3QgdXNlIGEgU1NMMy4wIHJlY29yZCB2ZXJzaW9uIGluIGNsaWVudCBoZWxsby4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOTU0YWEwZS4uNTgxOWQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTIwNiw2ICsyMDYsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC0zNjEsNiArMzY0LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVc2VyQ29udGVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXgg
OWQ2YThlYy4uZDNmZTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldl
YktpdE5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgpAQCAtMTU4LDYgKzE1OSwx
MyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2aXJ0dWFs
IGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJlcXVlc3QpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShwZXJtaXNzaW9uUmVxdWVzdCwgc2VjdXJpdHlPcmln
aW4pKTsKKyAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZp
ZXcsIFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1QodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
Z2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lk
IHByaW50RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShtX3dlYlZpZXcsIGZyYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWM3ZGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaW5j
bHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgorI2luY2x1ZGUgIldlYktp
dEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5j
bHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZXJtaXNzaW9uIHJl
cXVlc3QgZm9yIGFjY2Vzc2luZyB1c2VyJ3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4KKyAqIEBUaXRs
ZTogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktp
dFBlcm1pc3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0IHJlcHJlc2VudHMgYSByZXF1ZXN0IGZvcgorICogcGVybWlzc2lv
biB0byBkZWNpZGUgd2hldGhlciBXZWJLaXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYWNjZXNzIHRo
ZSB1c2VyJ3MKKyAqIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgZGV2aWNlcyB3aGVuIHJlcXVlc3Rl
ZCB0aHJvdWdodCB0aGUgZ2V0VXNlck1lZGlhIEFQSS4KKyAqCisgKiBTaW5jZTogMi44CisgKi8K
KworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfSVNfQVVESU8sCisgICAgUFJPUF9JU19W
SURFTworfTsKKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZh
Y2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdDsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsK
K307CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdCwg
R19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfUEVS
TUlTU0lPTl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0
KSkKKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lT
X1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRl
Y2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYtPnJlcXVl
c3QtPmFsbG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NF
UlQoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKwor
ICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8v
IE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAg
IHByaXYtPnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Np
b25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBp
ZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3Vy
IHdoZW4gbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5nIHRoZSByZXF1ZXN0Lgor
ICAgIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91c2VyX21lZGlh
X3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisK
Ky8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19hdWRpbzoKKyAqIEByZXF1
ZXN0OiBhICNXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIFJldHVybnM6
IFRSVUUgaWYgYWNjZXNzIHRvIGFuIGF1ZGlvIGRldmljZSB3YXMgcmVxdWVzdGVkLgorICoKKyAq
IFNpbmNlOiAyLjgKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19hdWRpbyhXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LCBGQUxTRSk7Cisg
ICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPmF1ZGlvKCk7Cit9CisKKy8qKgorICog
d2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc192aWRlbzoKKyAqIEByZXF1ZXN0OiBhICNX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIFJldHVybnM6IFRSVUUgaWYg
YWNjZXNzIHRvIGEgdmlkZW8gZGV2aWNlIHdhcyByZXF1ZXN0ZWQuCisgKgorICogU2luY2U6IDIu
OAorICovCitnYm9vbGVhbiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX3ZpZGVvKFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHJlcXVlc3QtPnByaXYtPnJlcXVlc3QsIEZBTFNFKTsKKyAgICByZXR1cm4g
cmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+dmlkZW8oKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAg
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkg
eworICAgIGNhc2UgUFJPUF9JU19BVURJTzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19hdWRpbyhyZXF1ZXN0KSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19WSURFTzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc192aWRlbyhy
ZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVz
dF9jbGFzc19pbml0KFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFz
cyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdERpc3Bvc2U7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHk7CisKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRVc2VyUGVybWlzc2lvblJlcXVlc3Q6aXMtYXVkaW86CisgICAgICoKKyAgICAgKiBXZXRo
ZXIgdGhlIG1lZGlhIGRldmljZSByZXF1ZXN0ZWQgaGFzIGEgbWljcm9waG9uZSBvciBub3QuCisg
ICAgICoKKyAgICAgKiBTaW5jZTogMi44CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9JU19BVURJTywKKyAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImlzLWF1ZGlvIiwgXygiSXMgYXVkaW8gZGV2aWNlIiksCisgICAgICAg
ICAgICBfKCJXZXRoZXIgdGhlIG1lZGlhIGRldmljZSByZXF1ZXN0ZWQgaGFzIGEgbWljcm9waG9u
ZSBvciBub3QuIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0VXNlclBlcm1pc3Npb25SZXF1
ZXN0OmlzLXZpZGVvOgorICAgICAqCisgICAgICogV2V0aGVyIHRoZSBtZWRpYSBkZXZpY2UgcmVx
dWVzdGVkIGhhcyBhIHZpZGVvIGNhcHR1cmUgY2FwYWJpbGl0eSBvciBub3QuCisgICAgICoKKyAg
ICAgKiBTaW5jZTogMi44CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShvYmplY3RDbGFzcywgUFJPUF9JU19WSURFTywKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImlzLXZpZGVvIiwgXygiSXMgdmlkZW8gZGV2aWNlIiksCisgICAgICAgICAgICBfKCJX
ZXRoZXIgdGhlIG1lZGlhIGRldmljZSByZXF1ZXN0ZWQgaGFzIGEgdmlkZW8gY2FwdHVyZSBjYXBh
YmlsaXR5IG9yIG5vdC4iKSwKKyAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7CisKK30KKworV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QqIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QsIFdlYlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9y
aWdpbikKK3sKKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlcm1lZGlh
UGVybWlzc2lvblJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBu
dWxscHRyKSk7CisKKyAgICAvLyBGSVhNRTogc3RvcmUgU2VjdXJpdHlPcmlnaW4KKyAgICBVTlVT
RURfUEFSQU0oc2VjdXJpdHlPcmlnaW4pOworCisgICAgdXNlcm1lZGlhUGVybWlzc2lvblJlcXVl
c3QtPnByaXYtPnJlcXVlc3QgPSAmcmVxdWVzdDsKKyAgICByZXR1cm4gdXNlcm1lZGlhUGVybWlz
c2lvblJlcXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY0NTVhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdF9o
CisjZGVmaW5lIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05f
UkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVR
VUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBX
RUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX01FRElBX1BF
Uk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCkpCisjZGVm
aW5lIFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykg
KEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJ
T05fUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9i
aiksICBXRUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RDbGFzcyAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3M7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJp
dmF0ZSA+Ki8KKyAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnBy
aXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3Mg
eworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfYXVkaW8oV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIGdib29sZWFu
Cit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX3ZpZGVvKFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNjlkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCitX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RDcmVhdGUoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Jiwg
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYpOworCisjZW5kaWYgLy8gV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDM0OGY0
NGEuLjJkNTNlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMjQsNiArMjQsNyBAQAogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlvbkFjdGlv
bi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBvbGlj
eURlY2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb24ueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApp
bmRleCAzZjliZGJkLi45NzVlYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTU5
NSw2ICs1OTUsMjYgQEAgd2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF90eXBlCiA8L1NFQ1RJ
T04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q8
L0ZJTEU+CitXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAord2Via2l0X3VzZXJfbWVk
aWFfcGVybWlzc2lvbl9pc19hdWRpbword2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc192
aWRlbworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUCitX
RUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9JU19VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
X0NMQVNTCitXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dF
QktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJ
T04gUHJpdmF0ZT4KK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZQord2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisK
KzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9saWN5RGVjaXNpb248L0ZJTEU+CiBXZWJLaXRQb2xp
Y3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGQ3OTE2M2UuLmI3OGRjMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTYyLDYgKzYy
LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAppbmRleCA5NTA4
NTkyLi5lNTNhNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCkBAIC0xOSw3ICsxOSw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oIgogCi0jaW5jbHVkZSAiQVBJTnVtYmVyLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTI4LDExICsyNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0
X3QgdXNlck1lZGlhSUQsIGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCiAgICAgOiBtX21hbmFnZXIo
bWFuYWdlcikKICAgICAsIG1fdXNlck1lZGlhSUQodXNlck1lZGlhSUQpCisgICAgLCBtX2F1ZGlv
KGF1ZGlvKQorICAgICwgbV92aWRlbyh2aWRlbykKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPEFQSTo6T2JqZWN0Pj4gcGFyYW1ldGVyc01hcDsKLSAgICBwYXJhbWV0ZXJzTWFwLmFkZChB
U0NJSUxpdGVyYWwoImF1ZGlvIiksIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKGF1ZGlvKSk7Ci0gICAg
cGFyYW1ldGVyc01hcC5hZGQoQVNDSUlMaXRlcmFsKCJ2aWRlbyIpLCBBUEk6OkJvb2xlYW46OmNy
ZWF0ZSh2aWRlbykpOwotICAgIG1fbWVkaWFQYXJhbWV0ZXJzID0gSW1tdXRhYmxlRGljdGlvbmFy
eTo6Y3JlYXRlKFdURjo6bW92ZShwYXJhbWV0ZXJzTWFwKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6YWxsb3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKaW5kZXgg
ZjA0NzI3Mi4uYzI4M2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCkBAIC0yMCw3ICsyMCw2IEBA
CiAjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaAogCiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzksMTQgKzM4LDE2
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bW11dGFibGVEaWN0aW9uYXJ5PiBtZWRpYVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhUGFyYW1ldGVyczsgfQorICAgIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlv
OyB9CisgICAgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KIAogcHJpdmF0
ZToKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYXVkaW8s
IGJvb2wgdmlkZW8pOwogCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmIG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOwotICAgIFJlZlB0cjxJ
bW11dGFibGVEaWN0aW9uYXJ5PiBtX21lZGlhUGFyYW1ldGVyczsKKyAgICBib29sIG1fYXVkaW87
CisgICAgYm9vbCBtX3ZpZGVvOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmY0NDhmYy4uNzBl
NzkwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDE0LTExLTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBVc2VyTWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IEdUSyB2ZXJzaW9uIG9mIHRoZSBNaW5pQnJvd3NlciBoYXMgZ2FpbmVkIFVzZXJNZWRpYSBwZXJt
aXNzaW9uCisgICAgICAgIHJlcXVlc3Qgc3VwcG9ydC4KKworICAgICAgICAqIE1pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmM6IFNob3cgYSBwb3B1cCB3aGVuIHRoZSBwYWdlCisgICAgICAg
IHJlcXVpcmVzIHVzZXIgcGVybWlzc2lvbiB0byBhY2Nlc3MgYXVkaW8vdmlkZW8gZGV2aWNlcy4K
KyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spOgorICAgICAgICAod2Vi
Vmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKGdlb2xvY2F0aW9uUmVxdWVz
dERpYWxvZ0NhbGxiYWNrKTogRGVsZXRlZC4KKwogMjAxNC0xMS0xNyAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3
NjIzMi4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGE5ZGI1MTkuLmQz
NzZkOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMjU1LDcgKzI1
NSw3IEBAIHN0YXRpYyB2b2lkIGJhY2tGb3J3YWRsaXN0Q2hhbmdlZChXZWJLaXRCYWNrRm9yd2Fy
ZExpc3QgKmJhY2tGb3J3YWRsaXN0LCBXZWJLaXRCCiAgICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5h
dmlnYXRpb25BY3Rpb25zKHdpbmRvdywgYmFja0ZvcndhZGxpc3QpOwogfQogCi1zdGF0aWMgdm9p
ZCBnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayhHdGtEaWFsb2cgKmRpYWxvZywgZ2lu
dCByZXNwb25zZSwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpCitzdGF0aWMgdm9p
ZCBwZXJtaXNzaW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0a0RpYWxvZyAqZGlhbG9nLCBnaW50
IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBzd2l0
Y2ggKHJlc3BvbnNlKSB7CiAgICAgY2FzZSBHVEtfUkVTUE9OU0VfWUVTOgpAQCAtNDA4LDE5ICs0
MDgsMzggQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNpb24KIAogc3RhdGljIGdib29sZWFuIHdlYlZp
ZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCwgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewotICAg
IGlmICghV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkK
KyAgICBjb25zdCBnY2hhciAqZGlhbG9nX3RpdGxlID0gTlVMTDsKKyAgICBjb25zdCBnY2hhciAq
ZGlhbG9nX21lc3NhZ2UgPSBOVUxMOworICAgIGNvbnN0IGdjaGFyICpkaWFsb2dfbWVzc2FnZV9m
b3JtYXQgPSBOVUxMOworCisgICAgaWYgKFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX3RpdGxlID0gIkdlb2xvY2F0aW9u
IHJlcXVlc3QiOworICAgICAgICBkaWFsb2dfbWVzc2FnZV9mb3JtYXQgPSAiJXMiOworICAgICAg
ICBkaWFsb2dfbWVzc2FnZSA9ICJBbGxvdyBnZW9sb2NhdGlvbiByZXF1ZXN0PyI7CisgICAgfSBl
bHNlIGlmIChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkp
IHsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0gIkFsbG93IGFjY2VzcyB0byAlcyBk
ZXZpY2U/IjsKKyAgICAgICAgZ2Jvb2xlYW4gaXNfYXVkaW8gPSB3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2lzX2F1ZGlvKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChy
ZXF1ZXN0KSk7CisgICAgICAgIGdib29sZWFuIGlzX3ZpZGVvID0gd2Via2l0X3VzZXJfbWVkaWFf
cGVybWlzc2lvbl9pc192aWRlbyhXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qo
cmVxdWVzdCkpOworICAgICAgICBkaWFsb2dfdGl0bGUgPSAiVXNlck1lZGlhIHJlcXVlc3QiOwor
ICAgICAgICBpZiAoaXNfYXVkaW8pIHsKKyAgICAgICAgICAgIGlmIChpc192aWRlbykKKyAgICAg
ICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJhdWRpby92aWRlbyI7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAiYXVkaW8iOworICAgICAgICB9
IGVsc2UgaWYgKGlzX3ZpZGVvKQorICAgICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAidmlkZW8i
OworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBHdGtXaWRnZXQgKmRp
YWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFM
IHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9RVUVTVElPTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05P
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvbG9j
YXRpb24gcmVxdWVzdCIpOworICAgICAgICBHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19E
RVNUUk9ZX1dJVEhfUEFSRU5ULAorICAgICAgICBHVEtfTUVTU0FHRV9RVUVTVElPTiwKKyAgICAg
ICAgR1RLX0JVVFRPTlNfWUVTX05PLAorICAgICAgICAiJXMiLCBkaWFsb2dfdGl0bGUpOwogCi0g
ICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zvcm1hdF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9E
SUFMT0coZGlhbG9nKSwgIkFsbG93IGdlb2xvY2F0aW9uIHJlcXVlc3Q/Iik7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soZ2VvbG9jYXRpb25SZXF1
ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29iamVjdF9yZWYocmVxdWVzdCkpOworICAgIGd0a19tZXNz
YWdlX2RpYWxvZ19mb3JtYXRfc2Vjb25kYXJ5X3RleHQoR1RLX01FU1NBR0VfRElBTE9HKGRpYWxv
ZyksIGRpYWxvZ19tZXNzYWdlX2Zvcm1hdCwgZGlhbG9nX21lc3NhZ2UpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKHBlcm1pc3Npb25SZXF1ZXN0
RGlhbG9nQ2FsbGJhY2spLCBnX29iamVjdF9yZWYocmVxdWVzdCkpOwogICAgIGd0a193aWRnZXRf
c2hvdyhkaWFsb2cpOwotCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvcnVuLWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRl
eCBlMGZhMzg2Li5lNmY1ZWE0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVz
dHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC04MSw3ICs4MSw2IEBAIGNs
YXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQy
IiwgIldlYktpdDIuVGVybWluYXRlVHdpY2UiLCAiVGVzdCBjYXVzZXMgY3Jhc2ggb24gdGhlIG5l
eHQgdGVzdCIsIDEyMTk3MCksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJL
aXQyIiwgIldlYktpdDIuR2VvbG9jYXRpb25UcmFuc2l0aW9uVG9IaWdoQWNjdXJhY3kiLCAiVGVz
dCBjYXVzZXMgY3Jhc2ggb24gdGhlIG5leHQgdGVzdCIsIDEyNTA2OCksCiAgICAgICAgIFNraXBw
ZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuR2VvbG9jYXRpb25UcmFuc2l0
aW9uVG9Mb3dBY2N1cmFjeSIsICJUZXN0IGNhdXNlcyBjcmFzaCBvbiB0aGUgbmV4dCB0ZXN0Iiwg
MTI1MDY4KSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2Vi
S2l0Mi5Vc2VyTWVkaWFCYXNpYyIsICJUZXN0IHRpbWVzIG91dCBiZWNhdXNlIGNvbnN0cmFpbnRz
IHZhbGlkYXRpb24gc3VwcG9ydCBpcyBtaXNzaW5nIiwgMTM2NDQ5KSwKICAgICBdCiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgdGVzdHM9W10pOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBkYTc3
NDU0Li4yZDgzMzQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcApAQCAtMTk3LDYgKzE5NywxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwog
ICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHJlcXVlc3QpKTsKIAorICAgICAgICBpZiAodGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzICYm
IFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAg
ICAgICAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJNZWRpYVJlcXVl
c3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCk7CisgICAg
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19h
dWRpbyh1c2VyTWVkaWFSZXF1ZXN0KSwgPT0sIHRlc3QtPm1fZXhwZWN0ZWRBdWRpb01lZGlhKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9u
X2lzX3ZpZGVvKHVzZXJNZWRpYVJlcXVlc3QpLCA9PSwgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVk
aWEpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVx
dWVzdHMpCiAgICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJlcXVl
c3QpOwogICAgICAgICBlbHNlCkBAIC0yMDksNiArMjE1LDkgQEAgcHVibGljOgogICAgICAgICA6
IG1fc2NyaXB0RGlhbG9nVHlwZShXRUJLSVRfU0NSSVBUX0RJQUxPR19BTEVSVCkKICAgICAgICAg
LCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQogICAgICAgICAsIG1fYWxsb3dQZXJtaXNz
aW9uUmVxdWVzdHMoZmFsc2UpCisgICAgICAgICwgbV92ZXJpZnlNZWRpYVR5cGVzKGZhbHNlKQor
ICAgICAgICAsIG1fZXhwZWN0ZWRBdWRpb01lZGlhKGZhbHNlKQorICAgICAgICAsIG1fZXhwZWN0
ZWRWaWRlb01lZGlhKGZhbHNlKQogICAgICAgICAsIG1fbW91c2VUYXJnZXRNb2RpZmllcnMoMCkK
ICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93
aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZp
ZXcpLCBUUlVFKTsKQEAgLTI4OCw2ICsyOTcsOSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0U2NyaXB0
RGlhbG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7CiAgICAgYm9vbCBtX3NjcmlwdERpYWxvZ0Nv
bmZpcm1lZDsKICAgICBib29sIG1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHM7CisgICAgZ2Jvb2xl
YW4gbV92ZXJpZnlNZWRpYVR5cGVzOworICAgIGdib29sZWFuIG1fZXhwZWN0ZWRBdWRpb01lZGlh
OworICAgIGdib29sZWFuIG1fZXhwZWN0ZWRWaWRlb01lZGlhOwogICAgIFdpbmRvd1Byb3BlcnRp
ZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fd2luZG93
UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBtX21v
dXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTYyMCw3ICs2MzIsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
IAogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKICAgICAvLyBTb21lIHZlcnNpb25zIG9mIGdlb2NsdWUgZ2l2ZSBhIHJ1bnRpbWUgd2Fy
bmluZyBiZWNhdXNlIGl0IHRyaWVzCiAgICAgLy8gdG8gcmVnaXN0ZXIgdGhlIGVycm9yIHF1YXJr
IHR3aWNlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODU4
LgpAQCAtNjYxLDYgKzY3Myw3NSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25S
ZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+YWRk
TG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJs
ZWQgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpOwor
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJV
RSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogdXNlck1lZGlhUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0bWw+
IgorICAgICAgICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgor
ICAgICAgICAiICB7IgorICAgICAgICAiICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZX0sIgorICAgICAgICAiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24ocykgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9LCIK
KyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsg
ZG9jdW1lbnQudGl0bGUgPSBlLm5hbWUgfSk7IgorICAgICAgICAiICB9IgorICAgICAgICAiICA8
L3NjcmlwdD4iCisgICAgICAgICIgIDxib2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5PiIK
KyAgICAgICAgIjwvaHRtbD4iOworCisgICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJV
RTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRpYSA9IFRSVUU7CisgICAgdGVzdC0+bV9l
eHBlY3RlZFZpZGVvTWVkaWEgPSBUUlVFOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlz
c2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxz
ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVz
dC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIlBlcm1pc3Npb25EZW5pZWRFcnJvciIpOworCisg
ICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5tX2Fs
bG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVk
aWFSZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk9L
Iik7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGlu
Z3MsIGVuYWJsZWQpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1ZGlvT25seVVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9z
ZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJsZWQgPSB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpOworICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJVRSk7CisKKyAgICB0
ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogdXNlck1lZGlhUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAi
ICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgorICAgICAgICAiICB7
IgorICAgICAgICAiICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVl
LCB2aWRlbzogZmFsc2V9LCIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKHMpIHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCIgfSwiCisgICAgICAgICIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlKSB7IGRvY3VtZW50LnRp
dGxlID0gZS5uYW1lIH0pOyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIiAgPC9zY3JpcHQ+Igor
ICAgICAgICAiICA8Ym9keSBvbmxvYWQ9J3J1blRlc3QoKTsnPjwvYm9keT4iCisgICAgICAgICI8
L2h0bWw+IjsKKworICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9IFRSVUU7CisgICAgdGVz
dC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOworICAgIHRlc3QtPm1fZXhwZWN0ZWRWaWRl
b01lZGlhID0gRkFMU0U7CisKKyAgICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVl
c3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOworICAgIHRl
c3QtPmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxUaXRsZUNoYW5nZWRUbygiUGVybWlzc2lvbkRlbmllZEVycm9yIik7CisKKyAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQpOworfQor
CiBjbGFzcyBGaWxlQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgewogcHVibGljOgog
ICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRmlsZUNob29zZXJUZXN0KTsKQEAgLTc4NSw3ICs4
NjYsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAiamF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9n
cyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3Bl
cnRpZXMiLCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJn
ZXQpOwotICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBlcm1pc3Npb24t
cmVxdWVzdHMiLCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk7CisgICAgVUlDbGllbnRU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRpb24tcGVybWlzc2lvbi1yZXF1ZXN0
cyIsIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xp
ZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVl
c3RzIiwgdGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xp
ZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1ZGlvLXVzZXJtZWRpYS1wZXJtaXNzaW9u
LXJlcXVlc3QiLCB0ZXN0V2ViVmlld0F1ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
cyk7CiAgICAgRmlsZUNob29zZXJUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZmlsZS1jaG9v
c2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAKLS0gCjIu
MS4z
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241934</attachid>
            <date>2014-11-20 02:08:35 -0800</date>
            <delta_ts>2014-11-20 23:04:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>35936</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwYTE0NjIyY2ZkOGQwOTgyYTJmOWNjNzE3ZTVjYzY4MDEwMzJlZGNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIgU2VwIDIwMTQgMTI6MTI6NDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxNiArKwogLi4uL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAgICAgICAgfCAgMTcgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDI4ICsrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwICAgfCAgIDggKwogLi4uL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwICAgfCAxODggKysrKysrKysrKysrKysrKysrKysrCiAuLi4v
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICAgICB8ICA2OSArKysr
KysrKwogLi4uL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCAg
fCAgMjcgKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bCAgICB8ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dCB8ICAyMCArKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaCAgICAgICAgIHwgICAxICsKIC4uLi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAgIHwgICA3ICstCiAuLi4vVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCAgICB8ICAgNyArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgIDM3ICsrKy0KIFRvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKy0KIDE3
IGZpbGVzIGNoYW5nZWQsIDUxMCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU1
YzRhNy4uYTI5ZmE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTExLTE3ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBV
c2VyTWVkaWEgUGVybWlzc2lvbiBSZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NDQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyeSBiYXNpYyBjb25zdHJhaW50cyB2YWxpZGF0aW9u
IHN1cHBvcnQgaW4gdGhlIEdTdHJlYW1lcgorICAgICAgICBNZWRpYVN0cmVhbUNlbnRlci4gVGhp
cyBpcyBuZWVkZWQgc28gdGhlIEdUSyBDIEFQSSB0ZXN0cyB1c2luZyB0aGUKKyAgICAgICAgZ2V0
VXNlck1lZGlhKCkgQVBJIHdvdWxkIG5vdCB0aW1lIG91dC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorCiAyMDE0LTEx
LTIwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
ImRvY3VtZW50IGhhcyBubyBzaWJsaW5nIHJ1bGVzIiBvcHRpbWl6YXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJl
YW1DZW50ZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAppbmRleCBjZWRiMDM5
Li5kODdlM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdT
dHJlYW1lci5jcHAKQEAgLTU5LDE0ICs1OSwyMyBAQCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1l
cjo6fk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCkKIHsKIH0KIAotdm9pZCBNZWRpYVN0cmVh
bUNlbnRlckdTdHJlYW1lcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVl
cnlDbGllbnQ7CisgICAgLy8gRklYTUU6IEFjdHVhbGx5IGRvIGNvbnN0cmFpbnRzIHZhbGlkYXRp
b24uCisgICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZCgpOwogfQogICAgIAotdm9pZCBN
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7
CisgICAgQVNTRVJUKGNsaWVudCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291
cmNlPj4gYXVkaW9Tb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
PiB2aWRlb1NvdXJjZXM7CisgICAgLy8gRklYTUU6IGZpbGwgc291cmNlIHZlY3RvcnMKKyAgICBj
bGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOworCiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNzU2YWJmLi5jNTFlY2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMTEtMTcgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZXJNZWRpYSBQZXJt
aXNzaW9uIFJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzY0NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBHVEstc3BlY2lmaWMgbmV3IGZpbGVzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogIERlY2lkZVBv
bGljeSBoYW5kbGVyCisgICAgICAgIGltcGxlbWVudGF0aW9uIGZvciBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLAorICAgICAgICBXZWJLaXRHVEsgQVBJIGZvciBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwgdmVyeSBzaW1pbGFyIHRvIHRoZQorICAgICAgICBv
bmUgdXNlZCBmb3IgR2VvbG9jYXRpb24uCisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdEFsbG93KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0RGVueSk6CisgICAgICAgICh3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9p
bml0KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZSk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2dldF9tZWRpYV90eXBlcyk6
CisgICAgICAgICh3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogRXhwb3NlIG5ldyBBUEkKKyAgICAgICAg
aW4gZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmg6IEV4cG9zZSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCBBUEkuCisKIDIwMTQt
MTEtMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
R1RLXSBVUlRCRiBhZnRlciByMTc2MzYzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5
NTRhYTBlLi41ODE5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjA2LDYgKzIw
Niw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFZlcnNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5o
LmluCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM2MSw2
ICszNjQsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAgICR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmgKICAgICAk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
aAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlJlc291cmNlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA5ZDZhOGVjLi5kM2ZlNzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0TmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVx
dWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3Bl
cnRpZXNQcml2YXRlLmgiCkBAIC0xNTgsNiArMTU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2Vi
U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdSZWZQ
dHI8V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IHVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRl
KHBlcm1pc3Npb25SZXF1ZXN0LCBzZWN1cml0eU9yaWdpbikpOworICAgICAgICB3ZWJraXRXZWJW
aWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KG1fd2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVR
VUVTVCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRGcmFtZShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdl
YlZpZXdQcmludEZyYW1lKG1fd2ViVmlldywgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0
M2MxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCisjaW5jbHVkZSAi
V2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
LyoqCisgKiBTRUNUSU9OOiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICogQFNo
b3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBmb3IgYWNjZXNzaW5nIHVzZXIn
cyBhdWRpby92aWRlbyBkZXZpY2VzLgorICogQFRpdGxlOiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJL
aXRXZWJWaWV3CisgKgorICogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgcmVwcmVz
ZW50cyBhIHJlcXVlc3QgZm9yCisgKiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktp
dCBzaG91bGQgYmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHVzZXIncworICogYXVkaW8gYW5kIHZp
ZGVvIHNvdXJjZSBkZXZpY2VzIHdoZW4gcmVxdWVzdGVkIHRocm91Z2h0IHRoZSBnZXRVc2VyTWVk
aWEgQVBJLgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworCitlbnVtIHsKKyAgICBQUk9QXzAsCisg
ICAgUFJPUF9JU19GT1JfQVVESU9fREVWSUNFLAorICAgIFBST1BfSVNfRk9SX1ZJREVPX0RFVklD
RQorfTsKKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2Vf
aW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdDsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsKK307
CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QsIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdCwgR19U
WVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfUEVSTUlT
U0lPTl9SRVFVRVNULCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KSkK
Kworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX1VT
RVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9VU0VSX01FRElBX1BF
Uk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lz
aW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHByaXYtPnJlcXVlc3Qt
PmFsbG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQo
V0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAg
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9V
U0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9u
bHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworICAgIHBy
aXYtPnJlcXVlc3QtPmRlbnkoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25f
cmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBpZmFj
ZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3VyIHdo
ZW4gbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5nIHRoZSByZXF1ZXN0LgorICAg
IHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVSTUlTU0lPTl9S
RVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91c2VyX21lZGlhX3Bl
cm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisKKy8q
KgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlOgor
ICogQHJlcXVlc3Q6IGEgI1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CisgKgorICog
UmV0dXJuczogJVRSVUUgaWYgYWNjZXNzIHRvIGFuIGF1ZGlvIGRldmljZSB3YXMgcmVxdWVzdGVk
LgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3VzZXJfbWVkaWFfcGVy
bWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QtPnByaXYt
PnJlcXVlc3QsIEZBTFNFKTsKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+YXVk
aW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92
aWRlb19kZXZpY2U6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBhY2Nlc3MgdG8gYSB2aWRlbyBkZXZpY2Ug
d2FzIHJlcXVlc3RlZC4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK2dib29sZWFuIHdlYmtpdF91
c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChy
ZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LCBGQUxTRSk7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYt
PnJlcXVlc3QtPnZpZGVvKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJ
T05fUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBS
T1BfSVNfRk9SX0FVRElPX0RFVklDRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlKHJlcXVl
c3QpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0ZPUl9WSURFT19ERVZJQ0U6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF91c2VyX21lZGlhX3Bl
cm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bv
c2UgPSB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2U7CisgICAgb2JqZWN0
Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0
UHJvcGVydHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyUGVybWlzc2lvblJlcXVlc3Q6
aXMtZm9yLWF1ZGlvLWRldmljZToKKyAgICAgKgorICAgICAqIFdldGhlciB0aGUgbWVkaWEgZGV2
aWNlIHRvIHdoaWNoIHRoZSBwZXJtaXNzaW9uIHdhcyByZXF1ZXN0ZWQgaGFzIGEgbWljcm9waG9u
ZSBvciBub3QuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi44CisgICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9JU19GT1JfQVVESU9f
REVWSUNFLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiaXMtZm9yLWF1ZGlvLWRldmlj
ZSIsIF8oIklzIGZvciBhdWRpbyBkZXZpY2UiKSwKKyAgICAgICAgICAgIF8oIldldGhlciB0aGUg
bWVkaWEgZGV2aWNlIHRvIHdoaWNoIHRoZSBwZXJtaXNzaW9uIHdhcyByZXF1ZXN0ZWQgaGFzIGEg
bWljcm9waG9uZSBvciBub3QuIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0VXNlclBlcm1p
c3Npb25SZXF1ZXN0OmlzLWZvci12aWRlby1kZXZpY2U6CisgICAgICoKKyAgICAgKiBXZXRoZXIg
dGhlIG1lZGlhIGRldmljZSB0byB3aGljaCB0aGUgcGVybWlzc2lvbiB3YXMgcmVxdWVzdGVkIGhh
cyBhIHZpZGVvIGNhcHR1cmUgY2FwYWJpbGl0eSBvciBub3QuCisgICAgICoKKyAgICAgKiBTaW5j
ZTogMi44CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmpl
Y3RDbGFzcywgUFJPUF9JU19GT1JfVklERU9fREVWSUNFLAorICAgICAgICBnX3BhcmFtX3NwZWNf
Ym9vbGVhbigiaXMtZm9yLXZpZGVvLWRldmljZSIsIF8oIklzIGZvciB2aWRlbyBkZXZpY2UiKSwK
KyAgICAgICAgICAgIF8oIldldGhlciB0aGUgbWVkaWEgZGV2aWNlIHRvIHdoaWNoIHRoZSBwZXJt
aXNzaW9uIHdhcyByZXF1ZXN0ZWQgaGFzIGEgdmlkZW8gY2FwdHVyZSBjYXBhYmlsaXR5IG9yIG5v
dC4iKSwKKyAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKSk7Cit9CisKK1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5JiByZXF1ZXN0LCBXZWJTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCit7CisgICAg
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1
ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVCwgbnVsbHB0cikpOworCisg
ICAgLy8gRklYTUU6IHN0b3JlIFNlY3VyaXR5T3JpZ2luCisgICAgVU5VU0VEX1BBUkFNKHNlY3Vy
aXR5T3JpZ2luKTsKKworICAgIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0LT5wcml2LT5yZXF1
ZXN0ID0gJnJlcXVlc3Q7CisgICAgcmV0dXJuIHVzZXJtZWRpYVBlcm1pc3Npb25SZXF1ZXN0Owor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWQzODJiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisK
KyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QgICAgICAg
ICAgICAod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisj
ZGVmaW5lIFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01F
RElBX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qp
KQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xh
c3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVF
U1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lU
X1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNf
VVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JF
UVVFU1QpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfR0VU
X0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZ
UEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QgICAgICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgICBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSBXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAg
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3Ry
dWN0IF9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9p
ZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAo
dm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX3JlcXVlc3RfZ2V0X3R5cGUgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UgKFdlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSBnYm9vbGVh
bgord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlIChXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDY5ZDlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaWZuZGVmIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVm
aW5lIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRl
ICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaCIKKworV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eSYsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4mKTsKKworI2VuZGlmIC8vIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bAppbmRleCAzNDhmNDRhLi4yZDUzZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTI0LDYg
KzI0LDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5h
dmlnYXRpb25BY3Rpb24ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXRQb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKaW5kZXggYmU0ZmYzYy4uMTRmMGZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0CkBAIC01OTYsNiArNTk2LDI2IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRf
dHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0PC9GSUxFPgorV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKK3dl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZQord2Via2l0X3Vz
ZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlCisKKzxTVUJTRUNUSU9OIFN0
YW5kYXJkPgorV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VCS0lUX1RZ
UEVfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9VU0VSX01FRElBX1BFUk1J
U1NJT05fUkVRVUVTVAorV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUCitX
RUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9JU19VU0VS
X01FRElBX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlT
U0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJL
aXRQb2xpY3lEZWNpc2lvbjwvRklMRT4KIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9s
aWN5X2RlY2lzaW9uX2Rvd25sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmgKaW5kZXggZDc5MTYzZS4uYjc4ZGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNl
ckNvbnRlbnQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCmluZGV4IDk1MDg1OTIuLmU1M2E2MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCiAKLSNpbmNsdWRl
ICJBUElOdW1iZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtMjgsMTEg
KzI3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBh
dWRpbywgYm9vbCB2aWRlbykKICAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV91c2Vy
TWVkaWFJRCh1c2VyTWVkaWFJRCkKKyAgICAsIG1fYXVkaW8oYXVkaW8pCisgICAgLCBtX3ZpZGVv
KHZpZGVvKQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmplY3Q+PiBwYXJh
bWV0ZXJzTWFwOwotICAgIHBhcmFtZXRlcnNNYXAuYWRkKEFTQ0lJTGl0ZXJhbCgiYXVkaW8iKSwg
QVBJOjpCb29sZWFuOjpjcmVhdGUoYXVkaW8pKTsKLSAgICBwYXJhbWV0ZXJzTWFwLmFkZChBU0NJ
SUxpdGVyYWwoInZpZGVvIiksIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHZpZGVvKSk7Ci0gICAgbV9t
ZWRpYVBhcmFtZXRlcnMgPSBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKHBh
cmFtZXRlcnNNYXApKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphbGxvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAppbmRleCBmMDQ3MjcyLi5jMjgzZTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmgKQEAgLTIwLDcgKzIwLDYgQEAKICNkZWZpbmUgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRl
ICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSwxNCArMzgsMTYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IG1l
ZGlhUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQYXJhbWV0ZXJzOyB9CisgICAg
Ym9vbCBhdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW87IH0KKyAgICBib29sIHZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gbV92aWRlbzsgfQogCiBwcml2YXRlOgogICAgIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbyk7CiAKICAgICBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbV9tYW5hZ2VyOwogICAgIHVp
bnQ2NF90IG1fdXNlck1lZGlhSUQ7Ci0gICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IG1f
bWVkaWFQYXJhbWV0ZXJzOworICAgIGJvb2wgbV9hdWRpbzsKKyAgICBib29sIG1fdmlkZW87CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMThiNWEzLi5mNjFkNzcyIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQt
MTEtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIFVzZXJNZWRpYSBQZXJtaXNzaW9uIFJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY0NDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgR1RLIHZlcnNpb24gb2YgdGhlIE1p
bmlCcm93c2VyIGhhcyBnYWluZWQgVXNlck1lZGlhIHBlcm1pc3Npb24KKyAgICAgICAgcmVxdWVz
dCBzdXBwb3J0LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzog
U2hvdyBhIHBvcHVwIHdoZW4gdGhlIHBhZ2UKKyAgICAgICAgcmVxdWlyZXMgdXNlciBwZXJtaXNz
aW9uIHRvIGFjY2VzcyBhdWRpby92aWRlbyBkZXZpY2VzLgorICAgICAgICAocGVybWlzc2lvblJl
cXVlc3REaWFsb2dDYWxsYmFjayk6CisgICAgICAgICh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAoZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spOiBEZWxl
dGVkLgorCiAyMDE0LTExLTE5ICBEYW5hIEJ1cmthcnQgIDxkYnVya2FydEBhcHBsZS5jb20+CiAK
ICAgICAgICAgV29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCBkaWZmZXJlbnQgbWFzdGVycyBtYXkg
aGF2ZSBkaWZmZXJlbnQgbmFtZXMgZm9yIHRoZWlyIGNvZGViYXNlcy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGE5ZGI1MTkuLmVlN2RjYzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGJh
Y2tGb3J3YWRsaXN0Q2hhbmdlZChXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0
LCBXZWJLaXRCCiAgICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKHdpbmRv
dywgYmFja0ZvcndhZGxpc3QpOwogfQogCi1zdGF0aWMgdm9pZCBnZW9sb2NhdGlvblJlcXVlc3RE
aWFsb2dDYWxsYmFjayhHdGtEaWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZSwgV2ViS2l0UGVy
bWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpCitzdGF0aWMgdm9pZCBwZXJtaXNzaW9uUmVxdWVzdERp
YWxvZ0NhbGxiYWNrKEd0a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJt
aXNzaW9uUmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CiAgICAg
Y2FzZSBHVEtfUkVTUE9OU0VfWUVTOgpAQCAtNDA4LDE5ICs0MDgsMzggQEAgc3RhdGljIGdib29s
ZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9s
aWN5RGVjaXNpb24KIAogc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVx
dWVzdCwgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewotICAgIGlmICghV0VCS0lUX0lTX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKKyAgICBjb25zdCBnY2hhciAqZGlh
bG9nX3RpdGxlID0gTlVMTDsKKyAgICBjb25zdCBnY2hhciAqZGlhbG9nX21lc3NhZ2UgPSBOVUxM
OworICAgIGNvbnN0IGdjaGFyICpkaWFsb2dfbWVzc2FnZV9mb3JtYXQgPSBOVUxMOworCisgICAg
aWYgKFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsK
KyAgICAgICAgZGlhbG9nX3RpdGxlID0gIkdlb2xvY2F0aW9uIHJlcXVlc3QiOworICAgICAgICBk
aWFsb2dfbWVzc2FnZV9mb3JtYXQgPSAiJXMiOworICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJB
bGxvdyBnZW9sb2NhdGlvbiByZXF1ZXN0PyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgZGlhbG9nX21l
c3NhZ2VfZm9ybWF0ID0gIkFsbG93IGFjY2VzcyB0byAlcyBkZXZpY2U/IjsKKyAgICAgICAgZ2Jv
b2xlYW4gaXNfZm9yX2F1ZGlvX2RldmljZSA9IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25f
aXNfZm9yX2F1ZGlvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qo
cmVxdWVzdCkpOworICAgICAgICBnYm9vbGVhbiBpc19mb3JfdmlkZW9fZGV2aWNlID0gd2Via2l0
X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlKFdFQktJVF9VU0VSX01F
RElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAgIGRpYWxvZ190aXRsZSA9
ICJVc2VyTWVkaWEgcmVxdWVzdCI7CisgICAgICAgIGlmIChpc19mb3JfYXVkaW9fZGV2aWNlKSB7
CisgICAgICAgICAgICBpZiAoaXNfZm9yX3ZpZGVvX2RldmljZSkKKyAgICAgICAgICAgICAgICBk
aWFsb2dfbWVzc2FnZSA9ICJhdWRpby92aWRlbyI7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAiYXVkaW8iOworICAgICAgICB9IGVsc2UgaWYgKGlz
X2Zvcl92aWRlb19kZXZpY2UpCisgICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJ2aWRlbyI7
CisgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIEd0a1dpZGdldCAqZGlh
bG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lORE9XKHdpbmRvdyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwg
fCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9sb2Nh
dGlvbiByZXF1ZXN0Iik7CisgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RF
U1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAorICAgICAg
ICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAgICIlcyIsIGRpYWxvZ190aXRsZSk7CiAKLSAg
ICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJ
QUxPRyhkaWFsb2cpLCAiQWxsb3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsKLSAgICBnX3NpZ25h
bF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9sb2NhdGlvblJlcXVl
c3REaWFsb2dDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CisgICAgZ3RrX21lc3Nh
Z2VfZGlhbG9nX2Zvcm1hdF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9ESUFMT0coZGlhbG9n
KSwgZGlhbG9nX21lc3NhZ2VfZm9ybWF0LCBkaWFsb2dfbWVzc2FnZSk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3RE
aWFsb2dDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CiAgICAgZ3RrX3dpZGdldF9z
aG93KGRpYWxvZyk7Ci0KICAgICByZXR1cm4gVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9ydW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4
IGUwZmEzODYuLmU2ZjVlYTQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0
cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTgxLDcgKzgxLDYgQEAgY2xh
c3MgVGVzdFJ1bm5lcjoKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIi
LCAiV2ViS2l0Mi5UZXJtaW5hdGVUd2ljZSIsICJUZXN0IGNhdXNlcyBjcmFzaCBvbiB0aGUgbmV4
dCB0ZXN0IiwgMTIxOTcwKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktp
dDIiLCAiV2ViS2l0Mi5HZW9sb2NhdGlvblRyYW5zaXRpb25Ub0hpZ2hBY2N1cmFjeSIsICJUZXN0
IGNhdXNlcyBjcmFzaCBvbiB0aGUgbmV4dCB0ZXN0IiwgMTI1MDY4KSwKICAgICAgICAgU2tpcHBl
ZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5HZW9sb2NhdGlvblRyYW5zaXRp
b25Ub0xvd0FjY3VyYWN5IiwgIlRlc3QgY2F1c2VzIGNyYXNoIG9uIHRoZSBuZXh0IHRlc3QiLCAx
MjUwNjgpLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIsICJXZWJL
aXQyLlVzZXJNZWRpYUJhc2ljIiwgIlRlc3QgdGltZXMgb3V0IGJlY2F1c2UgY29uc3RyYWludHMg
dmFsaWRhdGlvbiBzdXBwb3J0IGlzIG1pc3NpbmciLCAxMzY0NDkpLAogICAgIF0KIAogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCB0ZXN0cz1bXSk6CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQuY3BwCmluZGV4IGRhNzc0
NTQuLmYyNzc1ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0VUlDbGllbnQuY3BwCkBAIC0xOTcsNiArMTk3LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CiAg
ICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QocmVxdWVzdCkpOwogCisgICAgICAgIGlmICh0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMgJiYg
V0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAg
ICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlck1lZGlhUmVxdWVz
dCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlv
X2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRpYSk7
CisgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zv
cl92aWRlb19kZXZpY2UodXNlck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZFZpZGVv
TWVkaWEpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9u
UmVxdWVzdHMpCiAgICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJl
cXVlc3QpOwogICAgICAgICBlbHNlCkBAIC0yMDksNiArMjE1LDkgQEAgcHVibGljOgogICAgICAg
ICA6IG1fc2NyaXB0RGlhbG9nVHlwZShXRUJLSVRfU0NSSVBUX0RJQUxPR19BTEVSVCkKICAgICAg
ICAgLCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQogICAgICAgICAsIG1fYWxsb3dQZXJt
aXNzaW9uUmVxdWVzdHMoZmFsc2UpCisgICAgICAgICwgbV92ZXJpZnlNZWRpYVR5cGVzKGZhbHNl
KQorICAgICAgICAsIG1fZXhwZWN0ZWRBdWRpb01lZGlhKGZhbHNlKQorICAgICAgICAsIG1fZXhw
ZWN0ZWRWaWRlb01lZGlhKGZhbHNlKQogICAgICAgICAsIG1fbW91c2VUYXJnZXRNb2RpZmllcnMo
MCkKICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Bl
bl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhtX3dl
YlZpZXcpLCBUUlVFKTsKQEAgLTI4OCw2ICsyOTcsOSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0U2Ny
aXB0RGlhbG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7CiAgICAgYm9vbCBtX3NjcmlwdERpYWxv
Z0NvbmZpcm1lZDsKICAgICBib29sIG1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHM7CisgICAgZ2Jv
b2xlYW4gbV92ZXJpZnlNZWRpYVR5cGVzOworICAgIGdib29sZWFuIG1fZXhwZWN0ZWRBdWRpb01l
ZGlhOworICAgIGdib29sZWFuIG1fZXhwZWN0ZWRWaWRlb01lZGlhOwogICAgIFdpbmRvd1Byb3Bl
cnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fd2lu
ZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBt
X21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTYyMCw3ICs2MzIsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIAogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyhVSUNs
aWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKICAgICAvLyBTb21lIHZlcnNpb25zIG9mIGdlb2NsdWUgZ2l2ZSBhIHJ1bnRpbWUg
d2FybmluZyBiZWNhdXNlIGl0IHRyaWVzCiAgICAgLy8gdG8gcmVnaXN0ZXIgdGhlIGVycm9yIHF1
YXJrIHR3aWNlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5
ODU4LgpAQCAtNjYxLDYgKzY3Myw3NSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Np
b25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+
YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwogfQogCitzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVu
YWJsZWQgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3Mp
OworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywg
VFJVRSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogdXNlck1lZGlhUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0
bWw+IgorICAgICAgICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgp
IgorICAgICAgICAiICB7IgorICAgICAgICAiICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZX0sIgorICAgICAgICAiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocykgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9
LCIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUp
IHsgZG9jdW1lbnQudGl0bGUgPSBlLm5hbWUgfSk7IgorICAgICAgICAiICB9IgorICAgICAgICAi
ICA8L3NjcmlwdD4iCisgICAgICAgICIgIDxib2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5
PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0g
VFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRpYSA9IFRSVUU7CisgICAgdGVzdC0+
bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBUUlVFOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVy
bWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBm
YWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7
CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIlBlcm1pc3Npb25EZW5pZWRFcnJv
ciIpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRt
bCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0
bGVDaGFuZ2VkVG8oIk9LIik7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRp
YV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0F1ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVu
YWJsZWQgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3Mp
OworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywg
VFJVRSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogdXNlck1lZGlhUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0
bWw+IgorICAgICAgICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgp
IgorICAgICAgICAiICB7IgorICAgICAgICAiICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOiB0cnVlLCB2aWRlbzogZmFsc2V9LCIKKyAgICAgICAgIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHMpIHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCIg
fSwiCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihl
KSB7IGRvY3VtZW50LnRpdGxlID0gZS5uYW1lIH0pOyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAg
IiAgPC9zY3JpcHQ+IgorICAgICAgICAiICA8Ym9keSBvbmxvYWQ9J3J1blRlc3QoKTsnPjwvYm9k
eT4iCisgICAgICAgICI8L2h0bWw+IjsKKworICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9
IFRSVUU7CisgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOworICAgIHRlc3Qt
Pm1fZXhwZWN0ZWRWaWRlb01lZGlhID0gRkFMU0U7CisKKyAgICAvLyBUZXN0IGRlbnlpbmcgYSBw
ZXJtaXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9
IGZhbHNlOworICAgIHRlc3QtPmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RIVE1MLCBudWxscHRy
KTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiUGVybWlzc2lvbkRlbmllZEVy
cm9yIik7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0
dGluZ3MsIGVuYWJsZWQpOworfQorCiBjbGFzcyBGaWxlQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNs
aWVudFRlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRmlsZUNob29z
ZXJUZXN0KTsKQEAgLTc4NSw3ICs4NjYsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGll
bnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiamF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdl
YlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMp
OwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIs
IHRlc3RXZWJWaWV3TW91c2VUYXJnZXQpOwotICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgInBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1
ZXN0cyk7CisgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRp
b24tcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVzZXJt
ZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3RzIiwgdGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1ZGlv
LXVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0F1ZGlvT25seVVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgRmlsZUNob29zZXJUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAiZmlsZS1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2Vy
UmVxdWVzdCk7CiB9CiAKLS0gCjIuMS4zCgo=
</data>
<flag name="review"
          id="266821"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="266905"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>