<?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>181990</bug_id>
          
          <creation_ts>2018-01-23 10:00:13 -0800</creation_ts>
          <short_desc>[EME][GStreamer] Add support for the encrypted Caps in GStreamerUtilities</short_desc>
          <delta_ts>2018-02-09 04:11:17 -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>WPE WebKit</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181855</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yacine Bandou">bandou.yacine</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cturner</cc>
    
    <cc>olivier.blin</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1392102</commentid>
    <comment_count>0</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-01-23 10:00:13 -0800</bug_when>
    <thetext>Add the support of encrypted Caps in GStreamer utilities and refactoring the manner that the Caps if managed,
like how extract the resolution in the video Caps or how check if the Caps is encrypted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392521</commentid>
    <comment_count>1</comment_count>
      <attachid>332151</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-01-24 05:31:05 -0800</bug_when>
    <thetext>Created attachment 332151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392529</commentid>
    <comment_count>2</comment_count>
      <attachid>332152</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-01-24 06:28:24 -0800</bug_when>
    <thetext>Created attachment 332152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393529</commentid>
    <comment_count>3</comment_count>
      <attachid>332152</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-01-26 07:23:34 -0800</bug_when>
    <thetext>Comment on attachment 332152
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:63
&gt; +    if (!isEncryptedCaps(caps)) {

Let&apos;s exchange if and else

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:81
&gt; +        gint w = 0, h = 0;
&gt; +        gint parN = 1, parD = 1;

These need to become int and get meaningful names like width, height, pixelAspectRatioNumerator, pixelAspectRatioDenominator.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:137
&gt; +

Unneeded extra line

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:139
&gt; +        GST_ERROR(&quot;caps is null !!!&quot;);

is -&gt; are and remove the !!!

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:141
&gt; +    if (!caps) {
&gt; +        GST_ERROR(&quot;caps is null !!!&quot;);
&gt; +        return nullptr;
&gt; +    }

If I am not mistaken, this is not common at all and I don&apos;t think we need to check it and error. Let&apos;s ASSERT instead if you didn&apos;t find any example that makes this crash consistently.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:145
&gt; +        GST_ERROR(&quot;caps is empty !!!&quot;);

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:147
&gt; +    if (!structure) {
&gt; +        GST_ERROR(&quot;caps is empty !!!&quot;);
&gt; +        return nullptr;
&gt; +    }

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:157
&gt; +    const gchar* mediaType = getMediaTypeFromCaps(caps);

gchar -&gt; char

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:161
&gt; +    if (!mediaType) {
&gt; +        GST_ERROR(&quot;Failed to get MediaType !!!&quot;);
&gt; +        return false;
&gt; +    }

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:162
&gt; +    return g_str_has_prefix(mediaType, &quot;video&quot;);

we can keep the check for video/

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:167
&gt; +    const gchar* mediaType = getMediaTypeFromCaps(caps);

gchar -&gt; char

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:171
&gt; +    if (!mediaType) {
&gt; +        GST_ERROR(&quot;Failed to get MediaType !!!&quot;);
&gt; +        return false;
&gt; +    }

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:172
&gt; +    return g_str_has_prefix(mediaType, &quot;audio&quot;);

we can keep the check of audio/

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:177
&gt; +    const gchar* mediaType = getMediaTypeFromCaps(caps);

char

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:181
&gt; +    if (!mediaType) {
&gt; +        GST_ERROR(&quot;Failed to get MediaType !!!&quot;);
&gt; +        return false;
&gt; +    }

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:182
&gt; +    return g_str_has_prefix(mediaType, &quot;text&quot;);

we can keep the check for text/

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:191
&gt; +    if (!caps) {
&gt; +        GST_ERROR(&quot;caps is null !!!&quot;);
&gt; +        return false;
&gt; +    }

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:196
&gt; +    if (!structure) {
&gt; +        GST_ERROR(&quot;caps is empty !!!&quot;);
&gt; +        return false;
&gt; +    }

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h:65
&gt; +bool isVideoCaps(GstCaps*);
&gt; +bool isAudioCaps(GstCaps*);
&gt; +bool isTextCaps(GstCaps*);
&gt; +bool isEncryptedCaps(GstCaps*);

is -&gt; are

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:598
&gt; +    const gchar* originalMediaType = getMediaTypeFromCaps(m_demuxerSrcPadCaps.get());

char

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:606
&gt; +        int parN, parD, stride;

names

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:36
&gt; +    GstCaps* originCap = m_caps.get();

Make a GRefPtr and we can forget about unreffing later.

Name should be originalCaps if I understand the purpose correctly.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:39
&gt; +

extra line

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:49
&gt; +            const gchar* fieldName = gst_structure_nth_field_name(structure, j);

char

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:55
&gt; +    if (isEncryptedCaps(originCap)) {
&gt; +
&gt; +        originCap =  gst_caps_copy(m_caps.get());
&gt; +        GstStructure* structure = gst_caps_get_structure(originCap, 0);
&gt; +
&gt; +        if (!gst_structure_has_field(structure, &quot;original-media-type&quot;))
&gt; +            return String();
&gt; +
&gt; +        gst_structure_set_name(structure, gst_structure_get_string(structure, &quot;original-media-type&quot;));
&gt; +        // Remove the DRM related fields from the caps.
&gt; +        for (int j = 0; j &lt; gst_structure_n_fields(structure); ++j) {
&gt; +            const gchar* fieldName = gst_structure_nth_field_name(structure, j);
&gt; +
&gt; +            if (g_str_has_prefix(fieldName, &quot;protection-system&quot;)
&gt; +                || g_str_has_prefix(fieldName, &quot;original-media-type&quot;))
&gt; +                gst_structure_remove_field(structure, fieldName);
&gt; +        }
&gt; +    }

This operation is heavy. I think we can safely cache the codecName as a class attribute.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:746
&gt; +        int parN, parD, stride;

names

&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:180
&gt; +    const gchar* mediaType = getMediaTypeFromCaps(caps);

char

&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:185
&gt; +    if (isEncryptedCaps(caps)) {
&gt; +        GST_DEBUG_OBJECT(webKitMediaSrc, &quot;PlaybackPipeline, with encrypted content the appropriate parser will be auto plugged by the decodebin after the decryptor in pipeline!&quot;);

This seems to belong to another patch, right?

&gt; Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:466
&gt; +            width = size.width();
&gt; +            height = size.height() * ((float) parD / (float) parN);
&gt; +            stream-&gt;presentationSize = WebCore::FloatSize(width, height);

I&apos;ve seen this operation quite a lot. I think we can create a helper function in utils to return the an IntSize. Of course in this case it will be converted to FloatSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393579</commentid>
    <comment_count>4</comment_count>
      <attachid>332388</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-01-26 11:09:28 -0800</bug_when>
    <thetext>Created attachment 332388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395846</commentid>
    <comment_count>5</comment_count>
      <attachid>332388</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-02-02 07:23:22 -0800</bug_when>
    <thetext>Comment on attachment 332388
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:63
&gt; +        if (!areVideoCaps(caps))

Can this check not be hoisted above the areEncryptedCaps? It&apos;s a valid pre-condition check for the whole function it seems. I know gst_video_info_from_caps does it&apos;s own validation in addition to this, but having it guarded by areEncryptedCaps doesn&apos;t immediately make sense to me.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:76
&gt; +

blanks lines before and after else, there&apos;s more in the patch, please remove.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:98
&gt; +    gint pixelAspectRatioNumerator, pixelAspectRatioDenominator;

I would assign these to 1 like in the original code, if the gst_structure_get_fraction call fails for some weird reason, we could get undefined behaviour in the height calculation.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:101
&gt; +        if (!areVideoCaps(caps))

Ditto for pre-condition check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395854</commentid>
    <comment_count>6</comment_count>
      <attachid>332968</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-02-02 08:04:46 -0800</bug_when>
    <thetext>Created attachment 332968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395893</commentid>
    <comment_count>7</comment_count>
      <attachid>332968</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-02-02 09:38:23 -0800</bug_when>
    <thetext>Comment on attachment 332968
Patch

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

Forgot to set the r- flag in previous review.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:184
&gt; +bool areVideoCaps(GstCaps* caps)

The are*Caps functions are all identical apart from the media type prefix string, could factor these all into one method such has capsIsType(GstCaps, AsciiLiteral)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395915</commentid>
    <comment_count>8</comment_count>
      <attachid>332984</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-02-02 11:14:38 -0800</bug_when>
    <thetext>Created attachment 332984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396120</commentid>
    <comment_count>9</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-02-03 02:45:23 -0800</bug_when>
    <thetext>Thanks Yacine, this LGTM, but I&apos;m not an official reviewer. Will let calvaris have the final say :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396143</commentid>
    <comment_count>10</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-02-03 13:46:25 -0800</bug_when>
    <thetext>(In reply to Charlie Turner from comment #9)
&gt; Thanks Yacine, this LGTM, but I&apos;m not an official reviewer. Will let
&gt; calvaris have the final say :)

No problem Charlie, thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397499</commentid>
    <comment_count>11</comment_count>
      <attachid>332984</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-02-08 04:24:32 -0800</bug_when>
    <thetext>Comment on attachment 332984
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Add the support of encrypted Caps in GStreamerUtilities.
&gt; +        Refactor the manner that the Caps are handled, such as how to extract the resolution
&gt; +        from the video Caps or how to check if the Caps are encrypted.

caps can be non-capital

&gt; Source/WebCore/ChangeLog:24
&gt; +

Extra line not needed.

&gt; Source/WebCore/ChangeLog:28
&gt; +        (WebCore::areEncryptedCaps): Add a new functions in order to handle the Caps properly.

caps

&gt; Source/WebCore/ChangeLog:29
&gt; +

Extra line not needed.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:63
&gt; +        GST_ERROR(&quot;Failed to get the video size and foramt, they are not a video caps&quot;);

foramt -&gt; format

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:68
&gt; +

Unnecessary extra line

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:70
&gt; +        gint width = 0, height = 0;

gint -&gt; int and variables need to be moved to just before where they are used.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:76
&gt; +        gst_structure_get_fraction(structure, &quot;pixel-aspect-ratio&quot;, &amp;pixelAspectRatioNumerator, &amp;pixelAspectRatioDenominator);

Assign these two variables to 1 before calling this.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:80
&gt; +

Unnecessary extra line

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:97
&gt; +bool getVideoResolutionFromCaps(GstCaps* caps, float&amp; width, float&amp; height)

From what I see about this function it is only used to populate FloatSize attributes. Please turn it into std::optional&lt;FloatSize&gt; videoResolutionFromCaps(const GstCaps* caps)

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:100
&gt; +    gint lWidth = 0, lHeight = 0;
&gt; +    gint pixelAspectRatioNumerator = 1, pixelAspectRatioDenominator = 1;

Move this variables to where they are used.

gint -&gt; int

l* -&gt; gstreamer*

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:103
&gt; +        GST_ERROR(&quot;Failed to get the video resolution, they are not a video caps&quot;);

ERROR -&gt; WARNING

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:108
&gt; +

Unnecessary extra line

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:115
&gt;  

Unnecessary extra line

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:126
&gt; +    }
&gt; +    width = lWidth;

You love not needed extra lines and here, where you could use one, you don&apos;t :)

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:127
&gt; +    height = lHeight * ((float) pixelAspectRatioNumerator / (float) pixelAspectRatioDenominator);

use c++ casts.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:169
&gt; +const char* getMediaTypeFromCaps(GstCaps* caps)

getMediaTypeFromCaps -&gt; capsMediaType and make it tame const caps

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:176
&gt; +    if (!structure) {
&gt; +        GST_ERROR(&quot;caps are empty&quot;);
&gt; +        return nullptr;
&gt; +    }

Did you ever find any case where this error was hit? I doubt it, so I think it is better to just ASSERT on this. If this is something that really can happen sometimes, we should not just ERROR, it looks the kind of situation that should be managed by the caller instead, so we could WARNING here.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:184
&gt; +bool capsIsType(GstCaps* caps, const char* type)

capsIsType -&gt; doCapsHaveType and make it take const caps

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:188
&gt; +        GST_ERROR(&quot;Failed to get MediaType&quot;);

Contrary to the other two functions here, I don&apos;t think we should ASSERT here, but ERROR is too string, let&apos;s do WARNING.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:194
&gt; +bool areEncryptedCaps(GstCaps* caps)

const caps

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:202
&gt; +    if (!structure) {
&gt; +        GST_ERROR(&quot;caps are empty&quot;);
&gt; +        return false;
&gt; +    }

Same as in capsMediaType.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h:55
&gt; +#define GST_VIDEO_CAPS_TYPE  &quot;video/&quot;
&gt; +#define GST_AUDIO_CAPS_TYPE  &quot;audio/&quot;
&gt; +#define GST_TEXT_CAPS_TYPE   &quot;text/&quot;

GST_*_CAPS_TYPE_PREFIX

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:57
&gt; +    GRefPtr&lt;GstCaps&gt; originalCap = m_caps;

originalCaps

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:64
&gt; +            return String();

you can return AtomicString() here.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:86
&gt; +            codecName.remove(braceStart, braceEnd-braceStart);

braceEnd - braceStart</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397526</commentid>
    <comment_count>12</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-02-08 07:57:58 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #11)
&gt; Comment on attachment 332984 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332984&amp;action=review
&gt; 

I agree with your review except these: 

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:70
&gt; &gt; +        gint width = 0, height = 0;
&gt; 
&gt; gint -&gt; int and variables need to be moved to just before where they are
&gt; used.
&gt;

why it needs to be moved ? it&apos;s a code style or it&apos;s an optimization?

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:76
&gt; &gt; +        gst_structure_get_fraction(structure, &quot;pixel-aspect-ratio&quot;, &amp;pixelAspectRatioNumerator, &amp;pixelAspectRatioDenominator);
&gt; 
&gt; Assign these two variables to 1 before calling this.

I prefer do it when &quot;gst_structure_get_fraction&quot; return false. 
 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:169
&gt; &gt; +const char* getMediaTypeFromCaps(GstCaps* caps)
&gt; 
&gt; getMediaTypeFromCaps -&gt; capsMediaType and make it tame const caps
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:176
&gt; &gt; +    if (!structure) {
&gt; &gt; +        GST_ERROR(&quot;caps are empty&quot;);
&gt; &gt; +        return nullptr;
&gt; &gt; +    }
&gt; 
&gt; Did you ever find any case where this error was hit? I doubt it, so I think
&gt; it is better to just ASSERT on this. If this is something that really can
&gt; happen sometimes, we should not just ERROR, it looks the kind of situation
&gt; that should be managed by the caller instead, so we could WARNING here.
&gt; 

Yes, the caps can be empty.
I agree, I should use WARNING instead of ERROR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397561</commentid>
    <comment_count>13</comment_count>
      <attachid>333381</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-02-08 09:51:32 -0800</bug_when>
    <thetext>Created attachment 333381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397853</commentid>
    <comment_count>14</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-02-09 00:42:33 -0800</bug_when>
    <thetext>(In reply to Yacine Bandou from comment #12)
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:70
&gt; &gt; &gt; +        gint width = 0, height = 0;
&gt; &gt; 
&gt; &gt; gint -&gt; int and variables need to be moved to just before where they are
&gt; &gt; used.
&gt; &gt;
&gt; 
&gt; why it needs to be moved ? it&apos;s a code style or it&apos;s an optimization?

It&apos;s coding style. We try to keep it like this as thoroughly as possible though it is true that in some cases, there&apos;s still code like this and even reviewers don&apos;t realized of this issues when reviewing. Anyway, all new code should respect the coding style and yes, this is part of it.

&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:76
&gt; &gt; &gt; +        gst_structure_get_fraction(structure, &quot;pixel-aspect-ratio&quot;, &amp;pixelAspectRatioNumerator, &amp;pixelAspectRatioDenominator);
&gt; &gt; 
&gt; &gt; Assign these two variables to 1 before calling this.
&gt; 
&gt; I prefer do it when &quot;gst_structure_get_fraction&quot; return false. 

Ok.

&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:169
&gt; &gt; &gt; +const char* getMediaTypeFromCaps(GstCaps* caps)
&gt; &gt; 
&gt; &gt; getMediaTypeFromCaps -&gt; capsMediaType and make it tame const caps
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:176
&gt; &gt; &gt; +    if (!structure) {
&gt; &gt; &gt; +        GST_ERROR(&quot;caps are empty&quot;);
&gt; &gt; &gt; +        return nullptr;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Did you ever find any case where this error was hit? I doubt it, so I think
&gt; &gt; it is better to just ASSERT on this. If this is something that really can
&gt; &gt; happen sometimes, we should not just ERROR, it looks the kind of situation
&gt; &gt; that should be managed by the caller instead, so we could WARNING here.
&gt; &gt; 
&gt; 
&gt; Yes, the caps can be empty.
&gt; I agree, I should use WARNING instead of ERROR.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397888</commentid>
    <comment_count>15</comment_count>
      <attachid>333381</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-02-09 01:59:17 -0800</bug_when>
    <thetext>Comment on attachment 333381
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:63
&gt; +        GST_ERROR(&quot;Failed to get the video size and format, they are not a video caps&quot;);

ERROR -&gt; WARNING. caps is always plural so &quot;these are not video caps&quot;.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:75
&gt; +            pixelAspectRatioNumerator = pixelAspectRatioDenominator = 1;

This goes against coding style, one instruction at a line.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:99
&gt; +        GST_WARNING(&quot;Failed to get the video resolution, they are not a video caps&quot;);

these are not video caps

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:100
&gt; +        return std::optional&lt;FloatSize&gt;();

You need to return std::nullopt here, otherwise asking for has_value will answer always yes.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp:123
&gt; +    return std::optional&lt;FloatSize&gt;(FloatSize(width, height * (static_cast&lt;float&gt;(pixelAspectRatioNumerator) / static_cast&lt;float&gt;(pixelAspectRatioDenominator))));

You can use std::make_optional</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397894</commentid>
    <comment_count>16</comment_count>
      <attachid>333474</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-02-09 02:54:29 -0800</bug_when>
    <thetext>Created attachment 333474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397898</commentid>
    <comment_count>17</comment_count>
      <attachid>333474</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 04:11:15 -0800</bug_when>
    <thetext>Comment on attachment 333474
Patch

Clearing flags on attachment: 333474

Committed r228316: &lt;https://trac.webkit.org/changeset/228316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397899</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 04:11:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332151</attachid>
            <date>2018-01-24 05:31:05 -0800</date>
            <delta_ts>2018-01-24 06:28:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180124143104.patch</filename>
            <type>text/plain</type>
            <size>26110</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uNjE1MTdkNDAwN2I2ZWJiZTEzNjU3MjA3YWM2Njk0
MjM3NTc2MzA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIENhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gQ2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIENhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgQ2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIENhcHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OmdldE1lZGlhVHlwZUZyb21DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
VmlkZW9DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXVkaW9DYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzVGV4dENhcHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbmNyeXB0ZWRDYXBzKTog
QWRkIGEgbmV3IGZ1bmN0aW9ucyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIENhcHMgcHJvcGVybHku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0
aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11
eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVmlkZW8gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNBdWRpbyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFOjp0cmFja0RldGVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQ
aXBlbGluZTo6YXR0YWNoVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGlu
ZTo6cmVhdHRhY2hUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9QbGF5YmFja1BpcGVsaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJL
aXRNZWRpYVNyY1VwZGF0ZVByZXNlbnRhdGlvblNpemUpOiBSZWZhY3RvciBzb21lIHBhcnRzIGJ5
IHVzaW5nIHRoZSBuZXcgYWRkZWQgZnVuY3Rpb25zLgorCiAyMDE4LTAxLTE5ICBZYWNpbmUgQmFu
ZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW0VNRV1b
R1N0cmVhbWVyXSBBZGQgYSBuZXcgbWVzc2FnZSAiZGVjcnlwdC1rZXktbmVlZGVkIiBzZW5kIGZy
b20gdGhlIGRlY3J5cHRvciB0byB0aGUgYXBwbGljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwCmluZGV4IDQ3NjJhZTg4NTViOGIxNzhhNGZhYmE2YmY4MjIzYWZlNTdmNjU4
OGUuLjQwMDkyYjYzYzI5YzE4MzEzNTI2NDkxOTFjZDVjNGUwOTg3NTUwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCkBAIC01OSwxOCArNTksMzcgQEAgR3N0UGFkKiB3ZWJr
aXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3Rh
dGljUGFkVGVtcGwKICNpZiBFTkFCTEUoVklERU8pCiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1h
dEZyb21DYXBzKEdzdENhcHMqIGNhcHMsIFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZpZGVv
Rm9ybWF0JiBmb3JtYXQsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhl
bEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKQogewotICAgIEdzdFZpZGVvSW5m
byBpbmZvOwogCi0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7Ci0gICAgaWYgKCFnc3Rf
dmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8pOwotICAgIHNpemUu
c2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKLSAgICBzaXplLnNldEhlaWdo
dChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsKLSAgICBwaXhlbEFzcGVjdFJhdGlvTnVt
ZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOwotICAgIHBpeGVsQXNwZWN0UmF0
aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsKLSAgICBzdHJpZGUg
PSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworICAgIGlmICghaXNFbmNy
eXB0ZWRDYXBzKGNhcHMpKSB7CisgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOworICAgICAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKKyAgICAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19m
cm9tX2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmaW5mbyk7CisgICAgICAgIHNpemUu
c2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKKyAgICAgICAgc2l6ZS5zZXRI
ZWlnaHQoR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZpbmZvKSk7CisgICAgICAgIHBpeGVsQXNwZWN0
UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7CisgICAgICAgIHBp
eGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsK
KyAgICAgICAgc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFKCZpbmZvLCAwKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlzVmlkZW9DYXBzKGNhcHMpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICAgICAgZ2ludCB3ID0gMCwgaCA9IDA7
CisgICAgICAgIGdpbnQgcGFyTiA9IDEsIHBhckQgPSAxOworCisgICAgICAgIGZvcm1hdCA9IEdT
VF9WSURFT19GT1JNQVRfRU5DT0RFRDsKKyAgICAgICAgc3RyaWRlID0gMDsKKyAgICAgICAgZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJncpOworICAgICAgICBnc3Rf
c3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmgpOworICAgICAgICBnc3Rf
c3RydWN0dXJlX2dldF9mcmFjdGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAm
cGFyTiwgJnBhckQpOworICAgICAgICBzaXplLnNldFdpZHRoKHcpOworICAgICAgICBzaXplLnNl
dEhlaWdodChoKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IHBhck47Cisg
ICAgICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IHBhckQ7CisgICAgfQogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xMTMsNiArMTMyLDc0IEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0
QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBi
dWZmZXI7CiB9CiAKK2NvbnN0IGNoYXIqIGdldE1lZGlhVHlwZUZyb21DYXBzKEdzdENhcHMqIGNh
cHMpCit7CisKKyAgICBpZiAoIWNhcHMpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJjYXBzIGlzIG51
bGwgISEhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBHc3RTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisKKyAgICBp
ZiAoIXN0cnVjdHVyZSkgeworICAgICAgICBHU1RfRVJST1IoImNhcHMgaXMgZW1wdHkgISEhIik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcGxpY2F0
aW9uL3gtY2VuYyIpKQorICAgICAgICByZXR1cm4gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0
cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKTsKKyNlbmRpZgorICAgIHJldHVybiBnc3Rf
c3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Cit9CisKK2Jvb2wgaXNWaWRlb0NhcHMoR3N0
Q2FwcyogY2FwcykKK3sKKyAgICBjb25zdCBnY2hhciogbWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBl
RnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKCFtZWRpYVR5cGUpIHsKKyAgICAgICAgR1NUX0VSUk9S
KCJGYWlsZWQgdG8gZ2V0IE1lZGlhVHlwZSAhISEiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlbyIpOwor
fQorCitib29sIGlzQXVkaW9DYXBzKEdzdENhcHMqIGNhcHMpCit7CisgICAgY29uc3QgZ2NoYXIq
IG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKGNhcHMpOworICAgIGlmICghbWVkaWFU
eXBlKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGdldCBNZWRpYVR5cGUgISEhIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVm
aXgobWVkaWFUeXBlLCAiYXVkaW8iKTsKK30KKworYm9vbCBpc1RleHRDYXBzKEdzdENhcHMqIGNh
cHMpCit7CisgICAgY29uc3QgZ2NoYXIqIG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBz
KGNhcHMpOworICAgIGlmICghbWVkaWFUeXBlKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVk
IHRvIGdldCBNZWRpYVR5cGUgISEhIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidGV4dCIpOworfQorCitib29s
IGlzRW5jcnlwdGVkQ2FwcyhHc3RDYXBzKiBjYXBzKQoreworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKCFjYXBzKSB7CisgICAgICAgIEdTVF9FUlJPUigiY2FwcyBpcyBudWxs
ICEhISIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEdzdFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICBpZiAoIXN0
cnVjdHVyZSkgeworICAgICAgICBHU1RfRVJST1IoImNhcHMgaXMgZW1wdHkgISEhIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIik7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiBjaGFyKiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihHc3RCdWZm
ZXIqIGJ1ZmZlcikKIHsKICAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRp
ZXMuaAppbmRleCBlMTY4NTgyMTFlMjk1OWU5Zjc0M2EzMzkyODkwZDExMTQwN2RmOGI3Li5iM2U3
ODM2OTgzZDBlMGMzYTMyMmQ2NTAwMzcxMjFlOTI1NTI5MDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clV0aWxpdGllcy5oCkBAIC01OCw2ICs1OCwxMSBAQCBib29sIGdldFNhbXBsZVZpZGVvSW5mbyhH
c3RTYW1wbGUqLCBHc3RWaWRlb0luZm8mKTsKIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdz
dEJ1ZmZlciopOwogR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpOwogY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVm
ZmVyKik7Citjb25zdCBjaGFyKiBnZXRNZWRpYVR5cGVGcm9tQ2FwcyhHc3RDYXBzKik7Citib29s
IGlzVmlkZW9DYXBzKEdzdENhcHMqKTsKK2Jvb2wgaXNBdWRpb0NhcHMoR3N0Q2FwcyopOworYm9v
bCBpc1RleHRDYXBzKEdzdENhcHMqKTsKK2Jvb2wgaXNFbmNyeXB0ZWRDYXBzKEdzdENhcHMqKTsK
IHZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciosIHVpbnQzMl90KTsKIHZvaWQgdW5tYXBHc3RC
dWZmZXIoR3N0QnVmZmVyKik7CiBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggY2ViYmYyZTdiZTU2MmZhYzE4MGIxNGZkNzY0
YjljOWM1NWQzZmFjMS4uNzc3NWQ5Yzc5YjUxMjAxMDgzNGIxODJhOTdmNjE0NDIzMjFiYTVmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUg
Ik1lZGlhRGVzY3JpcHRpb24uaCIKQEAgLTU4Myw3MyArNTg0LDQxIEBAIHZvaWQgQXBwZW5kUGlw
ZWxpbmU6OnBhcnNlRGVtdXhlclNyY1BhZENhcHMoR3N0Q2FwcyogZGVtdXhlclNyY1BhZENhcHMp
CiAgICAgbV9kZW11eGVyU3JjUGFkQ2FwcyA9IGFkb3B0R1JlZihkZW11eGVyU3JjUGFkQ2Fwcyk7
CiAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVh
bWVyOjpVbmtub3duOwogCi0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19n
ZXRfc3RydWN0dXJlKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCksIDApOwotICAgIGJvb2wgc2l6
ZUNvbmZpZ3VyZWQgPSBmYWxzZTsKLQotI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDUsIDMpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUo
c3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIikpIHsKKyAgICBpZiAoaXNFbmNyeXB0ZWRD
YXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpKSB7CiAgICAgICAgIC8vIEFueSBwcmV2aW91
cyBkZWNyeXB0b3Igc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHBpcGVsaW5lIGJ5
IGRpc2Nvbm5lY3RGcm9tQXBwU2lua0Zyb21TdHJlYW1pbmdUaHJlYWQoKQogICAgICAgICBBU1NF
UlQoIW1fZGVjcnlwdG9yKTsKLQorICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSwgMCk7CiAgICAg
ICAgIG1fZGVjcnlwdG9yID0gR1N0cmVhbWVyRU1FVXRpbGl0aWVzOjpjcmVhdGVEZWNyeXB0b3Io
Z3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInByb3RlY3Rpb24tc3lzdGVtIikp
OwogICAgICAgICBpZiAoIW1fZGVjcnlwdG9yKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImRl
Y3J5cHRvciBub3QgZm91bmQgZm9yIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBtX2RlbXV4ZXJT
cmNQYWRDYXBzLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAg
ICAgIGNvbnN0IGdjaGFyKiBvcmlnaW5hbE1lZGlhVHlwZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0
cmluZyhzdHJ1Y3R1cmUsICJvcmlnaW5hbC1tZWRpYS10eXBlIik7Ci0KLSAgICAgICAgaWYgKCFN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzQ29kZWMob3JpZ2luYWxNZWRp
YVR5cGUpKSB7Ci0gICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9h
dFNpemUoKTsKLSAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNl
U3RyZWFtVHlwZUdTdHJlYW1lcjo6SW52YWxpZDsKLSAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9o
YXNfcHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAidmlkZW8vIikpIHsKLSAgICAgICAgICAgIGlu
dCB3aWR0aCA9IDA7Ci0gICAgICAgICAgICBpbnQgaGVpZ2h0ID0gMDsKLSAgICAgICAgICAgIGZs
b2F0IGZpbmFsSGVpZ2h0ID0gMDsKLQotICAgICAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0
X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgJiYgZ3N0X3N0cnVjdHVyZV9nZXRfaW50
KHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJh
dGlvTnVtZXJhdG9yID0gMTsKLSAgICAgICAgICAgICAgICBpbnQgcmF0aW9EZW5vbWluYXRvciA9
IDE7Ci0KLSAgICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbihzdHJ1Y3R1
cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAmcmF0aW9OdW1lcmF0b3IsICZyYXRpb0Rlbm9taW5h
dG9yKTsKLSAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IGhlaWdodCAqICgoZmxvYXQpIHJh
dGlvRGVub21pbmF0b3IgLyAoZmxvYXQpIHJhdGlvTnVtZXJhdG9yKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKHdp
ZHRoLCBmaW5hbEhlaWdodCk7Ci0gICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpN
ZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlZpZGVvOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7Ci0g
ICAgICAgICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChvcmlnaW5hbE1lZGlhVHlwZSwgImF1ZGlv
LyIpKQotICAgICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNl
U3RyZWFtVHlwZUdTdHJlYW1lcjo6QXVkaW87Ci0gICAgICAgICAgICBlbHNlIGlmIChnX3N0cl9o
YXNfcHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAidGV4dC8iKSkKLSAgICAgICAgICAgICAgICBt
X3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlRl
eHQ7Ci0gICAgICAgIH0KLSAgICAgICAgc2l6ZUNvbmZpZ3VyZWQgPSB0cnVlOwogICAgIH0KLSNl
bmRpZgogCi0gICAgaWYgKCFzaXplQ29uZmlndXJlZCkgewotICAgICAgICBjb25zdCBjaGFyKiBz
dHJ1Y3R1cmVOYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwotICAgICAg
ICBHc3RWaWRlb0luZm8gaW5mbzsKLQotICAgICAgICBpZiAoIU1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRTo6c3VwcG9ydHNDb2RlYyhzdHJ1Y3R1cmVOYW1lKSkgeworICAgIGNvbnN0IGdj
aGFyKiBvcmlnaW5hbE1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKG1fZGVtdXhlclNy
Y1BhZENhcHMuZ2V0KCkpOworICAgIGlmICghTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
OjpzdXBwb3J0c0NvZGVjKG9yaWdpbmFsTWVkaWFUeXBlKSkgewogICAgICAgICAgICAgbV9wcmVz
ZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CiAgICAgICAgICAgICBtX3N0cmVh
bVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OkludmFsaWQ7
Ci0gICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1lLCAidmlk
ZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBkZW11eGVyU3JjUGFkQ2Fw
cykpIHsKLSAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICAgICAgICAgIHdp
ZHRoID0gaW5mby53aWR0aDsKLSAgICAgICAgICAgIGhlaWdodCA9IGluZm8uaGVpZ2h0ICogKChm
bG9hdCkgaW5mby5wYXJfZCAvIChmbG9hdCkgaW5mby5wYXJfbik7Ci0KKyAgICB9IGVsc2UgaWYg
KGlzVmlkZW9DYXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpKSB7CisgICAgICAgIGZsb2F0
IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTsKKyAgICAgICAg
R3N0VmlkZW9Gb3JtYXQgZm9ybWF0OworICAgICAgICBpbnQgcGFyTiwgcGFyRCwgc3RyaWRlOwor
CisgICAgICAgIGlmIChnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhtX2RlbXV4ZXJTcmNQ
YWRDYXBzLmdldCgpLCBzaXplLCBmb3JtYXQsIHBhck4sIHBhckQsIHN0cmlkZSkpIHsKKyAgICAg
ICAgICAgIHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgICAgICAgICAgaGVpZ2h0ID0gc2l6ZS5o
ZWlnaHQoKSAqICgoZmxvYXQpIHBhckQgLyAoZmxvYXQpIHBhck4pOwogICAgICAgICAgICAgbV9w
cmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwotICAg
ICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0
cmVhbWVyOjpWaWRlbzsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKLSAgICAgICAg
ICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVyZU5hbWUsICJhdWRpby8iKSkKLSAgICAg
ICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVH
U3RyZWFtZXI6OkF1ZGlvOwotICAgICAgICAgICAgZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChz
dHJ1Y3R1cmVOYW1lLCAidGV4dC8iKSkKLSAgICAgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBX
ZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlRleHQ7Ci0gICAgICAgIH0K
KworICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVH
U3RyZWFtZXI6OlZpZGVvOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6
ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOworICAgICAgICBpZiAoaXNBdWRpb0NhcHMobV9kZW11
eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpCisgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3Jl
OjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OkF1ZGlvOworICAgICAgICBlbHNlIGlm
IChpc1RleHRDYXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpKQorICAgICAgICAgICAgbV9z
dHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpUZXh0
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNj
cmlwdGlvbi5jcHAKaW5kZXggNzc2YTBiZTliM2I0NjMzN2UzZjIxMDAxMjBkY2FkZWJmYTkyNDc0
OS4uNjUxYzk2NjM1OTM3MTVjMTBjOGE3NmZhODhjMTFiOGViNjZmNTFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJN
ZWRpYURlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3BwCkBAIC0yMCw3ICsy
MCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYURl
c2NyaXB0aW9uLmgiCi0KKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJHVW5pcXVlUHRyR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxz
Lmg+CkBAIC0zMyw3ICszMywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF0b21pY1N0cmlu
ZyBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjpjb2RlYygpIGNvbnN0CiB7Ci0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZGVzY3JpcHRpb24oZ3N0X3BiX3V0aWxzX2dldF9jb2RlY19kZXNjcmlwdGlv
bihtX2NhcHMuZ2V0KCkpKTsKKyAgICBHc3RDYXBzKiBvcmlnaW5DYXAgPSBtX2NhcHMuZ2V0KCk7
CisKKyAgICBpZiAoaXNFbmNyeXB0ZWRDYXBzKG9yaWdpbkNhcCkpIHsKKworICAgICAgICBvcmln
aW5DYXAgPSAgZ3N0X2NhcHNfY29weShtX2NhcHMuZ2V0KCkpOworICAgICAgICBHc3RTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUob3JpZ2luQ2FwLCAwKTsKKwor
ICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkKHN0cnVjdHVyZSwgIm9yaWdpbmFs
LW1lZGlhLXR5cGUiKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICBn
c3Rfc3RydWN0dXJlX3NldF9uYW1lKHN0cnVjdHVyZSwgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKSk7CisgICAgICAgIC8vIFJlbW92ZSB0
aGUgRFJNIHJlbGF0ZWQgZmllbGRzIGZyb20gdGhlIGNhcHMuCisgICAgICAgIGZvciAoaW50IGog
PSAwOyBqIDwgZ3N0X3N0cnVjdHVyZV9uX2ZpZWxkcyhzdHJ1Y3R1cmUpOyArK2opIHsKKyAgICAg
ICAgICAgIGNvbnN0IGdjaGFyKiBmaWVsZE5hbWUgPSBnc3Rfc3RydWN0dXJlX250aF9maWVsZF9u
YW1lKHN0cnVjdHVyZSwgaik7CisKKyAgICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGZp
ZWxkTmFtZSwgInByb3RlY3Rpb24tc3lzdGVtIikKKyAgICAgICAgICAgICAgICB8fCBnX3N0cl9o
YXNfcHJlZml4KGZpZWxkTmFtZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKSkKKyAgICAgICAgICAg
ICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZChzdHJ1Y3R1cmUsIGZpZWxkTmFtZSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3Rf
cGJfdXRpbHNfZ2V0X2NvZGVjX2Rlc2NyaXB0aW9uKG9yaWdpbkNhcCkpOwogICAgIFN0cmluZyBj
b2RlY05hbWUoZGVzY3JpcHRpb24uZ2V0KCkpOwogCiAgICAgLy8gUmVwb3J0ICJILjI2NCAoTWFp
biBQcm9maWxlKSIgYW5kICJILjI2NCAoSGlnaCBQcm9maWxlKSIganVzdCBhcyAiSC4yNjQiIHRv
IGFsbG93IGNoYW5nZXMgYmV0d2VlbiBib3RoIHZhcmlhbnRzCkBAIC00NSwyMyArNjYsMjAgQEAg
QXRvbWljU3RyaW5nIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjKCkgY29uc3QKICAg
ICAgICAgICAgIGNvZGVjTmFtZS5yZW1vdmUoYnJhY2VTdGFydCwgYnJhY2VFbmQtYnJhY2VTdGFy
dCk7CiAgICAgfQogCisgICAgaWYgKG9yaWdpbkNhcCAhPSBtX2NhcHMuZ2V0KCkpCisgICAgICAg
IGdzdF9jYXBzX3VucmVmKG9yaWdpbkNhcCk7CisKICAgICByZXR1cm4gY29kZWNOYW1lOwogfQog
CiBib29sIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVmlkZW8oKSBjb25zdAogewotICAg
IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2NhcHMu
Z2V0KCksIDApOwotICAgIGNvbnN0IGdjaGFyKiBuYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFt
ZShzdHJ1Y3R1cmUpOwotCi0gICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgInZpZGVv
LyIpOworICAgIHJldHVybiBpc1ZpZGVvQ2FwcyhtX2NhcHMuZ2V0KCkpOwogfQogCiBib29sIEdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzQXVkaW8oKSBjb25zdAogewotICAgIEdzdFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2NhcHMuZ2V0KCksIDAp
OwotICAgIGNvbnN0IGdjaGFyKiBuYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1
cmUpOwotCi0gICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgImF1ZGlvLyIpOworICAg
IHJldHVybiBpc0F1ZGlvQ2FwcyhtX2NhcHMuZ2V0KCkpOwogfQogCiBib29sIEdTdHJlYW1lck1l
ZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggZTA3ZWM1OTY3NDg3
N2NiMjhlNjFlMTYwZjI5ZDM5NTM5YWJiZmE3Ni4uZTFkNjdjMWVlYTQ2YjBlNGE0NzE1OGMxZTdh
MzM1M2QxMzM2M2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzM5LDIzICs3MzksMjQgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnRyYWNrRGV0ZWN0ZWQoUmVmUHRyPEFwcGVuZFBp
cGVsaW5lPiBhcHBlbmQKICAgICBBU1NFUlQoY2Fwcyk7CiAgICAgR1NUX0RFQlVHKCJ0cmFjayBJ
RDogJXMsIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBuZXdUcmFjay0+aWQoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCksIGNhcHMpOwogCi0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotICAgIGNvbnN0IGdjaGFyKiBtZWRpYVR5
cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0gICAgR3N0VmlkZW9JbmZv
IGluZm87Ci0KLSAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlby8iKSAm
JiBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKSB7CisgICAgaWYgKGlzVmlk
ZW9DYXBzKGNhcHMpKSB7CiAgICAgICAgIGZsb2F0IHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICAgICAg
d2lkdGggPSBpbmZvLndpZHRoOwotICAgICAgICBoZWlnaHQgPSBpbmZvLmhlaWdodCAqICgoZmxv
YXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotICAgICAgICBtX3ZpZGVvU2l6
ZS5zZXRXaWR0aCh3aWR0aCk7Ci0gICAgICAgIG1fdmlkZW9TaXplLnNldEhlaWdodChoZWlnaHQp
OworICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemU7CisgICAgICAgIEdzdFZpZGVvRm9ybWF0
IGZvcm1hdDsKKyAgICAgICAgaW50IHBhck4sIHBhckQsIHN0cmlkZTsKKworICAgICAgICBpZiAo
Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoY2Fwcywgc2l6ZSwgZm9ybWF0LCBwYXJOLCBw
YXJELCBzdHJpZGUpKSB7CisgICAgICAgICAgICB3aWR0aCA9IHNpemUud2lkdGgoKTsKKyAgICAg
ICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0KCkgKiAoKGZsb2F0KSBwYXJEIC8gKGZsb2F0KSBw
YXJOKTsKKyAgICAgICAgICAgIG1fdmlkZW9TaXplLnNldFdpZHRoKHdpZHRoKTsKKyAgICAgICAg
ICAgIG1fdmlkZW9TaXplLnNldEhlaWdodChoZWlnaHQpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKGZpcnN0VHJhY2tEZXRlY3RlZCkKLSAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5h
dHRhY2hUcmFjayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFj
aywgc3RydWN0dXJlLCBjYXBzKTsKKyAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5hdHRhY2hU
cmFjayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgY2Fw
cyk7CiAgICAgZWxzZQotICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPnJlYXR0YWNoVHJhY2so
YXBwZW5kUGlwZWxpbmUtPnNvdXJjZUJ1ZmZlclByaXZhdGUoKSwgbmV3VHJhY2ssIG1lZGlhVHlw
ZSk7CisgICAgICAgIG1fcGxheWJhY2tQaXBlbGluZS0+cmVhdHRhY2hUcmFjayhhcHBlbmRQaXBl
bGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgY2Fwcyk7CiB9CiAKIGNvbnN0
IHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNvZGVjU2V0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBl
bGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1BsYXliYWNrUGlwZWxpbmUuY3BwCmluZGV4IDUzMTk5ZjZmYzNkNWMwM2IxOWYzN2QwYjZhN2Rh
ZmJjZjAwZThlYjEuLjk4MjBjMjIzNWY0YWFmNzUwYjFlNjNhZWFiNGFkYzE3ODI0OTI0ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
UGxheWJhY2tQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBA
IHZvaWQgUGxheWJhY2tQaXBlbGluZTo6cmVtb3ZlU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzCiAgICAgICAgIHdlYktpdE1lZGlhU3JjRnJlZVN0cmVh
bShtX3dlYktpdE1lZGlhU3JjLmdldCgpLCBzdHJlYW0pOwogfQogCi12b2lkIFBsYXliYWNrUGlw
ZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBz
b3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4gdHJhY2tQcml2YXRl
LCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR3N0Q2FwcyogY2FwcykKK3ZvaWQgUGxheWJhY2tQ
aXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
IHNvdXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZh
dGUsIEdzdENhcHMqIGNhcHMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmMqIHdlYktpdE1lZGlhU3Jj
ID0gbV93ZWJLaXRNZWRpYVNyYy5nZXQoKTsKIApAQCAtMTc3LDEzICsxNzcsMTMgQEAgdm9pZCBQ
bGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcj4gc291cmNlQnUKICAgICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZQYWRz
Kys7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0sod2ViS2l0TWVkaWFTcmMpOwogCi0gICAgY29uc3Qg
Z2NoYXIqIG1lZGlhVHlwZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLQor
ICAgIGNvbnN0IGdjaGFyKiBtZWRpYVR5cGUgPSBnZXRNZWRpYVR5cGVGcm9tQ2FwcyhjYXBzKTsK
ICAgICBHU1RfREVCVUdfT0JKRUNUKHdlYktpdE1lZGlhU3JjLCAiQ29uZmlndXJlZCB0cmFjayAl
czogYXBwc3JjPSVzLCBwYWRJZD0ldSwgbWVkaWFUeXBlPSVzIiwgdHJhY2tQcml2YXRlLT5pZCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIEdTVF9FTEVNRU5UX05BTUUoc3RyZWFtLT5hcHBzcmMp
LCBwYWRJZCwgbWVkaWFUeXBlKTsKIAogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhcnNlckJpbk5h
bWUoZ19zdHJkdXBfcHJpbnRmKCJzdHJlYW1wYXJzZXIldSIsIHBhZElkKSk7Ci0KLSAgICBpZiAo
IWdfc3RyY21wMChtZWRpYVR5cGUsICJ2aWRlby94LWgyNjQiKSkgeworICAgIGlmIChpc0VuY3J5
cHRlZENhcHMoY2FwcykpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCh3ZWJLaXRNZWRpYVNy
YywgIlBsYXliYWNrUGlwZWxpbmUsIHdpdGggZW5jcnlwdGVkIGNvbnRlbnQgdGhlIGFwcHJvcHJp
YXRlIHBhcnNlciB3aWxsIGJlIGF1dG8gcGx1Z2dlZCBieSB0aGUgZGVjb2RlYmluIGFmdGVyIHRo
ZSBkZWNyeXB0b3IgaW4gcGlwZWxpbmUhIik7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1l
ZGlhVHlwZSwgInZpZGVvL3gtaDI2NCIpKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gZmls
dGVyQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJ2aWRlby94LWgyNjQiLCAi
YWxpZ25tZW50IiwgR19UWVBFX1NUUklORywgImF1IiwgbnVsbHB0cikpOwogICAgICAgICBHc3RF
bGVtZW50KiBjYXBzZmlsdGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJjYXBzZmlsdGVy
IiwgbnVsbHB0cik7CiAgICAgICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGZp
bHRlckNhcHMuZ2V0KCksIG51bGxwdHIpOwpAQCAtMjE3LDYgKzIxNyw3IEBAIHZvaWQgUGxheWJh
Y2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI+IHNvdXJjZUJ1CiAgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFtLT5wYXJzZXIs
IGdzdF9naG9zdF9wYWRfbmV3KCJzcmMiLCBwYWQuZ2V0KCkpKTsKICAgICB9IGVsc2UgaWYgKCFn
X3N0cmNtcDAobWVkaWFUeXBlLCAiYXVkaW8vbXBlZyIpKSB7CiAgICAgICAgIGdpbnQgbXBlZ3Zl
cnNpb24gPSAtMTsKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19n
ZXRfc3RydWN0dXJlKGNhcHMsIDApOwogICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3Ry
dWN0dXJlLCAibXBlZ3ZlcnNpb24iLCAmbXBlZ3ZlcnNpb24pOwogCiAgICAgICAgIEdzdEVsZW1l
bnQqIHBhcnNlciA9IG51bGxwdHI7CkBAIC0yNzIsMTcgKzI3MywxNyBAQCB2b2lkIFBsYXliYWNr
UGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
PiBzb3VyY2VCdQogICAgIGludCBzaWduYWwgPSAtMTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyh3
ZWJLaXRNZWRpYVNyYyk7Ci0gICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAiYXVk
aW8iKSkgeworICAgIGlmIChpc0F1ZGlvQ2FwcyhjYXBzKSkgewogICAgICAgICBzdHJlYW0tPnR5
cGUgPSBBdWRpbzsKICAgICAgICAgc3RyZWFtLT5wYXJlbnQtPnByaXYtPm51bWJlck9mQXVkaW9T
dHJlYW1zKys7CiAgICAgICAgIHNpZ25hbCA9IFNJR05BTF9BVURJT19DSEFOR0VEOwogICAgICAg
ICBzdHJlYW0tPmF1ZGlvVHJhY2sgPSBSZWZQdHI8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+KHN0YXRpY19jYXN0PFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
Kj4odHJhY2tQcml2YXRlLmdldCgpKSk7Ci0gICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4
KG1lZGlhVHlwZSwgInZpZGVvIikpIHsKKyAgICB9IGVsc2UgaWYgKGlzVmlkZW9DYXBzKGNhcHMp
KSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IFZpZGVvOwogICAgICAgICBzdHJlYW0tPnBhcmVu
dC0+cHJpdi0+bnVtYmVyT2ZWaWRlb1N0cmVhbXMrKzsKICAgICAgICAgc2lnbmFsID0gU0lHTkFM
X1ZJREVPX0NIQU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+dmlkZW9UcmFjayA9IFJlZlB0cjxXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIqPih0cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVs
c2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidGV4dCIpKSB7CisgICAgfSBlbHNl
IGlmIChpc1RleHRDYXBzKGNhcHMpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IFRleHQ7CiAg
ICAgICAgIHN0cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJPZlRleHRTdHJlYW1zKys7CiAgICAg
ICAgIHNpZ25hbCA9IFNJR05BTF9URVhUX0NIQU5HRUQ7CkBAIC0yOTUsNyArMjk2LDcgQEAgdm9p
ZCBQbGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lcj4gc291cmNlQnUKICAgICAgICAgZ19zaWduYWxfZW1pdChHX09CSkVDVChzdHJl
YW0tPnBhcmVudCksIHdlYktpdE1lZGlhU3JjU2lnbmFsc1tzaWduYWxdLCAwLCBudWxscHRyKTsK
IH0KIAotdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpyZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQ
cml2YXRlQmFzZT4gdHJhY2tQcml2YXRlLCBjb25zdCBjaGFyKiBtZWRpYVR5cGUpCit2b2lkIFBs
YXliYWNrUGlwZWxpbmU6OnJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0
cmFja1ByaXZhdGUsIEdzdENhcHMqIGNhcHMpCiB7CiAgICAgR1NUX0RFQlVHKCJSZS1hdHRhY2hp
bmcgdHJhY2siKTsKIApAQCAtMzEzLDE1ICszMTQsMTUgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5l
OjpyZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3Vy
Y2UKICAgICBpbnQgc2lnbmFsID0gLTE7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0sod2ViS2l0TWVk
aWFTcmMpOwotICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgImF1ZGlvIikpIHsK
KyAgICBpZiAoaXNBdWRpb0NhcHMoY2FwcykpIHsKICAgICAgICAgQVNTRVJUKHN0cmVhbS0+dHlw
ZSA9PSBBdWRpbyk7CiAgICAgICAgIHNpZ25hbCA9IFNJR05BTF9BVURJT19DSEFOR0VEOwogICAg
ICAgICBzdHJlYW0tPmF1ZGlvVHJhY2sgPSBSZWZQdHI8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI+KHN0YXRpY19jYXN0PFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyKj4odHJhY2tQcml2YXRlLmdldCgpKSk7Ci0gICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJl
Zml4KG1lZGlhVHlwZSwgInZpZGVvIikpIHsKKyAgICB9IGVsc2UgaWYgKGlzVmlkZW9DYXBzKGNh
cHMpKSB7CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gVmlkZW8pOwogICAgICAgICBz
aWduYWwgPSBTSUdOQUxfVklERU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNr
ID0gUmVmUHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQo
KSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0Iikp
IHsKKyAgICB9IGVsc2UgaWYgKGlzVGV4dENhcHMoY2FwcykpIHsKICAgICAgICAgQVNTRVJUKHN0
cmVhbS0+dHlwZSA9PSBUZXh0KTsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX1RFWFRfQ0hBTkdF
RDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaAppbmRleCA2NjYxZDZhMmZmNjRj
ZDZiODViOTE5NzA1NDczZDkzYzg4YzE2ODliLi43ZjcyZTQ3ZmE3NzkxNjBlN2RlMDRjMjhhNTU0
NmFjY2ZkYjYzNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaApAQCAtNTcs
OCArNTcsOCBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBh
ZGRTb3VyY2VCdWZmZXIoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKICAg
ICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcj4pOwotICAgIHZvaWQgYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI+LCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4sIEdzdFN0cnVjdHVyZSosIEdzdENh
cHMqKTsKLSAgICB2b2lkIHJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI+LCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4sIGNvbnN0IGNoYXIqKTsKKyAgICB2
b2lkIGF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVm
UHRyPFRyYWNrUHJpdmF0ZUJhc2U+LCBHc3RDYXBzKik7CisgICAgdm9pZCByZWF0dGFjaFRyYWNr
KFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0
ZUJhc2U+LCBHc3RDYXBzKik7CiAgICAgdm9pZCBub3RpZnlEdXJhdGlvbkNoYW5nZWQoKTsKIAog
ICAgIC8vIEZyb20gTWVkaWFTb3VyY2VHU3RyZWFtZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDY5ZWZjMWMxMDQ5M2UwMjZm
NzBjNDQyNzQ3NDUwOGIzNmYwZWQwYTYuLjJmOTc0ODIwOTk2YzFiMDZhMDU4Y2FmOWM5MGMzNDM2
YTIwNDkwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC00NTIsMTggKzQ1MiwyMCBAQCBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNy
Y1F1ZXJ5V2l0aFBhcmVudChHc3RQYWQqIHBhZCwgR3N0T2JqZWN0KiBwYXJlbnQsIEdzdFF1ZXJ5
KgogCiB2b2lkIHdlYktpdE1lZGlhU3JjVXBkYXRlUHJlc2VudGF0aW9uU2l6ZShHc3RDYXBzKiBj
YXBzLCBTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIHN0cnVjdHVy
ZU5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0gICAgR3N0VmlkZW9J
bmZvIGluZm87Ci0KICAgICBHU1RfT0JKRUNUX0xPQ0soc3RyZWFtLT5wYXJlbnQpOwotICAgIGlm
IChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVyZU5hbWUsICJ2aWRlby8iKSAmJiBnc3RfdmlkZW9f
aW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKSB7Ci0gICAgICAgIGZsb2F0IHdpZHRoLCBoZWln
aHQ7CiAKLSAgICAgICAgLy8gRklYTUU6IENvcnJlY3Q/LgotICAgICAgICB3aWR0aCA9IGluZm8u
d2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGluZm8uaGVpZ2h0ICogKChmbG9hdCkgaW5mby5wYXJf
ZCAvIChmbG9hdCkgaW5mby5wYXJfbik7Ci0gICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6
ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBpZiAoV2ViQ29yZTo6
aXNWaWRlb0NhcHMoY2FwcykpIHsKKyAgICAgICAgZmxvYXQgd2lkdGgsIGhlaWdodDsKKyAgICAg
ICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOworICAgICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7
CisgICAgICAgIGludCBwYXJOLCBwYXJELCBzdHJpZGU7CisKKyAgICAgICAgaWYgKFdlYkNvcmU6
OmdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKGNhcHMsIHNpemUsIGZvcm1hdCwgcGFyTiwg
cGFyRCwgc3RyaWRlKSkgeworICAgICAgICAgICAgd2lkdGggPSBzaXplLndpZHRoKCk7CisgICAg
ICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodCgpICogKChmbG9hdCkgcGFyRCAvIChmbG9hdCkg
cGFyTik7CisgICAgICAgICAgICBzdHJlYW0tPnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpG
bG9hdFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3Ry
ZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332152</attachid>
            <date>2018-01-24 06:28:24 -0800</date>
            <delta_ts>2018-01-26 11:09:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180124152822.patch</filename>
            <type>text/plain</type>
            <size>26166</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uNjE1MTdkNDAwN2I2ZWJiZTEzNjU3MjA3YWM2Njk0
MjM3NTc2MzA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIENhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gQ2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIENhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgQ2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIENhcHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OmdldE1lZGlhVHlwZUZyb21DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
VmlkZW9DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXVkaW9DYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzVGV4dENhcHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbmNyeXB0ZWRDYXBzKTog
QWRkIGEgbmV3IGZ1bmN0aW9ucyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIENhcHMgcHJvcGVybHku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0
aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11
eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVmlkZW8gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNBdWRpbyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFOjp0cmFja0RldGVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQ
aXBlbGluZTo6YXR0YWNoVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGlu
ZTo6cmVhdHRhY2hUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9QbGF5YmFja1BpcGVsaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJL
aXRNZWRpYVNyY1VwZGF0ZVByZXNlbnRhdGlvblNpemUpOiBSZWZhY3RvciBzb21lIHBhcnRzIGJ5
IHVzaW5nIHRoZSBuZXcgYWRkZWQgZnVuY3Rpb25zLgorCiAyMDE4LTAxLTE5ICBZYWNpbmUgQmFu
ZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW0VNRV1b
R1N0cmVhbWVyXSBBZGQgYSBuZXcgbWVzc2FnZSAiZGVjcnlwdC1rZXktbmVlZGVkIiBzZW5kIGZy
b20gdGhlIGRlY3J5cHRvciB0byB0aGUgYXBwbGljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwCmluZGV4IDQ3NjJhZTg4NTViOGIxNzhhNGZhYmE2YmY4MjIzYWZlNTdmNjU4
OGUuLmI2YWIxMmVjNTM3ZjFmZDA3ZWYwODAyZWE0ZDhlYTEwMDIwNWUxNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCkBAIC01OSwxOCArNTksMzcgQEAgR3N0UGFkKiB3ZWJr
aXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3Rh
dGljUGFkVGVtcGwKICNpZiBFTkFCTEUoVklERU8pCiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1h
dEZyb21DYXBzKEdzdENhcHMqIGNhcHMsIFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZpZGVv
Rm9ybWF0JiBmb3JtYXQsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhl
bEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKQogewotICAgIEdzdFZpZGVvSW5m
byBpbmZvOwogCi0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7Ci0gICAgaWYgKCFnc3Rf
dmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8pOwotICAgIHNpemUu
c2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKLSAgICBzaXplLnNldEhlaWdo
dChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsKLSAgICBwaXhlbEFzcGVjdFJhdGlvTnVt
ZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOwotICAgIHBpeGVsQXNwZWN0UmF0
aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsKLSAgICBzdHJpZGUg
PSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworICAgIGlmICghaXNFbmNy
eXB0ZWRDYXBzKGNhcHMpKSB7CisgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOworICAgICAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKKyAgICAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19m
cm9tX2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmaW5mbyk7CisgICAgICAgIHNpemUu
c2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKKyAgICAgICAgc2l6ZS5zZXRI
ZWlnaHQoR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZpbmZvKSk7CisgICAgICAgIHBpeGVsQXNwZWN0
UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7CisgICAgICAgIHBp
eGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsK
KyAgICAgICAgc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFKCZpbmZvLCAwKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlzVmlkZW9DYXBzKGNhcHMpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICAgICAgZ2ludCB3ID0gMCwgaCA9IDA7
CisgICAgICAgIGdpbnQgcGFyTiA9IDEsIHBhckQgPSAxOworCisgICAgICAgIGZvcm1hdCA9IEdT
VF9WSURFT19GT1JNQVRfRU5DT0RFRDsKKyAgICAgICAgc3RyaWRlID0gMDsKKyAgICAgICAgZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJncpOworICAgICAgICBnc3Rf
c3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmgpOworICAgICAgICBnc3Rf
c3RydWN0dXJlX2dldF9mcmFjdGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAm
cGFyTiwgJnBhckQpOworICAgICAgICBzaXplLnNldFdpZHRoKHcpOworICAgICAgICBzaXplLnNl
dEhlaWdodChoKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IHBhck47Cisg
ICAgICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IHBhckQ7CisgICAgfQogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xMTMsNiArMTMyLDc1IEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0
QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBi
dWZmZXI7CiB9CiAKK2NvbnN0IGNoYXIqIGdldE1lZGlhVHlwZUZyb21DYXBzKEdzdENhcHMqIGNh
cHMpCit7CisKKyAgICBpZiAoIWNhcHMpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJjYXBzIGlzIG51
bGwgISEhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBHc3RTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisKKyAgICBp
ZiAoIXN0cnVjdHVyZSkgeworICAgICAgICBHU1RfRVJST1IoImNhcHMgaXMgZW1wdHkgISEhIik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcGxpY2F0
aW9uL3gtY2VuYyIpKQorICAgICAgICByZXR1cm4gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0
cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKTsKKyNlbmRpZgorICAgIHJldHVybiBnc3Rf
c3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Cit9CisKK2Jvb2wgaXNWaWRlb0NhcHMoR3N0
Q2FwcyogY2FwcykKK3sKKyAgICBjb25zdCBnY2hhciogbWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBl
RnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKCFtZWRpYVR5cGUpIHsKKyAgICAgICAgR1NUX0VSUk9S
KCJGYWlsZWQgdG8gZ2V0IE1lZGlhVHlwZSAhISEiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlbyIpOwor
fQorCitib29sIGlzQXVkaW9DYXBzKEdzdENhcHMqIGNhcHMpCit7CisgICAgY29uc3QgZ2NoYXIq
IG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKGNhcHMpOworICAgIGlmICghbWVkaWFU
eXBlKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGdldCBNZWRpYVR5cGUgISEhIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVm
aXgobWVkaWFUeXBlLCAiYXVkaW8iKTsKK30KKworYm9vbCBpc1RleHRDYXBzKEdzdENhcHMqIGNh
cHMpCit7CisgICAgY29uc3QgZ2NoYXIqIG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBz
KGNhcHMpOworICAgIGlmICghbWVkaWFUeXBlKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVk
IHRvIGdldCBNZWRpYVR5cGUgISEhIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidGV4dCIpOworfQorCitib29s
IGlzRW5jcnlwdGVkQ2FwcyhHc3RDYXBzKiBjYXBzKQoreworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKCFjYXBzKSB7CisgICAgICAgIEdTVF9FUlJPUigiY2FwcyBpcyBudWxs
ICEhISIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEdzdFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICBpZiAoIXN0
cnVjdHVyZSkgeworICAgICAgICBHU1RfRVJST1IoImNhcHMgaXMgZW1wdHkgISEhIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIik7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShjYXBzKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogY2hhciogZ2V0R3N0
QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCiB7CiAgICAgR3N0TWluaU9iamVj
dCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKaW5kZXggZTE2ODU4MjExZTI5NTllOWY3NDNh
MzM5Mjg5MGQxMTE0MDdkZjhiNy4uYjNlNzgzNjk4M2QwZTBjM2EzMjJkNjUwMDM3MTIxZTkyNTUy
OTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaApAQCAtNTgsNiArNTgsMTEgQEAg
Ym9vbCBnZXRTYW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiwgR3N0VmlkZW9JbmZvJik7CiBHc3RC
dWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKIEdzdEJ1ZmZlciogY3JlYXRlR3N0
QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIGNoYXIqIGdldEdz
dEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciopOworY29uc3QgY2hhciogZ2V0TWVkaWFUeXBl
RnJvbUNhcHMoR3N0Q2FwcyopOworYm9vbCBpc1ZpZGVvQ2FwcyhHc3RDYXBzKik7Citib29sIGlz
QXVkaW9DYXBzKEdzdENhcHMqKTsKK2Jvb2wgaXNUZXh0Q2FwcyhHc3RDYXBzKik7Citib29sIGlz
RW5jcnlwdGVkQ2FwcyhHc3RDYXBzKik7CiB2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqLCB1
aW50MzJfdCk7CiB2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwogYm9vbCBpbml0aWFs
aXplR1N0cmVhbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGNl
YmJmMmU3YmU1NjJmYWMxODBiMTRmZDc2NGI5YzljNTVkM2ZhYzEuLjE0YThjZDRmNjFhMjVjODU1
MzQyN2E5NzMyYTQyYzNlZWVjMGYwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgIkdTdHJlYW1lckVNRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlh
RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJNZWRpYVNhbXBsZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCkBAIC01ODIsNzQg
KzU4Myw0MiBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKEdz
dENhcHMqIGRlbXV4ZXJTcmNQYWRDYXBzKQogCiAgICAgbV9kZW11eGVyU3JjUGFkQ2FwcyA9IGFk
b3B0R1JlZihkZW11eGVyU3JjUGFkQ2Fwcyk7CiAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6
TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpVbmtub3duOwotCi0gICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1fZGVtdXhlclNyY1BhZENh
cHMuZ2V0KCksIDApOwotICAgIGJvb2wgc2l6ZUNvbmZpZ3VyZWQgPSBmYWxzZTsKLQotI2lmIEdT
VF9DSEVDS19WRVJTSU9OKDEsIDUsIDMpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAg
aWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5j
IikpIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChpc0VuY3J5cHRlZENh
cHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpIHsKICAgICAgICAgLy8gQW55IHByZXZpb3Vz
IGRlY3J5cHRvciBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcGlwZWxpbmUgYnkg
ZGlzY29ubmVjdEZyb21BcHBTaW5rRnJvbVN0cmVhbWluZ1RocmVhZCgpCiAgICAgICAgIEFTU0VS
VCghbV9kZWNyeXB0b3IpOwotCisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpLCAwKTsKICAgICAg
ICAgbV9kZWNyeXB0b3IgPSBHU3RyZWFtZXJFTUVVdGlsaXRpZXM6OmNyZWF0ZURlY3J5cHRvcihn
c3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAicHJvdGVjdGlvbi1zeXN0ZW0iKSk7
CiAgICAgICAgIGlmICghbV9kZWNyeXB0b3IpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiZGVj
cnlwdG9yIG5vdCBmb3VuZCBmb3IgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIG1fZGVtdXhlclNy
Y1BhZENhcHMuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAg
ICAgY29uc3QgZ2NoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3Ry
aW5nKHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKTsKLQotICAgICAgICBpZiAoIU1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNDb2RlYyhvcmlnaW5hbE1lZGlh
VHlwZSkpIHsKLSAgICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0
U2l6ZSgpOwotICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VT
dHJlYW1UeXBlR1N0cmVhbWVyOjpJbnZhbGlkOwotICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hh
c19wcmVmaXgob3JpZ2luYWxNZWRpYVR5cGUsICJ2aWRlby8iKSkgewotICAgICAgICAgICAgaW50
IHdpZHRoID0gMDsKLSAgICAgICAgICAgIGludCBoZWlnaHQgPSAwOwotICAgICAgICAgICAgZmxv
YXQgZmluYWxIZWlnaHQgPSAwOwotCi0gICAgICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRf
aW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKSAmJiBnc3Rfc3RydWN0dXJlX2dldF9pbnQo
c3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgcmF0
aW9OdW1lcmF0b3IgPSAxOwotICAgICAgICAgICAgICAgIGludCByYXRpb0Rlbm9taW5hdG9yID0g
MTsKLQotICAgICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKHN0cnVjdHVy
ZSwgInBpeGVsLWFzcGVjdC1yYXRpbyIsICZyYXRpb051bWVyYXRvciwgJnJhdGlvRGVub21pbmF0
b3IpOwotICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gaGVpZ2h0ICogKChmbG9hdCkgcmF0
aW9EZW5vbWluYXRvciAvIChmbG9hdCkgcmF0aW9OdW1lcmF0b3IpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lk
dGgsIGZpbmFsSGVpZ2h0KTsKLSAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1l
ZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VmlkZW87Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKLSAg
ICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAiYXVkaW8v
IikpCi0gICAgICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VT
dHJlYW1UeXBlR1N0cmVhbWVyOjpBdWRpbzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGdfc3RyX2hh
c19wcmVmaXgob3JpZ2luYWxNZWRpYVR5cGUsICJ0ZXh0LyIpKQotICAgICAgICAgICAgICAgIG1f
c3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VGV4
dDsKLSAgICAgICAgfQotICAgICAgICBzaXplQ29uZmlndXJlZCA9IHRydWU7CiAgICAgfQogI2Vu
ZGlmCi0KLSAgICBpZiAoIXNpemVDb25maWd1cmVkKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHN0
cnVjdHVyZU5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0gICAgICAg
IEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgICAgIGlmICghTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzdXBwb3J0c0NvZGVjKHN0cnVjdHVyZU5hbWUpKSB7CisgICAgY29uc3QgZ2No
YXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBlRnJvbUNhcHMobV9kZW11eGVyU3Jj
UGFkQ2Fwcy5nZXQoKSk7CisgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6
OnN1cHBvcnRzQ29kZWMob3JpZ2luYWxNZWRpYVR5cGUpKSB7CiAgICAgICAgICAgICBtX3ByZXNl
bnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKICAgICAgICAgICAgIG1fc3RyZWFt
VHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6SW52YWxpZDsK
LSAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVyZU5hbWUsICJ2aWRl
by8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGRlbXV4ZXJTcmNQYWRDYXBz
KSkgewotICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGhlaWdodDsKLQotICAgICAgICAgICAgd2lk
dGggPSBpbmZvLndpZHRoOwotICAgICAgICAgICAgaGVpZ2h0ID0gaW5mby5oZWlnaHQgKiAoKGZs
b2F0KSBpbmZvLnBhcl9kIC8gKGZsb2F0KSBpbmZvLnBhcl9uKTsKLQorICAgIH0gZWxzZSBpZiAo
aXNWaWRlb0NhcHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpIHsKKyAgICAgICAgZmxvYXQg
d2lkdGgsIGhlaWdodDsKKyAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOworICAgICAgICBH
c3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CisgICAgICAgIGludCBwYXJOLCBwYXJELCBzdHJpZGU7CisK
KyAgICAgICAgaWYgKGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKG1fZGVtdXhlclNyY1Bh
ZENhcHMuZ2V0KCksIHNpemUsIGZvcm1hdCwgcGFyTiwgcGFyRCwgc3RyaWRlKSkgeworICAgICAg
ICAgICAgd2lkdGggPSBzaXplLndpZHRoKCk7CisgICAgICAgICAgICBoZWlnaHQgPSBzaXplLmhl
aWdodCgpICogKChmbG9hdCkgcGFyRCAvIChmbG9hdCkgcGFyTik7CiAgICAgICAgICAgICBtX3By
ZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAg
ICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3Ry
ZWFtZXI6OlZpZGVvOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOwotICAgICAgICAg
ICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoc3RydWN0dXJlTmFtZSwgImF1ZGlvLyIpKQotICAgICAg
ICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdT
dHJlYW1lcjo6QXVkaW87Ci0gICAgICAgICAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0
cnVjdHVyZU5hbWUsICJ0ZXh0LyIpKQotICAgICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdl
YkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VGV4dDsKLSAgICAgICAgfQor
CisgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdT
dHJlYW1lcjo6VmlkZW87CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wcmVzZW50YXRpb25TaXpl
ID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CisgICAgICAgIGlmIChpc0F1ZGlvQ2FwcyhtX2RlbXV4
ZXJTcmNQYWRDYXBzLmdldCgpKSkKKyAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6
Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6QXVkaW87CisgICAgICAgIGVsc2UgaWYg
KGlzVGV4dENhcHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpCisgICAgICAgICAgICBtX3N0
cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlRleHQ7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2Ny
aXB0aW9uLmNwcAppbmRleCA3NzZhMGJlOWIzYjQ2MzM3ZTNmMjEwMDEyMGRjYWRlYmZhOTI0NzQ5
Li42NTFjOTY2MzU5MzcxNWMxMGM4YTc2ZmE4OGMxMWI4ZWI2NmY1MWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1l
ZGlhRGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAKQEAgLTIwLDcgKzIw
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhRGVz
Y3JpcHRpb24uaCIKLQorI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkdVbmlxdWVQdHJHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMu
aD4KQEAgLTMzLDcgKzMzLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXRvbWljU3RyaW5n
IEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjKCkgY29uc3QKIHsKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3RfcGJfdXRpbHNfZ2V0X2NvZGVjX2Rlc2NyaXB0aW9u
KG1fY2Fwcy5nZXQoKSkpOworICAgIEdzdENhcHMqIG9yaWdpbkNhcCA9IG1fY2Fwcy5nZXQoKTsK
KworICAgIGlmIChpc0VuY3J5cHRlZENhcHMob3JpZ2luQ2FwKSkgeworCisgICAgICAgIG9yaWdp
bkNhcCA9ICBnc3RfY2Fwc19jb3B5KG1fY2Fwcy5nZXQoKSk7CisgICAgICAgIEdzdFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShvcmlnaW5DYXAsIDApOworCisg
ICAgICAgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQoc3RydWN0dXJlLCAib3JpZ2luYWwt
bWVkaWEtdHlwZSIpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgICAgIGdz
dF9zdHJ1Y3R1cmVfc2V0X25hbWUoc3RydWN0dXJlLCBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmco
c3RydWN0dXJlLCAib3JpZ2luYWwtbWVkaWEtdHlwZSIpKTsKKyAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBEUk0gcmVsYXRlZCBmaWVsZHMgZnJvbSB0aGUgY2Fwcy4KKyAgICAgICAgZm9yIChpbnQgaiA9
IDA7IGogPCBnc3Rfc3RydWN0dXJlX25fZmllbGRzKHN0cnVjdHVyZSk7ICsraikgeworICAgICAg
ICAgICAgY29uc3QgZ2NoYXIqIGZpZWxkTmFtZSA9IGdzdF9zdHJ1Y3R1cmVfbnRoX2ZpZWxkX25h
bWUoc3RydWN0dXJlLCBqKTsKKworICAgICAgICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoZmll
bGROYW1lLCAicHJvdGVjdGlvbi1zeXN0ZW0iKQorICAgICAgICAgICAgICAgIHx8IGdfc3RyX2hh
c19wcmVmaXgoZmllbGROYW1lLCAib3JpZ2luYWwtbWVkaWEtdHlwZSIpKQorICAgICAgICAgICAg
ICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkKHN0cnVjdHVyZSwgZmllbGROYW1lKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRlc2NyaXB0aW9uKGdzdF9w
Yl91dGlsc19nZXRfY29kZWNfZGVzY3JpcHRpb24ob3JpZ2luQ2FwKSk7CiAgICAgU3RyaW5nIGNv
ZGVjTmFtZShkZXNjcmlwdGlvbi5nZXQoKSk7CiAKICAgICAvLyBSZXBvcnQgIkguMjY0IChNYWlu
IFByb2ZpbGUpIiBhbmQgIkguMjY0IChIaWdoIFByb2ZpbGUpIiBqdXN0IGFzICJILjI2NCIgdG8g
YWxsb3cgY2hhbmdlcyBiZXR3ZWVuIGJvdGggdmFyaWFudHMKQEAgLTQ1LDIzICs2NiwyMCBAQCBB
dG9taWNTdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6Y29kZWMoKSBjb25zdAogICAg
ICAgICAgICAgY29kZWNOYW1lLnJlbW92ZShicmFjZVN0YXJ0LCBicmFjZUVuZC1icmFjZVN0YXJ0
KTsKICAgICB9CiAKKyAgICBpZiAob3JpZ2luQ2FwICE9IG1fY2Fwcy5nZXQoKSkKKyAgICAgICAg
Z3N0X2NhcHNfdW5yZWYob3JpZ2luQ2FwKTsKKwogICAgIHJldHVybiBjb2RlY05hbWU7CiB9CiAK
IGJvb2wgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNWaWRlbygpIGNvbnN0CiB7Ci0gICAg
R3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1fY2Fwcy5n
ZXQoKSwgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1l
KHN0cnVjdHVyZSk7Ci0KLSAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChuYW1lLCAidmlkZW8v
Iik7CisgICAgcmV0dXJuIGlzVmlkZW9DYXBzKG1fY2Fwcy5nZXQoKSk7CiB9CiAKIGJvb2wgR1N0
cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNBdWRpbygpIGNvbnN0CiB7Ci0gICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1fY2Fwcy5nZXQoKSwgMCk7
Ci0gICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVy
ZSk7Ci0KLSAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChuYW1lLCAiYXVkaW8vIik7CisgICAg
cmV0dXJuIGlzQXVkaW9DYXBzKG1fY2Fwcy5nZXQoKSk7CiB9CiAKIGJvb2wgR1N0cmVhbWVyTWVk
aWFEZXNjcmlwdGlvbjo6aXNUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCBlMDdlYzU5Njc0ODc3
Y2IyOGU2MWUxNjBmMjlkMzk1MzlhYmJmYTc2Li5lMWQ2N2MxZWVhNDZiMGU0YTQ3MTU4YzFlN2Ez
MzUzZDEzMzYzZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03MzksMjMgKzczOSwyNCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6dHJhY2tEZXRlY3RlZChSZWZQdHI8QXBwZW5kUGlw
ZWxpbmU+IGFwcGVuZAogICAgIEFTU0VSVChjYXBzKTsKICAgICBHU1RfREVCVUcoInRyYWNrIElE
OiAlcywgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIG5ld1RyYWNrLT5pZCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSwgY2Fwcyk7CiAKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIG1lZGlhVHlw
ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLSAgICBHc3RWaWRlb0luZm8g
aW5mbzsKLQotICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgInZpZGVvLyIpICYm
IGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpIHsKKyAgICBpZiAoaXNWaWRl
b0NhcHMoY2FwcykpIHsKICAgICAgICAgZmxvYXQgd2lkdGgsIGhlaWdodDsKLQotICAgICAgICB3
aWR0aCA9IGluZm8ud2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGluZm8uaGVpZ2h0ICogKChmbG9h
dCkgaW5mby5wYXJfZCAvIChmbG9hdCkgaW5mby5wYXJfbik7Ci0gICAgICAgIG1fdmlkZW9TaXpl
LnNldFdpZHRoKHdpZHRoKTsKLSAgICAgICAgbV92aWRlb1NpemUuc2V0SGVpZ2h0KGhlaWdodCk7
CisgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTsKKyAgICAgICAgR3N0VmlkZW9Gb3JtYXQg
Zm9ybWF0OworICAgICAgICBpbnQgcGFyTiwgcGFyRCwgc3RyaWRlOworCisgICAgICAgIGlmIChn
ZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhjYXBzLCBzaXplLCBmb3JtYXQsIHBhck4sIHBh
ckQsIHN0cmlkZSkpIHsKKyAgICAgICAgICAgIHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgICAg
ICAgICAgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKSAqICgoZmxvYXQpIHBhckQgLyAoZmxvYXQpIHBh
ck4pOworICAgICAgICAgICAgbV92aWRlb1NpemUuc2V0V2lkdGgod2lkdGgpOworICAgICAgICAg
ICAgbV92aWRlb1NpemUuc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoZmlyc3RUcmFja0RldGVjdGVkKQotICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPmF0
dGFjaFRyYWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNr
LCBzdHJ1Y3R1cmUsIGNhcHMpOworICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPmF0dGFjaFRy
YWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNrLCBjYXBz
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcGxheWJhY2tQaXBlbGluZS0+cmVhdHRhY2hUcmFjayhh
cHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgbWVkaWFUeXBl
KTsKKyAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5yZWF0dGFjaFRyYWNrKGFwcGVuZFBpcGVs
aW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNrLCBjYXBzKTsKIH0KIAogY29uc3Qg
c3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY29kZWNTZXQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
UGxheWJhY2tQaXBlbGluZS5jcHAKaW5kZXggNTMxOTlmNmZjM2Q1YzAzYjE5ZjM3ZDBiNmE3ZGFm
YmNmMDBlOGViMS4uOTgyMGMyMjM1ZjRhYWY3NTBiMWU2M2FlYWI0YWRjMTc4MjQ5MjRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Q
bGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAg
dm9pZCBQbGF5YmFja1BpcGVsaW5lOjpyZW1vdmVTb3VyY2VCdWZmZXIoUmVmUHRyPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+IHMKICAgICAgICAgd2ViS2l0TWVkaWFTcmNGcmVlU3RyZWFt
KG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCksIHN0cmVhbSk7CiB9CiAKLXZvaWQgUGxheWJhY2tQaXBl
bGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNv
dXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUs
IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlLCBHc3RDYXBzKiBjYXBzKQordm9pZCBQbGF5YmFja1Bp
cGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4g
c291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrUHJpdmF0
ZSwgR3N0Q2FwcyogY2FwcykKIHsKICAgICBXZWJLaXRNZWRpYVNyYyogd2ViS2l0TWVkaWFTcmMg
PSBtX3dlYktpdE1lZGlhU3JjLmdldCgpOwogCkBAIC0xNzcsMTMgKzE3NywxMyBAQCB2b2lkIFBs
YXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyPiBzb3VyY2VCdQogICAgIHN0cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJPZlBhZHMr
KzsKICAgICBHU1RfT0JKRUNUX1VOTE9DSyh3ZWJLaXRNZWRpYVNyYyk7CiAKLSAgICBjb25zdCBn
Y2hhciogbWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwotCisg
ICAgY29uc3QgZ2NoYXIqIG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKGNhcHMpOwog
ICAgIEdTVF9ERUJVR19PQkpFQ1Qod2ViS2l0TWVkaWFTcmMsICJDb25maWd1cmVkIHRyYWNrICVz
OiBhcHBzcmM9JXMsIHBhZElkPSV1LCBtZWRpYVR5cGU9JXMiLCB0cmFja1ByaXZhdGUtPmlkKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgR1NUX0VMRU1FTlRfTkFNRShzdHJlYW0tPmFwcHNyYyks
IHBhZElkLCBtZWRpYVR5cGUpOwogCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGFyc2VyQmluTmFt
ZShnX3N0cmR1cF9wcmludGYoInN0cmVhbXBhcnNlciV1IiwgcGFkSWQpKTsKLQotICAgIGlmICgh
Z19zdHJjbXAwKG1lZGlhVHlwZSwgInZpZGVvL3gtaDI2NCIpKSB7CisgICAgaWYgKGlzRW5jcnlw
dGVkQ2FwcyhjYXBzKSkgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHdlYktpdE1lZGlhU3Jj
LCAiUGxheWJhY2tQaXBlbGluZSwgd2l0aCBlbmNyeXB0ZWQgY29udGVudCB0aGUgYXBwcm9wcmlh
dGUgcGFyc2VyIHdpbGwgYmUgYXV0byBwbHVnZ2VkIGJ5IHRoZSBkZWNvZGViaW4gYWZ0ZXIgdGhl
IGRlY3J5cHRvciBpbiBwaXBlbGluZSEiKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWVk
aWFUeXBlLCAidmlkZW8veC1oMjY0IikpIHsKICAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBmaWx0
ZXJDYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoInZpZGVvL3gtaDI2NCIsICJh
bGlnbm1lbnQiLCBHX1RZUEVfU1RSSU5HLCAiYXUiLCBudWxscHRyKSk7CiAgICAgICAgIEdzdEVs
ZW1lbnQqIGNhcHNmaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImNhcHNmaWx0ZXIi
LCBudWxscHRyKTsKICAgICAgICAgZ19vYmplY3Rfc2V0KGNhcHNmaWx0ZXIsICJjYXBzIiwgZmls
dGVyQ2Fwcy5nZXQoKSwgbnVsbHB0cik7CkBAIC0yMTcsNiArMjE3LDcgQEAgdm9pZCBQbGF5YmFj
a1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gc291cmNlQnUKICAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChzdHJlYW0tPnBhcnNlciwg
Z3N0X2dob3N0X3BhZF9uZXcoInNyYyIsIHBhZC5nZXQoKSkpOwogICAgIH0gZWxzZSBpZiAoIWdf
c3RyY21wMChtZWRpYVR5cGUsICJhdWRpby9tcGVnIikpIHsKICAgICAgICAgZ2ludCBtcGVndmVy
c2lvbiA9IC0xOworICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dl
dF9zdHJ1Y3R1cmUoY2FwcywgMCk7CiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1
Y3R1cmUsICJtcGVndmVyc2lvbiIsICZtcGVndmVyc2lvbik7CiAKICAgICAgICAgR3N0RWxlbWVu
dCogcGFyc2VyID0gbnVsbHB0cjsKQEAgLTI3MiwxNyArMjczLDE3IEBAIHZvaWQgUGxheWJhY2tQ
aXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
IHNvdXJjZUJ1CiAgICAgaW50IHNpZ25hbCA9IC0xOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHdl
YktpdE1lZGlhU3JjKTsKLSAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJhdWRp
byIpKSB7CisgICAgaWYgKGlzQXVkaW9DYXBzKGNhcHMpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlw
ZSA9IEF1ZGlvOwogICAgICAgICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZBdWRpb1N0
cmVhbXMrKzsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX0FVRElPX0NIQU5HRUQ7CiAgICAgICAg
IHN0cmVhbS0+YXVkaW9UcmFjayA9IFJlZlB0cjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIq
Pih0cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgo
bWVkaWFUeXBlLCAidmlkZW8iKSkgeworICAgIH0gZWxzZSBpZiAoaXNWaWRlb0NhcHMoY2Fwcykp
IHsKICAgICAgICAgc3RyZWFtLT50eXBlID0gVmlkZW87CiAgICAgICAgIHN0cmVhbS0+cGFyZW50
LT5wcml2LT5udW1iZXJPZlZpZGVvU3RyZWFtcysrOwogICAgICAgICBzaWduYWwgPSBTSUdOQUxf
VklERU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNrID0gUmVmUHRyPFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQoKSkpOwotICAgIH0gZWxz
ZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0IikpIHsKKyAgICB9IGVsc2Ug
aWYgKGlzVGV4dENhcHMoY2FwcykpIHsKICAgICAgICAgc3RyZWFtLT50eXBlID0gVGV4dDsKICAg
ICAgICAgc3RyZWFtLT5wYXJlbnQtPnByaXYtPm51bWJlck9mVGV4dFN0cmVhbXMrKzsKICAgICAg
ICAgc2lnbmFsID0gU0lHTkFMX1RFWFRfQ0hBTkdFRDsKQEAgLTI5NSw3ICsyOTYsNyBAQCB2b2lk
IFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyPiBzb3VyY2VCdQogICAgICAgICBnX3NpZ25hbF9lbWl0KEdfT0JKRUNUKHN0cmVh
bS0+cGFyZW50KSwgd2ViS2l0TWVkaWFTcmNTaWduYWxzW3NpZ25hbF0sIDAsIG51bGxwdHIpOwog
fQogCi12b2lkIFBsYXliYWNrUGlwZWxpbmU6OnJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1By
aXZhdGVCYXNlPiB0cmFja1ByaXZhdGUsIGNvbnN0IGNoYXIqIG1lZGlhVHlwZSkKK3ZvaWQgUGxh
eWJhY2tQaXBlbGluZTo6cmVhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+IHRy
YWNrUHJpdmF0ZSwgR3N0Q2FwcyogY2FwcykKIHsKICAgICBHU1RfREVCVUcoIlJlLWF0dGFjaGlu
ZyB0cmFjayIpOwogCkBAIC0zMTMsMTUgKzMxNCwxNSBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6
OnJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJj
ZQogICAgIGludCBzaWduYWwgPSAtMTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyh3ZWJLaXRNZWRp
YVNyYyk7Ci0gICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAiYXVkaW8iKSkgewor
ICAgIGlmIChpc0F1ZGlvQ2FwcyhjYXBzKSkgewogICAgICAgICBBU1NFUlQoc3RyZWFtLT50eXBl
ID09IEF1ZGlvKTsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX0FVRElPX0NIQU5HRUQ7CiAgICAg
ICAgIHN0cmVhbS0+YXVkaW9UcmFjayA9IFJlZlB0cjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIqPih0cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVm
aXgobWVkaWFUeXBlLCAidmlkZW8iKSkgeworICAgIH0gZWxzZSBpZiAoaXNWaWRlb0NhcHMoY2Fw
cykpIHsKICAgICAgICAgQVNTRVJUKHN0cmVhbS0+dHlwZSA9PSBWaWRlbyk7CiAgICAgICAgIHNp
Z25hbCA9IFNJR05BTF9WSURFT19DSEFOR0VEOwogICAgICAgICBzdHJlYW0tPnZpZGVvVHJhY2sg
PSBSZWZQdHI8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+KHN0YXRpY19jYXN0
PFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKj4odHJhY2tQcml2YXRlLmdldCgp
KSk7Ci0gICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgInRleHQiKSkg
eworICAgIH0gZWxzZSBpZiAoaXNUZXh0Q2FwcyhjYXBzKSkgewogICAgICAgICBBU1NFUlQoc3Ry
ZWFtLT50eXBlID09IFRleHQpOwogICAgICAgICBzaWduYWwgPSBTSUdOQUxfVEVYVF9DSEFOR0VE
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmluZGV4IDY2NjFkNmEyZmY2NGNk
NmI4NWI5MTk3MDU0NzNkOTNjODhjMTY4OWIuLjdmNzJlNDdmYTc3OTE2MGU3ZGUwNGMyOGE1NTQ2
YWNjZmRiNjM1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCkBAIC01Nyw4
ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIGFk
ZFNvdXJjZUJ1ZmZlcihSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4pOwogICAg
IHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyPik7Ci0gICAgdm9pZCBhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiwgR3N0U3RydWN0dXJlKiwgR3N0Q2Fw
cyopOwotICAgIHZvaWQgcmVhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiwgY29uc3QgY2hhciopOworICAgIHZv
aWQgYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBSZWZQ
dHI8VHJhY2tQcml2YXRlQmFzZT4sIEdzdENhcHMqKTsKKyAgICB2b2lkIHJlYXR0YWNoVHJhY2so
UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBSZWZQdHI8VHJhY2tQcml2YXRl
QmFzZT4sIEdzdENhcHMqKTsKICAgICB2b2lkIG5vdGlmeUR1cmF0aW9uQ2hhbmdlZCgpOwogCiAg
ICAgLy8gRnJvbSBNZWRpYVNvdXJjZUdTdHJlYW1lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNjllZmMxYzEwNDkzZTAyNmY3
MGM0NDI3NDc0NTA4YjM2ZjBlZDBhNi4uMmY5NzQ4MjA5OTZjMWIwNmEwNThjYWY5YzkwYzM0MzZh
MjA0OTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTQ1MiwxOCArNDUyLDIwIEBAIGdib29sZWFuIHdlYktpdE1lZGlhU3Jj
UXVlcnlXaXRoUGFyZW50KEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHBhcmVudCwgR3N0UXVlcnkq
CiAKIHZvaWQgd2ViS2l0TWVkaWFTcmNVcGRhdGVQcmVzZW50YXRpb25TaXplKEdzdENhcHMqIGNh
cHMsIFN0cmVhbSogc3RyZWFtKQogewotICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKLSAgICBjb25zdCBnY2hhciogc3RydWN0dXJl
TmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLSAgICBHc3RWaWRlb0lu
Zm8gaW5mbzsKLQogICAgIEdTVF9PQkpFQ1RfTE9DSyhzdHJlYW0tPnBhcmVudCk7Ci0gICAgaWYg
KGdfc3RyX2hhc19wcmVmaXgoc3RydWN0dXJlTmFtZSwgInZpZGVvLyIpICYmIGdzdF92aWRlb19p
bmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpIHsKLSAgICAgICAgZmxvYXQgd2lkdGgsIGhlaWdo
dDsKIAotICAgICAgICAvLyBGSVhNRTogQ29ycmVjdD8uCi0gICAgICAgIHdpZHRoID0gaW5mby53
aWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gaW5mby5oZWlnaHQgKiAoKGZsb2F0KSBpbmZvLnBhcl9k
IC8gKGZsb2F0KSBpbmZvLnBhcl9uKTsKLSAgICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXpl
ID0gV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIGlmIChXZWJDb3JlOjpp
c1ZpZGVvQ2FwcyhjYXBzKSkgeworICAgICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OworICAgICAg
ICBXZWJDb3JlOjpJbnRTaXplIHNpemU7CisgICAgICAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsK
KyAgICAgICAgaW50IHBhck4sIHBhckQsIHN0cmlkZTsKKworICAgICAgICBpZiAoV2ViQ29yZTo6
Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoY2Fwcywgc2l6ZSwgZm9ybWF0LCBwYXJOLCBw
YXJELCBzdHJpZGUpKSB7CisgICAgICAgICAgICB3aWR0aCA9IHNpemUud2lkdGgoKTsKKyAgICAg
ICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0KCkgKiAoKGZsb2F0KSBwYXJEIC8gKGZsb2F0KSBw
YXJOKTsKKyAgICAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZs
b2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzdHJl
YW0tPnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332388</attachid>
            <date>2018-01-26 11:09:28 -0800</date>
            <delta_ts>2018-02-02 08:04:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180126200927.patch</filename>
            <type>text/plain</type>
            <size>28013</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uZGViZDFhMmQxMDc5ZWUzMDYzZGI0YWI2NDcyMzI3
OGUyOGEyNjQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIENhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gQ2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIENhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgQ2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIENhcHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldE1lZGlhVHlwZUZyb21DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZVZpZGVvQ2Fw
cyk6CisgICAgICAgIChXZWJDb3JlOjphcmVBdWRpb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6
YXJlVGV4dENhcHMpOgorICAgICAgICAoV2ViQ29yZTo6YXJlRW5jcnlwdGVkQ2Fwcyk6IEFkZCBh
IG5ldyBmdW5jdGlvbnMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBDYXBzIHByb3Blcmx5LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnBhcnNlRGVtdXhlclNy
Y1BhZENhcHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0
cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJN
ZWRpYURlc2NyaXB0aW9uOjpjb2RlYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJNZWRpYURlc2NyaXB0aW9uOjppc1ZpZGVvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzQXVkaW8gY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
dHJhY2tEZXRlY3RlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmF0dGFjaFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxpbmU6OnJl
YXR0YWNoVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
UGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0TWVk
aWFTcmNVcGRhdGVQcmVzZW50YXRpb25TaXplKTogUmVmYWN0b3Igc29tZSBwYXJ0cyBieSB1c2lu
ZyB0aGUgbmV3IGFkZGVkIGZ1bmN0aW9ucy4KKwogMjAxOC0wMS0xOSAgWWFjaW5lIEJhbmRvdSAg
PHlhY2luZS5iYW5kb3VfZXh0QHNvZnRhdGhvbWUuY29tPgogCiAgICAgICAgIFtFTUVdW0dTdHJl
YW1lcl0gQWRkIGEgbmV3IG1lc3NhZ2UgImRlY3J5cHQta2V5LW5lZWRlZCIgc2VuZCBmcm9tIHRo
ZSBkZWNyeXB0b3IgdG8gdGhlIGFwcGxpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0
aWVzLmNwcAppbmRleCA0NzYyYWU4ODU1YjhiMTc4YTRmYWJhNmJmODIyM2FmZTU3ZjY1ODhlLi4y
Mzc1ZWZlOWE3N2E2OGE5OTRlNzA1ZTNlNjM1NDZiMDJiNTU4NWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyVXRpbGl0aWVzLmNwcApAQCAtNTksMTkgKzU5LDY3IEBAIEdzdFBhZCogd2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqIHN0YXRpY1Bh
ZFRlbXBsCiAjaWYgRU5BQkxFKFZJREVPKQogYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9t
Q2FwcyhHc3RDYXBzKiBjYXBzLCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBHc3RWaWRlb0Zvcm1h
dCYgZm9ybWF0LCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSkKIHsKLSAgICBHc3RWaWRlb0luZm8gaW5m
bzsKKyAgICBpZiAoYXJlRW5jcnlwdGVkQ2FwcyhjYXBzKSkgeworICAgICAgICBpZiAoIWFyZVZp
ZGVvQ2FwcyhjYXBzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBHc3RT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7Cisg
ICAgICAgIGdpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworCisgICAgICAgIGZvcm1hdCA9IEdT
VF9WSURFT19GT1JNQVRfRU5DT0RFRDsKKyAgICAgICAgc3RyaWRlID0gMDsKKyAgICAgICAgZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKTsKKyAgICAgICAg
Z3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpOworICAg
ICAgICBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3Qt
cmF0aW8iLCAmcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgJnBpeGVsQXNwZWN0UmF0aW9EZW5v
bWluYXRvcik7CisgICAgICAgIHNpemUuc2V0V2lkdGgod2lkdGgpOworICAgICAgICBzaXplLnNl
dEhlaWdodChoZWlnaHQpOworCisgICAgfSBlbHNlIHsKKworICAgICAgICBHc3RWaWRlb0luZm8g
aW5mbzsKKyAgICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CisgICAgICAgIGlmICgh
Z3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8p
OworICAgICAgICBzaXplLnNldFdpZHRoKEdTVF9WSURFT19JTkZPX1dJRFRIKCZpbmZvKSk7Cisg
ICAgICAgIHNpemUuc2V0SGVpZ2h0KEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbykpOworICAg
ICAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmlu
Zm8pOworICAgICAgICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklERU9fSU5G
T19QQVJfRCgmaW5mbyk7CisgICAgICAgIHN0cmlkZSA9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NU
UklERSgmaW5mbywgMCk7CisgICAgfQogCi0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7
Ci0gICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZ2V0VmlkZW9SZXNv
bHV0aW9uRnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgZmxvYXQmIHdpZHRoLCBmbG9hdCYgaGVpZ2h0
KQoreworICAgIGdpbnQgbFdpZHRoID0gMCwgbEhlaWdodCA9IDA7CisgICAgZ2ludCBwaXhlbEFz
cGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3I7CisKKyAgICBp
ZiAoYXJlRW5jcnlwdGVkQ2FwcyhjYXBzKSkgeworICAgICAgICBpZiAoIWFyZVZpZGVvQ2Fwcyhj
YXBzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBHc3RTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisgICAgICAgIGdz
dF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZsV2lkdGgpOworICAgICAg
ICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmxIZWlnaHQpOwor
ICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3Bl
Y3QtcmF0aW8iLCAmcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgJnBpeGVsQXNwZWN0UmF0aW9E
ZW5vbWluYXRvcik7CisKKyAgICB9IGVsc2UgewogCi0gICAgZm9ybWF0ID0gR1NUX1ZJREVPX0lO
Rk9fRk9STUFUKCZpbmZvKTsKLSAgICBzaXplLnNldFdpZHRoKEdTVF9WSURFT19JTkZPX1dJRFRI
KCZpbmZvKSk7Ci0gICAgc2l6ZS5zZXRIZWlnaHQoR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZpbmZv
KSk7Ci0gICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9O
KCZpbmZvKTsKLSAgICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklERU9fSU5G
T19QQVJfRCgmaW5mbyk7Ci0gICAgc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURF
KCZpbmZvLCAwKTsKKyAgICAgICAgR3N0VmlkZW9JbmZvIGluZm87CisgICAgICAgIGdzdF92aWRl
b19pbmZvX2luaXQoJmluZm8pOworICAgICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmaW5mbywgY2FwcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgbFdp
ZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOworICAgICAgICBsSGVpZ2h0ID0gR1NU
X1ZJREVPX0lORk9fSEVJR0hUKCZpbmZvKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb051bWVy
YXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9OKCZpbmZvKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RS
YXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0QoJmluZm8pOworICAgIH0KKyAg
ICB3aWR0aCA9IGxXaWR0aDsKKyAgICBoZWlnaHQgPSBsSGVpZ2h0ICogKChmbG9hdCkgcGl4ZWxB
c3BlY3RSYXRpb051bWVyYXRvciAvIChmbG9hdCkgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTEzLDYgKzE2MSw2NyBAQCBHc3RCdWZmZXIq
IGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKICAg
ICByZXR1cm4gYnVmZmVyOwogfQogCitjb25zdCBjaGFyKiBnZXRNZWRpYVR5cGVGcm9tQ2FwcyhH
c3RDYXBzKiBjYXBzKQoreworICAgIEFTU0VSVChjYXBzKTsKKyAgICBHc3RTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisgICAgaWYgKCFzdHJ1
Y3R1cmUpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJjYXBzIGFyZSBlbXB0eSIpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJhcHBsaWNhdGlvbi94LWNlbmMi
KSkKKyAgICAgICAgcmV0dXJuIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJv
cmlnaW5hbC1tZWRpYS10eXBlIik7CisjZW5kaWYKKyAgICByZXR1cm4gZ3N0X3N0cnVjdHVyZV9n
ZXRfbmFtZShzdHJ1Y3R1cmUpOworfQorCitib29sIGFyZVZpZGVvQ2FwcyhHc3RDYXBzKiBjYXBz
KQoreworICAgIGNvbnN0IGNoYXIqIG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKGNh
cHMpOworICAgIGlmICghbWVkaWFUeXBlKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRv
IGdldCBNZWRpYVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlby8iKTsKK30KKworYm9vbCBhcmVB
dWRpb0NhcHMoR3N0Q2FwcyogY2FwcykKK3sKKyAgICBjb25zdCBjaGFyKiBtZWRpYVR5cGUgPSBn
ZXRNZWRpYVR5cGVGcm9tQ2FwcyhjYXBzKTsKKyAgICBpZiAoIW1lZGlhVHlwZSkgeworICAgICAg
ICBHU1RfRVJST1IoIkZhaWxlZCB0byBnZXQgTWVkaWFUeXBlIik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAiYXVk
aW8vIik7Cit9CisKK2Jvb2wgYXJlVGV4dENhcHMoR3N0Q2FwcyogY2FwcykKK3sKKyAgICBjb25z
dCBjaGFyKiBtZWRpYVR5cGUgPSBnZXRNZWRpYVR5cGVGcm9tQ2FwcyhjYXBzKTsKKyAgICBpZiAo
IW1lZGlhVHlwZSkgeworICAgICAgICBHU1RfRVJST1IoIkZhaWxlZCB0byBnZXQgTWVkaWFUeXBl
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdfc3RyX2hhc19w
cmVmaXgobWVkaWFUeXBlLCAidGV4dC8iKTsKK30KKworYm9vbCBhcmVFbmNyeXB0ZWRDYXBzKEdz
dENhcHMqIGNhcHMpCit7CisgICAgQVNTRVJUKGNhcHMpOworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0
dXJlKGNhcHMsIDApOworICAgIGlmICghc3RydWN0dXJlKSB7CisgICAgICAgIEdTVF9FUlJPUigi
Y2FwcyBhcmUgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJhcHBsaWNhdGlvbi94LWNlbmMi
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNhcHMpOworICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorfQorCiBjaGFyKiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihHc3RCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxH
c3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAppbmRl
eCBlMTY4NTgyMTFlMjk1OWU5Zjc0M2EzMzkyODkwZDExMTQwN2RmOGI3Li4zZGVjNWQzNGUwMWQ4
OGQxNTFmMDFjZjNjZGRhOTkzOTM5NTNiNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGll
cy5oCkBAIC01MywxMSArNTMsMTcgQEAgaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9u
KGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiBHc3RQYWQqIHdlYmtpdEdz
dEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKEdzdFN0YXRpY1BhZFRlbXBsYXRlKiwgY29uc3Qg
Z2NoYXIqIG5hbWUsIEdzdFBhZCogdGFyZ2V0KTsKICNpZiBFTkFCTEUoVklERU8pCiBib29sIGdl
dFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJDb3JlOjpJbnRTaXplJiwg
R3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4
ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7Citib29sIGdldFZpZGVvUmVz
b2x1dGlvbkZyb21DYXBzKEdzdENhcHMqLCBmbG9hdCYgd2lkdGgsIGZsb2F0JiBoZWlnaHQpOwog
Ym9vbCBnZXRTYW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiwgR3N0VmlkZW9JbmZvJik7CiAjZW5k
aWYKIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwogR3N0QnVmZmVyKiBj
cmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogY2hh
ciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKik7Citjb25zdCBjaGFyKiBnZXRN
ZWRpYVR5cGVGcm9tQ2FwcyhHc3RDYXBzKik7Citib29sIGFyZVZpZGVvQ2FwcyhHc3RDYXBzKik7
Citib29sIGFyZUF1ZGlvQ2FwcyhHc3RDYXBzKik7Citib29sIGFyZVRleHRDYXBzKEdzdENhcHMq
KTsKK2Jvb2wgYXJlRW5jcnlwdGVkQ2FwcyhHc3RDYXBzKik7CiB2b2lkIG1hcEdzdEJ1ZmZlcihH
c3RCdWZmZXIqLCB1aW50MzJfdCk7CiB2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwog
Ym9vbCBpbml0aWFsaXplR1N0cmVhbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCmluZGV4IGNlYmJmMmU3YmU1NjJmYWMxODBiMTRmZDc2NGI5YzljNTVkM2ZhYzEuLmQ3MGNl
ZDdjYTEwNGMwMTc4OTg2YmFjYTUyMTVlNzI3MzNhY2QwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJl
YW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lckVNRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgi
CkBAIC01ODIsNzQgKzU4MywzNiBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpwYXJzZURlbXV4ZXJT
cmNQYWRDYXBzKEdzdENhcHMqIGRlbXV4ZXJTcmNQYWRDYXBzKQogCiAgICAgbV9kZW11eGVyU3Jj
UGFkQ2FwcyA9IGFkb3B0R1JlZihkZW11eGVyU3JjUGFkQ2Fwcyk7CiAgICAgbV9zdHJlYW1UeXBl
ID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpVbmtub3duOwotCi0g
ICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1fZGVt
dXhlclNyY1BhZENhcHMuZ2V0KCksIDApOwotICAgIGJvb2wgc2l6ZUNvbmZpZ3VyZWQgPSBmYWxz
ZTsKLQotI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDUsIDMpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwbGlj
YXRpb24veC1jZW5jIikpIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChh
cmVFbmNyeXB0ZWRDYXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpKSB7CiAgICAgICAgIC8v
IEFueSBwcmV2aW91cyBkZWNyeXB0b3Igc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhl
IHBpcGVsaW5lIGJ5IGRpc2Nvbm5lY3RGcm9tQXBwU2lua0Zyb21TdHJlYW1pbmdUaHJlYWQoKQog
ICAgICAgICBBU1NFUlQoIW1fZGVjcnlwdG9yKTsKLQorICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQo
KSwgMCk7CiAgICAgICAgIG1fZGVjcnlwdG9yID0gR1N0cmVhbWVyRU1FVXRpbGl0aWVzOjpjcmVh
dGVEZWNyeXB0b3IoZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInByb3RlY3Rp
b24tc3lzdGVtIikpOwogICAgICAgICBpZiAoIW1fZGVjcnlwdG9yKSB7CiAgICAgICAgICAgICBH
U1RfRVJST1IoImRlY3J5cHRvciBub3QgZm91bmQgZm9yIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFU
LCBtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotCi0gICAgICAgIGNvbnN0IGdjaGFyKiBvcmlnaW5hbE1lZGlhVHlwZSA9IGdzdF9zdHJ1
Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJvcmlnaW5hbC1tZWRpYS10eXBlIik7Ci0KLSAg
ICAgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzQ29kZWMo
b3JpZ2luYWxNZWRpYVR5cGUpKSB7Ci0gICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBX
ZWJDb3JlOjpGbG9hdFNpemUoKTsKLSAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6
Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6SW52YWxpZDsKLSAgICAgICAgfSBlbHNl
IGlmIChnX3N0cl9oYXNfcHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAidmlkZW8vIikpIHsKLSAg
ICAgICAgICAgIGludCB3aWR0aCA9IDA7Ci0gICAgICAgICAgICBpbnQgaGVpZ2h0ID0gMDsKLSAg
ICAgICAgICAgIGZsb2F0IGZpbmFsSGVpZ2h0ID0gMDsKLQotICAgICAgICAgICAgaWYgKGdzdF9z
dHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgJiYgZ3N0X3N0cnVj
dHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpKSB7Ci0gICAgICAgICAg
ICAgICAgaW50IHJhdGlvTnVtZXJhdG9yID0gMTsKLSAgICAgICAgICAgICAgICBpbnQgcmF0aW9E
ZW5vbWluYXRvciA9IDE7Ci0KLSAgICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9mcmFj
dGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAmcmF0aW9OdW1lcmF0b3IsICZy
YXRpb0Rlbm9taW5hdG9yKTsKLSAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IGhlaWdodCAq
ICgoZmxvYXQpIHJhdGlvRGVub21pbmF0b3IgLyAoZmxvYXQpIHJhdGlvTnVtZXJhdG9yKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6
RmxvYXRTaXplKHdpZHRoLCBmaW5hbEhlaWdodCk7Ci0gICAgICAgICAgICBtX3N0cmVhbVR5cGUg
PSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlZpZGVvOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6Rmxv
YXRTaXplKCk7Ci0gICAgICAgICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChvcmlnaW5hbE1lZGlh
VHlwZSwgImF1ZGlvLyIpKQotICAgICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6
Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6QXVkaW87Ci0gICAgICAgICAgICBlbHNl
IGlmIChnX3N0cl9oYXNfcHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAidGV4dC8iKSkKLSAgICAg
ICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVH
U3RyZWFtZXI6OlRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAgc2l6ZUNvbmZpZ3VyZWQgPSB0cnVl
OwogICAgIH0KICNlbmRpZgotCi0gICAgaWYgKCFzaXplQ29uZmlndXJlZCkgewotICAgICAgICBj
b25zdCBjaGFyKiBzdHJ1Y3R1cmVOYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1
cmUpOwotICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKLQotICAgICAgICBpZiAoIU1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNDb2RlYyhzdHJ1Y3R1cmVOYW1lKSkgewor
ICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBlRnJvbUNhcHMo
bV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSk7CisgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0U6OnN1cHBvcnRzQ29kZWMob3JpZ2luYWxNZWRpYVR5cGUpKSB7CiAgICAgICAg
ICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKICAgICAgICAg
ICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1l
cjo6SW52YWxpZDsKLSAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVy
ZU5hbWUsICJ2aWRlby8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGRlbXV4
ZXJTcmNQYWRDYXBzKSkgewotICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGhlaWdodDsKLQotICAg
ICAgICAgICAgd2lkdGggPSBpbmZvLndpZHRoOwotICAgICAgICAgICAgaGVpZ2h0ID0gaW5mby5o
ZWlnaHQgKiAoKGZsb2F0KSBpbmZvLnBhcl9kIC8gKGZsb2F0KSBpbmZvLnBhcl9uKTsKLQorICAg
IH0gZWxzZSBpZiAoYXJlVmlkZW9DYXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpKSB7Cisg
ICAgICAgIGZsb2F0IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgIGlmIChnZXRWaWRlb1Jlc29sdXRp
b25Gcm9tQ2FwcyhtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpLCB3aWR0aCwgaGVpZ2h0KSkKICAg
ICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKLSAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNl
U3RyZWFtVHlwZUdTdHJlYW1lcjo6VmlkZW87Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgp
OwotICAgICAgICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoc3RydWN0dXJlTmFtZSwgImF1ZGlv
LyIpKQotICAgICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNl
U3RyZWFtVHlwZUdTdHJlYW1lcjo6QXVkaW87Ci0gICAgICAgICAgICBlbHNlIGlmIChnX3N0cl9o
YXNfcHJlZml4KHN0cnVjdHVyZU5hbWUsICJ0ZXh0LyIpKQotICAgICAgICAgICAgICAgIG1fc3Ry
ZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VGV4dDsK
LSAgICAgICAgfQorCisgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNl
U3RyZWFtVHlwZUdTdHJlYW1lcjo6VmlkZW87CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wcmVz
ZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CisgICAgICAgIGlmIChhcmVBdWRp
b0NhcHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpCisgICAgICAgICAgICBtX3N0cmVhbVR5
cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OkF1ZGlvOworICAg
ICAgICBlbHNlIGlmIChhcmVUZXh0Q2FwcyhtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpKSkKKyAg
ICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdT
dHJlYW1lcjo6VGV4dDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJl
YW1lck1lZGlhRGVzY3JpcHRpb24uY3BwCmluZGV4IDc3NmEwYmU5YjNiNDYzMzdlM2YyMTAwMTIw
ZGNhZGViZmE5MjQ3NDkuLjY4MjgzZDkzMjNjMzc4YTBmYTU1MDQyZmY1ODViYTY5N2NkYjE1ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNw
cApAQCAtMjAsNyArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR1N0
cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oIgotCisjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0ckdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSA8Z3N0L3Bi
dXRpbHMvcGJ1dGlscy5oPgpAQCAtMzMsMzUgKzMzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQXRvbWljU3RyaW5nIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjKCkgY29uc3QK
IHsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3RfcGJfdXRpbHNfZ2V0X2Nv
ZGVjX2Rlc2NyaXB0aW9uKG1fY2Fwcy5nZXQoKSkpOwotICAgIFN0cmluZyBjb2RlY05hbWUoZGVz
Y3JpcHRpb24uZ2V0KCkpOwotCi0gICAgLy8gUmVwb3J0ICJILjI2NCAoTWFpbiBQcm9maWxlKSIg
YW5kICJILjI2NCAoSGlnaCBQcm9maWxlKSIganVzdCBhcyAiSC4yNjQiIHRvIGFsbG93IGNoYW5n
ZXMgYmV0d2VlbiBib3RoIHZhcmlhbnRzCi0gICAgLy8gZ28gdW5ub3RpY2VkIHRvIHRoZSBTb3Vy
Y2VCdWZmZXIgbGF5ZXIuCi0gICAgaWYgKGNvZGVjTmFtZS5zdGFydHNXaXRoKCJILjI2NCIpKSB7
Ci0gICAgICAgIHNpemVfdCBicmFjZVN0YXJ0ID0gY29kZWNOYW1lLmZpbmQoIiAoIik7Ci0gICAg
ICAgIHNpemVfdCBicmFjZUVuZCA9IGNvZGVjTmFtZS5maW5kKCIpIik7Ci0gICAgICAgIGlmIChi
cmFjZVN0YXJ0ICE9IG5vdEZvdW5kICYmIGJyYWNlRW5kICE9IG5vdEZvdW5kKQotICAgICAgICAg
ICAgY29kZWNOYW1lLnJlbW92ZShicmFjZVN0YXJ0LCBicmFjZUVuZC1icmFjZVN0YXJ0KTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gY29kZWNOYW1lOworICAgIHJldHVybiBtX2NvZGVjTmFtZTsKIH0K
IAogYm9vbCBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjppc1ZpZGVvKCkgY29uc3QKIHsKLSAg
ICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9jYXBz
LmdldCgpLCAwKTsKLSAgICBjb25zdCBnY2hhciogbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25h
bWUoc3RydWN0dXJlKTsKLQotICAgIHJldHVybiBnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJ2aWRl
by8iKTsKKyAgICByZXR1cm4gYXJlVmlkZW9DYXBzKG1fY2Fwcy5nZXQoKSk7CiB9CiAKIGJvb2wg
R1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNBdWRpbygpIGNvbnN0CiB7Ci0gICAgR3N0U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1fY2Fwcy5nZXQoKSwg
MCk7Ci0gICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVj
dHVyZSk7Ci0KLSAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChuYW1lLCAiYXVkaW8vIik7Cisg
ICAgcmV0dXJuIGFyZUF1ZGlvQ2FwcyhtX2NhcHMuZ2V0KCkpOwogfQogCiBib29sIEdTdHJlYW1l
ck1lZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CkBAIC03MCw2ICs1Miw0MyBAQCBib29s
IEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitBdG9taWNTdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6ZXh0cmFj
dENvZGVjTmFtZSgpCit7CisgICAgR1JlZlB0cjxHc3RDYXBzPiBvcmlnaW5hbENhcCA9IG1fY2Fw
czsKKworICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKG9yaWdpbmFsQ2FwLmdldCgpKSkgeworICAg
ICAgICBvcmlnaW5hbENhcCA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG9yaWdpbmFsQ2FwLmdl
dCgpKSk7CisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0
cnVjdHVyZShvcmlnaW5hbENhcC5nZXQoKSwgMCk7CisKKyAgICAgICAgaWYgKCFnc3Rfc3RydWN0
dXJlX2hhc19maWVsZChzdHJ1Y3R1cmUsICJvcmlnaW5hbC1tZWRpYS10eXBlIikpCisgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfbmFtZShz
dHJ1Y3R1cmUsIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJvcmlnaW5hbC1t
ZWRpYS10eXBlIikpOworICAgICAgICAvLyBSZW1vdmUgdGhlIERSTSByZWxhdGVkIGZpZWxkcyBm
cm9tIHRoZSBjYXBzLgorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGdzdF9zdHJ1Y3R1cmVf
bl9maWVsZHMoc3RydWN0dXJlKTsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWVs
ZE5hbWUgPSBnc3Rfc3RydWN0dXJlX250aF9maWVsZF9uYW1lKHN0cnVjdHVyZSwgaik7CisKKyAg
ICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGZpZWxkTmFtZSwgInByb3RlY3Rpb24tc3lz
dGVtIikKKyAgICAgICAgICAgICAgICB8fCBnX3N0cl9oYXNfcHJlZml4KGZpZWxkTmFtZSwgIm9y
aWdpbmFsLW1lZGlhLXR5cGUiKSkKKyAgICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92
ZV9maWVsZChzdHJ1Y3R1cmUsIGZpZWxkTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3RfcGJfdXRpbHNfZ2V0X2NvZGVjX2Rlc2Ny
aXB0aW9uKG9yaWdpbmFsQ2FwLmdldCgpKSk7CisgICAgU3RyaW5nIGNvZGVjTmFtZShkZXNjcmlw
dGlvbi5nZXQoKSk7CisKKyAgICAvLyBSZXBvcnQgIkguMjY0IChNYWluIFByb2ZpbGUpIiBhbmQg
IkguMjY0IChIaWdoIFByb2ZpbGUpIiBqdXN0IGFzICJILjI2NCIgdG8gYWxsb3cgY2hhbmdlcyBi
ZXR3ZWVuIGJvdGggdmFyaWFudHMKKyAgICAvLyBnbyB1bm5vdGljZWQgdG8gdGhlIFNvdXJjZUJ1
ZmZlciBsYXllci4KKyAgICBpZiAoY29kZWNOYW1lLnN0YXJ0c1dpdGgoIkguMjY0IikpIHsKKyAg
ICAgICAgc2l6ZV90IGJyYWNlU3RhcnQgPSBjb2RlY05hbWUuZmluZCgiICgiKTsKKyAgICAgICAg
c2l6ZV90IGJyYWNlRW5kID0gY29kZWNOYW1lLmZpbmQoIikiKTsKKyAgICAgICAgaWYgKGJyYWNl
U3RhcnQgIT0gbm90Rm91bmQgJiYgYnJhY2VFbmQgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBj
b2RlY05hbWUucmVtb3ZlKGJyYWNlU3RhcnQsIGJyYWNlRW5kLWJyYWNlU3RhcnQpOworICAgIH0K
KworICAgIHJldHVybiBjb2RlY05hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAK
ICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1l
ck1lZGlhRGVzY3JpcHRpb24uaAppbmRleCA4NGUyNjNjYWFhN2FkMjQ3ODcwNWIwOTllMGQ4ZmVk
YjRlOWVhNDVhLi42MzVlYmM3YTI5M2E4ZmE4ZWFjNzZmMWIxNzdmNDZlMmU5N2MwZjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKIAogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00OCw5ICs0OSwxMiBAQCBwcml2YXRlOgogICAgICAgICA6IE1lZGlh
RGVzY3JpcHRpb24oKQogICAgICAgICAsIG1fY2FwcyhjYXBzKQogICAgIHsKKyAgICAgICAgbV9j
b2RlY05hbWUgPSBleHRyYWN0Q29kZWNOYW1lKCk7CiAgICAgfQogCisgICAgQXRvbWljU3RyaW5n
IGV4dHJhY3RDb2RlY05hbWUoKTsKICAgICBHUmVmUHRyPEdzdENhcHM+IG1fY2FwczsKKyAgICBB
dG9taWNTdHJpbmcgbV9jb2RlY05hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCmluZGV4IGUwN2VjNTk2NzQ4NzdjYjI4ZTYxZTE2MGYyOWQzOTUzOWFiYmZhNzYuLjZl
OGE1Zjk4YjhjYWZhOGQ0NzA4MjYxMTNhNzNkNjY4YzllNGY2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTcz
OSwyMyArNzM5LDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp0cmFj
a0RldGVjdGVkKFJlZlB0cjxBcHBlbmRQaXBlbGluZT4gYXBwZW5kCiAgICAgQVNTRVJUKGNhcHMp
OwogICAgIEdTVF9ERUJVRygidHJhY2sgSUQ6ICVzLCBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwg
bmV3VHJhY2stPmlkKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjYXBzKTsKIAotICAgIEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsK
LSAgICBjb25zdCBnY2hhciogbWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1
Y3R1cmUpOwotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgaWYgKGdfc3RyX2hhc19wcmVm
aXgobWVkaWFUeXBlLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZv
LCBjYXBzKSkgeworICAgIGlmIChhcmVWaWRlb0NhcHMoY2FwcykpIHsKICAgICAgICAgZmxvYXQg
d2lkdGgsIGhlaWdodDsKLQotICAgICAgICB3aWR0aCA9IGluZm8ud2lkdGg7Ci0gICAgICAgIGhl
aWdodCA9IGluZm8uaGVpZ2h0ICogKChmbG9hdCkgaW5mby5wYXJfZCAvIChmbG9hdCkgaW5mby5w
YXJfbik7Ci0gICAgICAgIG1fdmlkZW9TaXplLnNldFdpZHRoKHdpZHRoKTsKLSAgICAgICAgbV92
aWRlb1NpemUuc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgICAgIGlmIChnZXRWaWRlb1Jlc29sdXRp
b25Gcm9tQ2FwcyhjYXBzLCB3aWR0aCwgaGVpZ2h0KSkgeworICAgICAgICAgICAgbV92aWRlb1Np
emUuc2V0V2lkdGgod2lkdGgpOworICAgICAgICAgICAgbV92aWRlb1NpemUuc2V0SGVpZ2h0KGhl
aWdodCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZmlyc3RUcmFja0RldGVjdGVkKQot
ICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPmF0dGFjaFRyYWNrKGFwcGVuZFBpcGVsaW5lLT5z
b3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNrLCBzdHJ1Y3R1cmUsIGNhcHMpOworICAgICAg
ICBtX3BsYXliYWNrUGlwZWxpbmUtPmF0dGFjaFRyYWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VC
dWZmZXJQcml2YXRlKCksIG5ld1RyYWNrLCBjYXBzKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGxh
eWJhY2tQaXBlbGluZS0+cmVhdHRhY2hUcmFjayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVy
UHJpdmF0ZSgpLCBuZXdUcmFjaywgbWVkaWFUeXBlKTsKKyAgICAgICAgbV9wbGF5YmFja1BpcGVs
aW5lLT5yZWF0dGFjaFRyYWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCks
IG5ld1RyYWNrLCBjYXBzKTsKIH0KIAogY29uc3Qgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5n
PiYgY29kZWNTZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKaW5kZXgg
NTMxOTlmNmZjM2Q1YzAzYjE5ZjM3ZDBiNmE3ZGFmYmNmMDBlOGViMS4uYzZjZDg1ZGNlMjZjMzA3
YTMzNDZjMmM5N2E3YmY4NmVmMTRkZTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlw
ZWxpbmUuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpyZW1v
dmVTb3VyY2VCdWZmZXIoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHMKICAg
ICAgICAgd2ViS2l0TWVkaWFTcmNGcmVlU3RyZWFtKG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCksIHN0
cmVhbSk7CiB9CiAKLXZvaWQgUGxheWJhY2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxU
cmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUsIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlLCBH
c3RDYXBzKiBjYXBzKQordm9pZCBQbGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRy
PFRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrUHJpdmF0ZSwgR3N0Q2FwcyogY2FwcykKIHsKICAgICBX
ZWJLaXRNZWRpYVNyYyogd2ViS2l0TWVkaWFTcmMgPSBtX3dlYktpdE1lZGlhU3JjLmdldCgpOwog
CkBAIC0xNzcsOCArMTc3LDcgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnUKICAgICBzdHJlYW0t
PnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZQYWRzKys7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0sod2Vi
S2l0TWVkaWFTcmMpOwogCi0gICAgY29uc3QgZ2NoYXIqIG1lZGlhVHlwZSA9IGdzdF9zdHJ1Y3R1
cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLQorICAgIGNvbnN0IGNoYXIqIG1lZGlhVHlwZSA9IGdl
dE1lZGlhVHlwZUZyb21DYXBzKGNhcHMpOwogICAgIEdTVF9ERUJVR19PQkpFQ1Qod2ViS2l0TWVk
aWFTcmMsICJDb25maWd1cmVkIHRyYWNrICVzOiBhcHBzcmM9JXMsIHBhZElkPSV1LCBtZWRpYVR5
cGU9JXMiLCB0cmFja1ByaXZhdGUtPmlkKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgR1NUX0VM
RU1FTlRfTkFNRShzdHJlYW0tPmFwcHNyYyksIHBhZElkLCBtZWRpYVR5cGUpOwogCiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gcGFyc2VyQmluTmFtZShnX3N0cmR1cF9wcmludGYoInN0cmVhbXBhcnNl
ciV1IiwgcGFkSWQpKTsKQEAgLTIxNyw2ICsyMTYsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6
OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VC
dQogICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKHN0cmVhbS0+cGFyc2VyLCBnc3RfZ2hvc3Rf
cGFkX25ldygic3JjIiwgcGFkLmdldCgpKSk7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1l
ZGlhVHlwZSwgImF1ZGlvL21wZWciKSkgewogICAgICAgICBnaW50IG1wZWd2ZXJzaW9uID0gLTE7
CisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVy
ZShjYXBzLCAwKTsKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIm1w
ZWd2ZXJzaW9uIiwgJm1wZWd2ZXJzaW9uKTsKIAogICAgICAgICBHc3RFbGVtZW50KiBwYXJzZXIg
PSBudWxscHRyOwpAQCAtMjcyLDE3ICsyNzIsMTcgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjph
dHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnUK
ICAgICBpbnQgc2lnbmFsID0gLTE7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0sod2ViS2l0TWVkaWFT
cmMpOwotICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgImF1ZGlvIikpIHsKKyAg
ICBpZiAoYXJlQXVkaW9DYXBzKGNhcHMpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IEF1ZGlv
OwogICAgICAgICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZBdWRpb1N0cmVhbXMrKzsK
ICAgICAgICAgc2lnbmFsID0gU0lHTkFMX0FVRElPX0NIQU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+
YXVkaW9UcmFjayA9IFJlZlB0cjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4o
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIqPih0cmFja1By
aXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBl
LCAidmlkZW8iKSkgeworICAgIH0gZWxzZSBpZiAoYXJlVmlkZW9DYXBzKGNhcHMpKSB7CiAgICAg
ICAgIHN0cmVhbS0+dHlwZSA9IFZpZGVvOwogICAgICAgICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+
bnVtYmVyT2ZWaWRlb1N0cmVhbXMrKzsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX1ZJREVPX0NI
QU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+dmlkZW9UcmFjayA9IFJlZlB0cjxXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIqPih0cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdf
c3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidGV4dCIpKSB7CisgICAgfSBlbHNlIGlmIChhcmVU
ZXh0Q2FwcyhjYXBzKSkgewogICAgICAgICBzdHJlYW0tPnR5cGUgPSBUZXh0OwogICAgICAgICBz
dHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZUZXh0U3RyZWFtcysrOwogICAgICAgICBzaWdu
YWwgPSBTSUdOQUxfVEVYVF9DSEFOR0VEOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgUGxheWJh
Y2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI+IHNvdXJjZUJ1CiAgICAgICAgIGdfc2lnbmFsX2VtaXQoR19PQkpFQ1Qoc3RyZWFtLT5wYXJl
bnQpLCB3ZWJLaXRNZWRpYVNyY1NpZ25hbHNbc2lnbmFsXSwgMCwgbnVsbHB0cik7CiB9CiAKLXZv
aWQgUGxheWJhY2tQaXBlbGluZTo6cmVhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJh
c2U+IHRyYWNrUHJpdmF0ZSwgY29uc3QgY2hhciogbWVkaWFUeXBlKQordm9pZCBQbGF5YmFja1Bp
cGVsaW5lOjpyZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
PiBzb3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4gdHJhY2tQcml2
YXRlLCBHc3RDYXBzKiBjYXBzKQogewogICAgIEdTVF9ERUJVRygiUmUtYXR0YWNoaW5nIHRyYWNr
Iik7CiAKQEAgLTMxMywxNSArMzEzLDE1IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6cmVhdHRh
Y2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlCiAgICAg
aW50IHNpZ25hbCA9IC0xOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHdlYktpdE1lZGlhU3JjKTsK
LSAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJhdWRpbyIpKSB7CisgICAgaWYg
KGFyZUF1ZGlvQ2FwcyhjYXBzKSkgewogICAgICAgICBBU1NFUlQoc3RyZWFtLT50eXBlID09IEF1
ZGlvKTsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX0FVRElPX0NIQU5HRUQ7CiAgICAgICAgIHN0
cmVhbS0+YXVkaW9UcmFjayA9IFJlZlB0cjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIqPih0
cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVk
aWFUeXBlLCAidmlkZW8iKSkgeworICAgIH0gZWxzZSBpZiAoYXJlVmlkZW9DYXBzKGNhcHMpKSB7
CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gVmlkZW8pOwogICAgICAgICBzaWduYWwg
PSBTSUdOQUxfVklERU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNrID0gUmVm
UHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2FzdDxXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQoKSkpOwot
ICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0IikpIHsKKyAg
ICB9IGVsc2UgaWYgKGFyZVRleHRDYXBzKGNhcHMpKSB7CiAgICAgICAgIEFTU0VSVChzdHJlYW0t
PnR5cGUgPT0gVGV4dCk7CiAgICAgICAgIHNpZ25hbCA9IFNJR05BTF9URVhUX0NIQU5HRUQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvUGxheWJhY2tQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKaW5kZXggNjY2MWQ2YTJmZjY0Y2Q2Yjg1
YjkxOTcwNTQ3M2Q5M2M4OGMxNjg5Yi4uN2Y3MmU0N2ZhNzc5MTYwZTdkZTA0YzI4YTU1NDZhY2Nm
ZGI2MzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKQEAgLTU3LDggKzU3
LDggQEAgcHVibGljOgogCiAgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgYWRkU291
cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPik7CiAgICAgdm9p
ZCByZW1vdmVTb3VyY2VCdWZmZXIoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
KTsKLSAgICB2b2lkIGF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+LCBHc3RTdHJ1Y3R1cmUqLCBHc3RDYXBzKik7
Ci0gICAgdm9pZCByZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+LCBjb25zdCBjaGFyKik7CisgICAgdm9pZCBh
dHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIFJlZlB0cjxU
cmFja1ByaXZhdGVCYXNlPiwgR3N0Q2FwcyopOworICAgIHZvaWQgcmVhdHRhY2hUcmFjayhSZWZQ
dHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNl
PiwgR3N0Q2FwcyopOwogICAgIHZvaWQgbm90aWZ5RHVyYXRpb25DaGFuZ2VkKCk7CiAKICAgICAv
LyBGcm9tIE1lZGlhU291cmNlR1N0cmVhbWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dl
YktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA2OWVmYzFjMTA0OTNlMDI2ZjcwYzQ0
Mjc0NzQ1MDhiMzZmMGVkMGE2Li4wOTYzOTYwMTY5OGE4NWE1ZjcxNDJiNzJjNzk0NTZhMmQwOWNk
ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNDUyLDE4ICs0NTIsMTQgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNRdWVy
eVdpdGhQYXJlbnQoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogcGFyZW50LCBHc3RRdWVyeSoKIAog
dm9pZCB3ZWJLaXRNZWRpYVNyY1VwZGF0ZVByZXNlbnRhdGlvblNpemUoR3N0Q2FwcyogY2Fwcywg
U3RyZWFtKiBzdHJlYW0pCiB7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fw
c19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotICAgIGNvbnN0IGdjaGFyKiBzdHJ1Y3R1cmVOYW1l
ID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwotICAgIEdzdFZpZGVvSW5mbyBp
bmZvOwotCiAgICAgR1NUX09CSkVDVF9MT0NLKHN0cmVhbS0+cGFyZW50KTsKLSAgICBpZiAoZ19z
dHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1lLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9f
ZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkgeworICAgIGlmIChXZWJDb3JlOjphcmVWaWRlb0NhcHMo
Y2FwcykpIHsKICAgICAgICAgZmxvYXQgd2lkdGgsIGhlaWdodDsKIAotICAgICAgICAvLyBGSVhN
RTogQ29ycmVjdD8uCi0gICAgICAgIHdpZHRoID0gaW5mby53aWR0aDsKLSAgICAgICAgaGVpZ2h0
ID0gaW5mby5oZWlnaHQgKiAoKGZsb2F0KSBpbmZvLnBhcl9kIC8gKGZsb2F0KSBpbmZvLnBhcl9u
KTsKLSAgICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXpl
KHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAoV2ViQ29yZTo6Z2V0VmlkZW9SZXNvbHV0aW9u
RnJvbUNhcHMoY2Fwcywgd2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICBzdHJlYW0tPnByZXNl
bnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZs
b2F0U2l6ZSgpOwogICAgIH0gZWxzZQogICAgICAgICBzdHJlYW0tPnByZXNlbnRhdGlvblNpemUg
PSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332968</attachid>
            <date>2018-02-02 08:04:46 -0800</date>
            <delta_ts>2018-02-02 11:14:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180202170445.patch</filename>
            <type>text/plain</type>
            <size>28177</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uZGViZDFhMmQxMDc5ZWUzMDYzZGI0YWI2NDcyMzI3
OGUyOGEyNjQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIENhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gQ2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIENhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgQ2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIENhcHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldE1lZGlhVHlwZUZyb21DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZVZpZGVvQ2Fw
cyk6CisgICAgICAgIChXZWJDb3JlOjphcmVBdWRpb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6
YXJlVGV4dENhcHMpOgorICAgICAgICAoV2ViQ29yZTo6YXJlRW5jcnlwdGVkQ2Fwcyk6IEFkZCBh
IG5ldyBmdW5jdGlvbnMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBDYXBzIHByb3Blcmx5LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnBhcnNlRGVtdXhlclNy
Y1BhZENhcHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0
cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJN
ZWRpYURlc2NyaXB0aW9uOjpjb2RlYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJNZWRpYURlc2NyaXB0aW9uOjppc1ZpZGVvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzQXVkaW8gY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
dHJhY2tEZXRlY3RlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmF0dGFjaFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxpbmU6OnJl
YXR0YWNoVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
UGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0TWVk
aWFTcmNVcGRhdGVQcmVzZW50YXRpb25TaXplKTogUmVmYWN0b3Igc29tZSBwYXJ0cyBieSB1c2lu
ZyB0aGUgbmV3IGFkZGVkIGZ1bmN0aW9ucy4KKwogMjAxOC0wMS0xOSAgWWFjaW5lIEJhbmRvdSAg
PHlhY2luZS5iYW5kb3VfZXh0QHNvZnRhdGhvbWUuY29tPgogCiAgICAgICAgIFtFTUVdW0dTdHJl
YW1lcl0gQWRkIGEgbmV3IG1lc3NhZ2UgImRlY3J5cHQta2V5LW5lZWRlZCIgc2VuZCBmcm9tIHRo
ZSBkZWNyeXB0b3IgdG8gdGhlIGFwcGxpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0
aWVzLmNwcAppbmRleCA0NzYyYWU4ODU1YjhiMTc4YTRmYWJhNmJmODIyM2FmZTU3ZjY1ODhlLi5h
MjhkMDYyYmU4NjA4NzIwODUwYTdiMzE0ZDQ0YTViNGUxMTJhYjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyVXRpbGl0aWVzLmNwcApAQCAtNTksMTkgKzU5LDcyIEBAIEdzdFBhZCogd2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqIHN0YXRpY1Bh
ZFRlbXBsCiAjaWYgRU5BQkxFKFZJREVPKQogYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9t
Q2FwcyhHc3RDYXBzKiBjYXBzLCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBHc3RWaWRlb0Zvcm1h
dCYgZm9ybWF0LCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSkKIHsKLSAgICBHc3RWaWRlb0luZm8gaW5m
bzsKKyAgICBpZiAoIWFyZVZpZGVvQ2FwcyhjYXBzKSkgeworICAgICAgICBHU1RfRVJST1IoIkZh
aWxlZCB0byBnZXQgdGhlIHZpZGVvIHNpemUgYW5kIGZvcmFtdCwgdGhleSBhcmUgbm90IGEgdmlk
ZW8gY2FwcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGFyZUVu
Y3J5cHRlZENhcHMoY2FwcykpIHsKKworICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisgICAgICAgIGdpbnQgd2lkdGggPSAw
LCBoZWlnaHQgPSAwOworCisgICAgICAgIGZvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfRU5DT0RF
RDsKKyAgICAgICAgc3RyaWRlID0gMDsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0
cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50
KHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpOworICAgICAgICBnc3Rfc3RydWN0dXJlX2dl
dF9mcmFjdGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAmcGl4ZWxBc3BlY3RS
YXRpb051bWVyYXRvciwgJnBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvcik7CisgICAgICAgIHNp
emUuc2V0V2lkdGgod2lkdGgpOworICAgICAgICBzaXplLnNldEhlaWdodChoZWlnaHQpOworICAg
IH0gZWxzZSB7CisKKyAgICAgICAgR3N0VmlkZW9JbmZvIGluZm87CisgICAgICAgIGdzdF92aWRl
b19pbmZvX2luaXQoJmluZm8pOworICAgICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmaW5mbywgY2FwcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9y
bWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUKCZpbmZvKTsKKyAgICAgICAgc2l6ZS5zZXRXaWR0
aChHU1RfVklERU9fSU5GT19XSURUSCgmaW5mbykpOworICAgICAgICBzaXplLnNldEhlaWdodChH
U1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb051
bWVyYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9OKCZpbmZvKTsKKyAgICAgICAgcGl4ZWxBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0QoJmluZm8pOworICAgICAg
ICBzdHJpZGUgPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7
Ci0gICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQorYm9vbCBn
ZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhHc3RDYXBzKiBjYXBzLCBmbG9hdCYgd2lkdGgsIGZs
b2F0JiBoZWlnaHQpCit7CisgICAgZ2ludCBsV2lkdGggPSAwLCBsSGVpZ2h0ID0gMDsKKyAgICBn
aW50IHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgPSAxLCBwaXhlbEFzcGVjdFJhdGlvRGVub21p
bmF0b3IgPSAxOworCisgICAgaWYgKCFhcmVWaWRlb0NhcHMoY2FwcykpIHsKKyAgICAgICAgR1NU
X0VSUk9SKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0aW9uLCB0aGV5IGFyZSBub3Qg
YSB2aWRlbyBjYXBzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBmb3Jt
YXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8pOwotICAgIHNpemUuc2V0V2lkdGgoR1NU
X1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKLSAgICBzaXplLnNldEhlaWdodChHU1RfVklERU9f
SU5GT19IRUlHSFQoJmluZm8pKTsKLSAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NU
X1ZJREVPX0lORk9fUEFSX04oJmluZm8pOwotICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRv
ciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsKLSAgICBzdHJpZGUgPSBHU1RfVklERU9f
SU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKGNh
cHMpKSB7CiAKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRf
c3RydWN0dXJlKGNhcHMsIDApOworICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0
dXJlLCAid2lkdGgiLCAmbFdpZHRoKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0
cnVjdHVyZSwgImhlaWdodCIsICZsSGVpZ2h0KTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRf
ZnJhY3Rpb24oc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgJnBpeGVsQXNwZWN0UmF0
aW9OdW1lcmF0b3IsICZwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IpOworCisgICAgfSBlbHNl
IHsKKworICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgICAgICAgZ3N0X3ZpZGVvX2luZm9f
aW5pdCgmaW5mbyk7CisgICAgICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZv
LCBjYXBzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBsV2lkdGggPSBH
U1RfVklERU9fSU5GT19XSURUSCgmaW5mbyk7CisgICAgICAgIGxIZWlnaHQgPSBHU1RfVklERU9f
SU5GT19IRUlHSFQoJmluZm8pOworICAgICAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0g
R1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOworICAgICAgICBwaXhlbEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfRCgmaW5mbyk7CisgICAgfQorICAgIHdpZHRo
ID0gbFdpZHRoOworICAgIGhlaWdodCA9IGxIZWlnaHQgKiAoKGZsb2F0KSBwaXhlbEFzcGVjdFJh
dGlvTnVtZXJhdG9yIC8gKGZsb2F0KSBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMTMsNiArMTY2LDY3IEBAIEdzdEJ1ZmZlciogY3JlYXRl
R3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJldHVy
biBidWZmZXI7CiB9CiAKK2NvbnN0IGNoYXIqIGdldE1lZGlhVHlwZUZyb21DYXBzKEdzdENhcHMq
IGNhcHMpCit7CisgICAgQVNTRVJUKGNhcHMpOworICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkg
eworICAgICAgICBHU1RfRVJST1IoImNhcHMgYXJlIGVtcHR5Iik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChnc3Rf
c3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcGxpY2F0aW9uL3gtY2VuYyIpKQorICAg
ICAgICByZXR1cm4gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgIm9yaWdpbmFs
LW1lZGlhLXR5cGUiKTsKKyNlbmRpZgorICAgIHJldHVybiBnc3Rfc3RydWN0dXJlX2dldF9uYW1l
KHN0cnVjdHVyZSk7Cit9CisKK2Jvb2wgYXJlVmlkZW9DYXBzKEdzdENhcHMqIGNhcHMpCit7Cisg
ICAgY29uc3QgY2hhciogbWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBlRnJvbUNhcHMoY2Fwcyk7Cisg
ICAgaWYgKCFtZWRpYVR5cGUpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IE1l
ZGlhVHlwZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBnX3N0
cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgInZpZGVvLyIpOworfQorCitib29sIGFyZUF1ZGlvQ2Fw
cyhHc3RDYXBzKiBjYXBzKQoreworICAgIGNvbnN0IGNoYXIqIG1lZGlhVHlwZSA9IGdldE1lZGlh
VHlwZUZyb21DYXBzKGNhcHMpOworICAgIGlmICghbWVkaWFUeXBlKSB7CisgICAgICAgIEdTVF9F
UlJPUigiRmFpbGVkIHRvIGdldCBNZWRpYVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJhdWRpby8iKTsK
K30KKworYm9vbCBhcmVUZXh0Q2FwcyhHc3RDYXBzKiBjYXBzKQoreworICAgIGNvbnN0IGNoYXIq
IG1lZGlhVHlwZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKGNhcHMpOworICAgIGlmICghbWVkaWFU
eXBlKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGdldCBNZWRpYVR5cGUiKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeCht
ZWRpYVR5cGUsICJ0ZXh0LyIpOworfQorCitib29sIGFyZUVuY3J5cHRlZENhcHMoR3N0Q2Fwcyog
Y2FwcykKK3sKKyAgICBBU1NFUlQoY2Fwcyk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2Fw
cywgMCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJjYXBzIGFy
ZSBlbXB0eSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBnc3Rf
c3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcGxpY2F0aW9uL3gtY2VuYyIpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oY2Fwcyk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKIGNoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQogewog
ICAgIEdzdE1pbmlPYmplY3QqIG1pbmlPYmplY3QgPSByZWludGVycHJldF9jYXN0PEdzdE1pbmlP
YmplY3QqPihidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCmluZGV4IGUxNjg1
ODIxMWUyOTU5ZTlmNzQzYTMzOTI4OTBkMTExNDA3ZGY4YjcuLjNkZWM1ZDM0ZTAxZDg4ZDE1MWYw
MWNmM2NkZGE5OTM5Mzk1M2I0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKQEAg
LTUzLDExICs1MywxNyBAQCBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQg
bWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIEdzdFBhZCogd2Via2l0R3N0R2hvc3RQ
YWRGcm9tU3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqLCBjb25zdCBnY2hhciog
bmFtZSwgR3N0UGFkKiB0YXJnZXQpOwogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgZ2V0VmlkZW9T
aXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyosIFdlYkNvcmU6OkludFNpemUmLCBHc3RWaWRl
b0Zvcm1hdCYsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVj
dFJhdGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKTsKK2Jvb2wgZ2V0VmlkZW9SZXNvbHV0aW9u
RnJvbUNhcHMoR3N0Q2FwcyosIGZsb2F0JiB3aWR0aCwgZmxvYXQmIGhlaWdodCk7CiBib29sIGdl
dFNhbXBsZVZpZGVvSW5mbyhHc3RTYW1wbGUqLCBHc3RWaWRlb0luZm8mKTsKICNlbmRpZgogR3N0
QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKik7CiBHc3RCdWZmZXIqIGNyZWF0ZUdz
dEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiBjaGFyKiBnZXRH
c3RCdWZmZXJEYXRhUG9pbnRlcihHc3RCdWZmZXIqKTsKK2NvbnN0IGNoYXIqIGdldE1lZGlhVHlw
ZUZyb21DYXBzKEdzdENhcHMqKTsKK2Jvb2wgYXJlVmlkZW9DYXBzKEdzdENhcHMqKTsKK2Jvb2wg
YXJlQXVkaW9DYXBzKEdzdENhcHMqKTsKK2Jvb2wgYXJlVGV4dENhcHMoR3N0Q2FwcyopOworYm9v
bCBhcmVFbmNyeXB0ZWRDYXBzKEdzdENhcHMqKTsKIHZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZl
ciosIHVpbnQzMl90KTsKIHZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7CiBib29sIGlu
aXRpYWxpemVHU3RyZWFtZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5k
ZXggY2ViYmYyZTdiZTU2MmZhYzE4MGIxNGZkNzY0YjljOWM1NWQzZmFjMS4uZDcwY2VkN2NhMTA0
YzAxNzg5ODZiYWNhNTIxNWU3MjczM2FjZDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVy
TWVkaWFEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKQEAgLTU4
Miw3NCArNTgzLDM2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OnBhcnNlRGVtdXhlclNyY1BhZENh
cHMoR3N0Q2FwcyogZGVtdXhlclNyY1BhZENhcHMpCiAKICAgICBtX2RlbXV4ZXJTcmNQYWRDYXBz
ID0gYWRvcHRHUmVmKGRlbXV4ZXJTcmNQYWRDYXBzKTsKICAgICBtX3N0cmVhbVR5cGUgPSBXZWJD
b3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlVua25vd247Ci0KLSAgICBHc3RT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9kZW11eGVyU3Jj
UGFkQ2Fwcy5nZXQoKSwgMCk7Ci0gICAgYm9vbCBzaXplQ29uZmlndXJlZCA9IGZhbHNlOwotCi0j
aWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgNSwgMykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
LSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJhcHBsaWNhdGlvbi94
LWNlbmMiKSkgeworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGFyZUVuY3J5
cHRlZENhcHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpIHsKICAgICAgICAgLy8gQW55IHBy
ZXZpb3VzIGRlY3J5cHRvciBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcGlwZWxp
bmUgYnkgZGlzY29ubmVjdEZyb21BcHBTaW5rRnJvbVN0cmVhbWluZ1RocmVhZCgpCiAgICAgICAg
IEFTU0VSVCghbV9kZWNyeXB0b3IpOwotCisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpLCAwKTsK
ICAgICAgICAgbV9kZWNyeXB0b3IgPSBHU3RyZWFtZXJFTUVVdGlsaXRpZXM6OmNyZWF0ZURlY3J5
cHRvcihnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAicHJvdGVjdGlvbi1zeXN0
ZW0iKSk7CiAgICAgICAgIGlmICghbV9kZWNyeXB0b3IpIHsKICAgICAgICAgICAgIEdTVF9FUlJP
UigiZGVjcnlwdG9yIG5vdCBmb3VuZCBmb3IgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIG1fZGVt
dXhlclNyY1BhZENhcHMuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0K
LSAgICAgICAgY29uc3QgZ2NoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9n
ZXRfc3RyaW5nKHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKTsKLQotICAgICAgICBp
ZiAoIU1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNDb2RlYyhvcmlnaW5h
bE1lZGlhVHlwZSkpIHsKLSAgICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6
OkZsb2F0U2l6ZSgpOwotICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFT
b3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpJbnZhbGlkOwotICAgICAgICB9IGVsc2UgaWYgKGdf
c3RyX2hhc19wcmVmaXgob3JpZ2luYWxNZWRpYVR5cGUsICJ2aWRlby8iKSkgewotICAgICAgICAg
ICAgaW50IHdpZHRoID0gMDsKLSAgICAgICAgICAgIGludCBoZWlnaHQgPSAwOwotICAgICAgICAg
ICAgZmxvYXQgZmluYWxIZWlnaHQgPSAwOwotCi0gICAgICAgICAgICBpZiAoZ3N0X3N0cnVjdHVy
ZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKSAmJiBnc3Rfc3RydWN0dXJlX2dl
dF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCkpIHsKLSAgICAgICAgICAgICAgICBp
bnQgcmF0aW9OdW1lcmF0b3IgPSAxOwotICAgICAgICAgICAgICAgIGludCByYXRpb0Rlbm9taW5h
dG9yID0gMTsKLQotICAgICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKHN0
cnVjdHVyZSwgInBpeGVsLWFzcGVjdC1yYXRpbyIsICZyYXRpb051bWVyYXRvciwgJnJhdGlvRGVu
b21pbmF0b3IpOwotICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gaGVpZ2h0ICogKChmbG9h
dCkgcmF0aW9EZW5vbWluYXRvciAvIChmbG9hdCkgcmF0aW9OdW1lcmF0b3IpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNp
emUod2lkdGgsIGZpbmFsSGVpZ2h0KTsKLSAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNv
cmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VmlkZW87Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUo
KTsKLSAgICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAi
YXVkaW8vIikpCi0gICAgICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFT
b3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpBdWRpbzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGdf
c3RyX2hhc19wcmVmaXgob3JpZ2luYWxNZWRpYVR5cGUsICJ0ZXh0LyIpKQotICAgICAgICAgICAg
ICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1l
cjo6VGV4dDsKLSAgICAgICAgfQotICAgICAgICBzaXplQ29uZmlndXJlZCA9IHRydWU7CiAgICAg
fQogI2VuZGlmCi0KLSAgICBpZiAoIXNpemVDb25maWd1cmVkKSB7Ci0gICAgICAgIGNvbnN0IGNo
YXIqIHN0cnVjdHVyZU5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0g
ICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgICAgIGlmICghTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c0NvZGVjKHN0cnVjdHVyZU5hbWUpKSB7CisgICAgY29u
c3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBnZXRNZWRpYVR5cGVGcm9tQ2FwcyhtX2RlbXV4
ZXJTcmNQYWRDYXBzLmdldCgpKTsKKyAgICBpZiAoIU1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRTo6c3VwcG9ydHNDb2RlYyhvcmlnaW5hbE1lZGlhVHlwZSkpIHsKICAgICAgICAgICAgIG1f
cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOwogICAgICAgICAgICAgbV9z
dHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpJbnZh
bGlkOwotICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgoc3RydWN0dXJlTmFtZSwg
InZpZGVvLyIpICYmIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgZGVtdXhlclNyY1Bh
ZENhcHMpKSB7Ci0gICAgICAgICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OwotCi0gICAgICAgICAg
ICB3aWR0aCA9IGluZm8ud2lkdGg7Ci0gICAgICAgICAgICBoZWlnaHQgPSBpbmZvLmhlaWdodCAq
ICgoZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotCisgICAgfSBlbHNl
IGlmIChhcmVWaWRlb0NhcHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSkpIHsKKyAgICAgICAg
ZmxvYXQgd2lkdGgsIGhlaWdodDsKKyAgICAgICAgaWYgKGdldFZpZGVvUmVzb2x1dGlvbkZyb21D
YXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCksIHdpZHRoLCBoZWlnaHQpKQogICAgICAgICAg
ICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQp
OwotICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1U
eXBlR1N0cmVhbWVyOjpWaWRlbzsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7Ci0gICAg
ICAgICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1lLCAiYXVkaW8vIikpCi0g
ICAgICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1U
eXBlR1N0cmVhbWVyOjpBdWRpbzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGdfc3RyX2hhc19wcmVm
aXgoc3RydWN0dXJlTmFtZSwgInRleHQvIikpCi0gICAgICAgICAgICAgICAgbV9zdHJlYW1UeXBl
ID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpUZXh0OwotICAgICAg
ICB9CisKKyAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1U
eXBlR1N0cmVhbWVyOjpWaWRlbzsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3ByZXNlbnRhdGlv
blNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKKyAgICAgICAgaWYgKGFyZUF1ZGlvQ2Fwcyht
X2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpKSkKKyAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdl
YkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6QXVkaW87CisgICAgICAgIGVs
c2UgaWYgKGFyZVRleHRDYXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpKQorICAgICAgICAg
ICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVy
OjpUZXh0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVk
aWFEZXNjcmlwdGlvbi5jcHAKaW5kZXggNzc2YTBiZTliM2I0NjMzN2UzZjIxMDAxMjBkY2FkZWJm
YTkyNDc0OS4uNjgyODNkOTMyM2MzNzhhMGZhNTUwNDJmZjU4NWJhNjk3Y2RiMTVlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3Ry
ZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3BwCkBAIC0y
MCw3ICsyMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJN
ZWRpYURlc2NyaXB0aW9uLmgiCi0KKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJHVW5pcXVlUHRyR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9w
YnV0aWxzLmg+CkBAIC0zMywzNSArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdG9t
aWNTdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6Y29kZWMoKSBjb25zdAogewotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGRlc2NyaXB0aW9uKGdzdF9wYl91dGlsc19nZXRfY29kZWNfZGVz
Y3JpcHRpb24obV9jYXBzLmdldCgpKSk7Ci0gICAgU3RyaW5nIGNvZGVjTmFtZShkZXNjcmlwdGlv
bi5nZXQoKSk7Ci0KLSAgICAvLyBSZXBvcnQgIkguMjY0IChNYWluIFByb2ZpbGUpIiBhbmQgIkgu
MjY0IChIaWdoIFByb2ZpbGUpIiBqdXN0IGFzICJILjI2NCIgdG8gYWxsb3cgY2hhbmdlcyBiZXR3
ZWVuIGJvdGggdmFyaWFudHMKLSAgICAvLyBnbyB1bm5vdGljZWQgdG8gdGhlIFNvdXJjZUJ1ZmZl
ciBsYXllci4KLSAgICBpZiAoY29kZWNOYW1lLnN0YXJ0c1dpdGgoIkguMjY0IikpIHsKLSAgICAg
ICAgc2l6ZV90IGJyYWNlU3RhcnQgPSBjb2RlY05hbWUuZmluZCgiICgiKTsKLSAgICAgICAgc2l6
ZV90IGJyYWNlRW5kID0gY29kZWNOYW1lLmZpbmQoIikiKTsKLSAgICAgICAgaWYgKGJyYWNlU3Rh
cnQgIT0gbm90Rm91bmQgJiYgYnJhY2VFbmQgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICBjb2Rl
Y05hbWUucmVtb3ZlKGJyYWNlU3RhcnQsIGJyYWNlRW5kLWJyYWNlU3RhcnQpOwotICAgIH0KLQot
ICAgIHJldHVybiBjb2RlY05hbWU7CisgICAgcmV0dXJuIG1fY29kZWNOYW1lOwogfQogCiBib29s
IEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVmlkZW8oKSBjb25zdAogewotICAgIEdzdFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2NhcHMuZ2V0KCks
IDApOwotICAgIGNvbnN0IGdjaGFyKiBuYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1
Y3R1cmUpOwotCi0gICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgInZpZGVvLyIpOwor
ICAgIHJldHVybiBhcmVWaWRlb0NhcHMobV9jYXBzLmdldCgpKTsKIH0KIAogYm9vbCBHU3RyZWFt
ZXJNZWRpYURlc2NyaXB0aW9uOjppc0F1ZGlvKCkgY29uc3QKIHsKLSAgICBHc3RTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9jYXBzLmdldCgpLCAwKTsKLSAg
ICBjb25zdCBnY2hhciogbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsK
LQotICAgIHJldHVybiBnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJhdWRpby8iKTsKKyAgICByZXR1
cm4gYXJlQXVkaW9DYXBzKG1fY2Fwcy5nZXQoKSk7CiB9CiAKIGJvb2wgR1N0cmVhbWVyTWVkaWFE
ZXNjcmlwdGlvbjo6aXNUZXh0KCkgY29uc3QKQEAgLTcwLDYgKzUyLDQzIEBAIGJvb2wgR1N0cmVh
bWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK0F0b21pY1N0cmluZyBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjpleHRyYWN0Q29kZWNO
YW1lKCkKK3sKKyAgICBHUmVmUHRyPEdzdENhcHM+IG9yaWdpbmFsQ2FwID0gbV9jYXBzOworCisg
ICAgaWYgKGFyZUVuY3J5cHRlZENhcHMob3JpZ2luYWxDYXAuZ2V0KCkpKSB7CisgICAgICAgIG9y
aWdpbmFsQ2FwID0gYWRvcHRHUmVmKGdzdF9jYXBzX2NvcHkob3JpZ2luYWxDYXAuZ2V0KCkpKTsK
KyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJl
KG9yaWdpbmFsQ2FwLmdldCgpLCAwKTsKKworICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFz
X2ZpZWxkKHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKSkKKyAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF9uYW1lKHN0cnVjdHVy
ZSwgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5
cGUiKSk7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgRFJNIHJlbGF0ZWQgZmllbGRzIGZyb20gdGhl
IGNhcHMuCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZ3N0X3N0cnVjdHVyZV9uX2ZpZWxk
cyhzdHJ1Y3R1cmUpOyArK2opIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpZWxkTmFtZSA9
IGdzdF9zdHJ1Y3R1cmVfbnRoX2ZpZWxkX25hbWUoc3RydWN0dXJlLCBqKTsKKworICAgICAgICAg
ICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoZmllbGROYW1lLCAicHJvdGVjdGlvbi1zeXN0ZW0iKQor
ICAgICAgICAgICAgICAgIHx8IGdfc3RyX2hhc19wcmVmaXgoZmllbGROYW1lLCAib3JpZ2luYWwt
bWVkaWEtdHlwZSIpKQorICAgICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxk
KHN0cnVjdHVyZSwgZmllbGROYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGRlc2NyaXB0aW9uKGdzdF9wYl91dGlsc19nZXRfY29kZWNfZGVzY3JpcHRpb24o
b3JpZ2luYWxDYXAuZ2V0KCkpKTsKKyAgICBTdHJpbmcgY29kZWNOYW1lKGRlc2NyaXB0aW9uLmdl
dCgpKTsKKworICAgIC8vIFJlcG9ydCAiSC4yNjQgKE1haW4gUHJvZmlsZSkiIGFuZCAiSC4yNjQg
KEhpZ2ggUHJvZmlsZSkiIGp1c3QgYXMgIkguMjY0IiB0byBhbGxvdyBjaGFuZ2VzIGJldHdlZW4g
Ym90aCB2YXJpYW50cworICAgIC8vIGdvIHVubm90aWNlZCB0byB0aGUgU291cmNlQnVmZmVyIGxh
eWVyLgorICAgIGlmIChjb2RlY05hbWUuc3RhcnRzV2l0aCgiSC4yNjQiKSkgeworICAgICAgICBz
aXplX3QgYnJhY2VTdGFydCA9IGNvZGVjTmFtZS5maW5kKCIgKCIpOworICAgICAgICBzaXplX3Qg
YnJhY2VFbmQgPSBjb2RlY05hbWUuZmluZCgiKSIpOworICAgICAgICBpZiAoYnJhY2VTdGFydCAh
PSBub3RGb3VuZCAmJiBicmFjZUVuZCAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIGNvZGVjTmFt
ZS5yZW1vdmUoYnJhY2VTdGFydCwgYnJhY2VFbmQtYnJhY2VTdGFydCk7CisgICAgfQorCisgICAg
cmV0dXJuIGNvZGVjTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAogI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFE
ZXNjcmlwdGlvbi5oCmluZGV4IDg0ZTI2M2NhYWE3YWQyNDc4NzA1YjA5OWUwZDhmZWRiNGU5ZWE0
NWEuLjYzNWViYzdhMjkzYThmYThlYWM3NmYxYjE3N2Y0NmUyZTk3YzBmNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVy
TWVkaWFEZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogCiAjaW5jbHVkZSA8Z3N0L2dzdC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ4LDkgKzQ5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIDogTWVkaWFEZXNjcmlw
dGlvbigpCiAgICAgICAgICwgbV9jYXBzKGNhcHMpCiAgICAgeworICAgICAgICBtX2NvZGVjTmFt
ZSA9IGV4dHJhY3RDb2RlY05hbWUoKTsKICAgICB9CiAKKyAgICBBdG9taWNTdHJpbmcgZXh0cmFj
dENvZGVjTmFtZSgpOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jYXBzOworICAgIEF0b21pY1N0
cmluZyBtX2NvZGVjTmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
aW5kZXggZTA3ZWM1OTY3NDg3N2NiMjhlNjFlMTYwZjI5ZDM5NTM5YWJiZmE3Ni4uNmU4YTVmOThi
OGNhZmE4ZDQ3MDgyNjExM2E3M2Q2NjhjOWU0ZjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzM5LDIzICs3
MzksMTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnRyYWNrRGV0ZWN0
ZWQoUmVmUHRyPEFwcGVuZFBpcGVsaW5lPiBhcHBlbmQKICAgICBBU1NFUlQoY2Fwcyk7CiAgICAg
R1NUX0RFQlVHKCJ0cmFjayBJRDogJXMsIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBuZXdUcmFj
ay0+aWQoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNhcHMpOwogCi0gICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotICAgIGNv
bnN0IGdjaGFyKiBtZWRpYVR5cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7
Ci0gICAgR3N0VmlkZW9JbmZvIGluZm87Ci0KLSAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRp
YVR5cGUsICJ2aWRlby8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMp
KSB7CisgICAgaWYgKGFyZVZpZGVvQ2FwcyhjYXBzKSkgewogICAgICAgICBmbG9hdCB3aWR0aCwg
aGVpZ2h0OwotCi0gICAgICAgIHdpZHRoID0gaW5mby53aWR0aDsKLSAgICAgICAgaGVpZ2h0ID0g
aW5mby5oZWlnaHQgKiAoKGZsb2F0KSBpbmZvLnBhcl9kIC8gKGZsb2F0KSBpbmZvLnBhcl9uKTsK
LSAgICAgICAgbV92aWRlb1NpemUuc2V0V2lkdGgod2lkdGgpOwotICAgICAgICBtX3ZpZGVvU2l6
ZS5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAgaWYgKGdldFZpZGVvUmVzb2x1dGlvbkZyb21D
YXBzKGNhcHMsIHdpZHRoLCBoZWlnaHQpKSB7CisgICAgICAgICAgICBtX3ZpZGVvU2l6ZS5zZXRX
aWR0aCh3aWR0aCk7CisgICAgICAgICAgICBtX3ZpZGVvU2l6ZS5zZXRIZWlnaHQoaGVpZ2h0KTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChmaXJzdFRyYWNrRGV0ZWN0ZWQpCi0gICAgICAg
IG1fcGxheWJhY2tQaXBlbGluZS0+YXR0YWNoVHJhY2soYXBwZW5kUGlwZWxpbmUtPnNvdXJjZUJ1
ZmZlclByaXZhdGUoKSwgbmV3VHJhY2ssIHN0cnVjdHVyZSwgY2Fwcyk7CisgICAgICAgIG1fcGxh
eWJhY2tQaXBlbGluZS0+YXR0YWNoVHJhY2soYXBwZW5kUGlwZWxpbmUtPnNvdXJjZUJ1ZmZlclBy
aXZhdGUoKSwgbmV3VHJhY2ssIGNhcHMpOwogICAgIGVsc2UKLSAgICAgICAgbV9wbGF5YmFja1Bp
cGVsaW5lLT5yZWF0dGFjaFRyYWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VCdWZmZXJQcml2YXRl
KCksIG5ld1RyYWNrLCBtZWRpYVR5cGUpOworICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPnJl
YXR0YWNoVHJhY2soYXBwZW5kUGlwZWxpbmUtPnNvdXJjZUJ1ZmZlclByaXZhdGUoKSwgbmV3VHJh
Y2ssIGNhcHMpOwogfQogCiBjb25zdCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBjb2Rl
Y1NldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAppbmRleCA1MzE5OWY2
ZmMzZDVjMDNiMTlmMzdkMGI2YTdkYWZiY2YwMGU4ZWIxLi5jNmNkODVkY2UyNmMzMDdhMzM0NmMy
Yzk3YTdiZjg2ZWYxNGRlMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5j
cHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OnJlbW92ZVNvdXJj
ZUJ1ZmZlcihSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gcwogICAgICAgICB3
ZWJLaXRNZWRpYVNyY0ZyZWVTdHJlYW0obV93ZWJLaXRNZWRpYVNyYy5nZXQoKSwgc3RyZWFtKTsK
IH0KIAotdm9pZCBQbGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRyYWNrUHJp
dmF0ZUJhc2U+IHRyYWNrUHJpdmF0ZSwgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdzdENhcHMq
IGNhcHMpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQ
cml2YXRlQmFzZT4gdHJhY2tQcml2YXRlLCBHc3RDYXBzKiBjYXBzKQogewogICAgIFdlYktpdE1l
ZGlhU3JjKiB3ZWJLaXRNZWRpYVNyYyA9IG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCk7CiAKQEAgLTE3
Nyw4ICsxNzcsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdQogICAgIHN0cmVhbS0+cGFyZW50
LT5wcml2LT5udW1iZXJPZlBhZHMrKzsKICAgICBHU1RfT0JKRUNUX1VOTE9DSyh3ZWJLaXRNZWRp
YVNyYyk7CiAKLSAgICBjb25zdCBnY2hhciogbWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRf
bmFtZShzdHJ1Y3R1cmUpOwotCisgICAgY29uc3QgY2hhciogbWVkaWFUeXBlID0gZ2V0TWVkaWFU
eXBlRnJvbUNhcHMoY2Fwcyk7CiAgICAgR1NUX0RFQlVHX09CSkVDVCh3ZWJLaXRNZWRpYVNyYywg
IkNvbmZpZ3VyZWQgdHJhY2sgJXM6IGFwcHNyYz0lcywgcGFkSWQ9JXUsIG1lZGlhVHlwZT0lcyIs
IHRyYWNrUHJpdmF0ZS0+aWQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBHU1RfRUxFTUVOVF9O
QU1FKHN0cmVhbS0+YXBwc3JjKSwgcGFkSWQsIG1lZGlhVHlwZSk7CiAKICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBwYXJzZXJCaW5OYW1lKGdfc3RyZHVwX3ByaW50Zigic3RyZWFtcGFyc2VyJXUiLCBw
YWRJZCkpOwpAQCAtMjE3LDYgKzIxNiw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6YXR0YWNo
VHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1CiAgICAg
ICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFtLT5wYXJzZXIsIGdzdF9naG9zdF9wYWRfbmV3
KCJzcmMiLCBwYWQuZ2V0KCkpKTsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWVkaWFUeXBl
LCAiYXVkaW8vbXBlZyIpKSB7CiAgICAgICAgIGdpbnQgbXBlZ3ZlcnNpb24gPSAtMTsKKyAgICAg
ICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMs
IDApOwogICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAibXBlZ3ZlcnNp
b24iLCAmbXBlZ3ZlcnNpb24pOwogCiAgICAgICAgIEdzdEVsZW1lbnQqIHBhcnNlciA9IG51bGxw
dHI7CkBAIC0yNzIsMTcgKzI3MiwxNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRy
YWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdQogICAgIGlu
dCBzaWduYWwgPSAtMTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyh3ZWJLaXRNZWRpYVNyYyk7Ci0g
ICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAiYXVkaW8iKSkgeworICAgIGlmIChh
cmVBdWRpb0NhcHMoY2FwcykpIHsKICAgICAgICAgc3RyZWFtLT50eXBlID0gQXVkaW87CiAgICAg
ICAgIHN0cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJPZkF1ZGlvU3RyZWFtcysrOwogICAgICAg
ICBzaWduYWwgPSBTSUdOQUxfQVVESU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT5hdWRpb1Ry
YWNrID0gUmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5n
ZXQoKSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRl
byIpKSB7CisgICAgfSBlbHNlIGlmIChhcmVWaWRlb0NhcHMoY2FwcykpIHsKICAgICAgICAgc3Ry
ZWFtLT50eXBlID0gVmlkZW87CiAgICAgICAgIHN0cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJP
ZlZpZGVvU3RyZWFtcysrOwogICAgICAgICBzaWduYWwgPSBTSUdOQUxfVklERU9fQ0hBTkdFRDsK
ICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNrID0gUmVmUHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQoKSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFz
X3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0IikpIHsKKyAgICB9IGVsc2UgaWYgKGFyZVRleHRDYXBz
KGNhcHMpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IFRleHQ7CiAgICAgICAgIHN0cmVhbS0+
cGFyZW50LT5wcml2LT5udW1iZXJPZlRleHRTdHJlYW1zKys7CiAgICAgICAgIHNpZ25hbCA9IFNJ
R05BTF9URVhUX0NIQU5HRUQ7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBQbGF5YmFja1BpcGVs
aW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291
cmNlQnUKICAgICAgICAgZ19zaWduYWxfZW1pdChHX09CSkVDVChzdHJlYW0tPnBhcmVudCksIHdl
YktpdE1lZGlhU3JjU2lnbmFsc1tzaWduYWxdLCAwLCBudWxscHRyKTsKIH0KIAotdm9pZCBQbGF5
YmFja1BpcGVsaW5lOjpyZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4gdHJh
Y2tQcml2YXRlLCBjb25zdCBjaGFyKiBtZWRpYVR5cGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6
OnJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJj
ZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUsIEdz
dENhcHMqIGNhcHMpCiB7CiAgICAgR1NUX0RFQlVHKCJSZS1hdHRhY2hpbmcgdHJhY2siKTsKIApA
QCAtMzEzLDE1ICszMTMsMTUgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpyZWF0dGFjaFRyYWNr
KFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2UKICAgICBpbnQgc2ln
bmFsID0gLTE7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0sod2ViS2l0TWVkaWFTcmMpOwotICAgIGlm
IChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgImF1ZGlvIikpIHsKKyAgICBpZiAoYXJlQXVk
aW9DYXBzKGNhcHMpKSB7CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gQXVkaW8pOwog
ICAgICAgICBzaWduYWwgPSBTSUdOQUxfQVVESU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT5h
dWRpb1RyYWNrID0gUmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihz
dGF0aWNfY2FzdDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJp
dmF0ZS5nZXQoKSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUs
ICJ2aWRlbyIpKSB7CisgICAgfSBlbHNlIGlmIChhcmVWaWRlb0NhcHMoY2FwcykpIHsKICAgICAg
ICAgQVNTRVJUKHN0cmVhbS0+dHlwZSA9PSBWaWRlbyk7CiAgICAgICAgIHNpZ25hbCA9IFNJR05B
TF9WSURFT19DSEFOR0VEOwogICAgICAgICBzdHJlYW0tPnZpZGVvVHJhY2sgPSBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+KHN0YXRpY19jYXN0PFdlYkNvcmU6OlZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKj4odHJhY2tQcml2YXRlLmdldCgpKSk7Ci0gICAgfSBl
bHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgInRleHQiKSkgeworICAgIH0gZWxz
ZSBpZiAoYXJlVGV4dENhcHMoY2FwcykpIHsKICAgICAgICAgQVNTRVJUKHN0cmVhbS0+dHlwZSA9
PSBUZXh0KTsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX1RFWFRfQ0hBTkdFRDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaAppbmRleCA2NjYxZDZhMmZmNjRjZDZiODViOTE5NzA1
NDczZDkzYzg4YzE2ODliLi43ZjcyZTQ3ZmE3NzkxNjBlN2RlMDRjMjhhNTU0NmFjY2ZkYjYzNWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1BsYXliYWNrUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaApAQCAtNTcsOCArNTcsOCBAQCBw
dWJsaWM6CiAKICAgICBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBhZGRTb3VyY2VCdWZm
ZXIoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIHJlbW92
ZVNvdXJjZUJ1ZmZlcihSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4pOwotICAg
IHZvaWQgYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBS
ZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4sIEdzdFN0cnVjdHVyZSosIEdzdENhcHMqKTsKLSAgICB2
b2lkIHJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBS
ZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4sIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIGF0dGFjaFRy
YWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVmUHRyPFRyYWNrUHJp
dmF0ZUJhc2U+LCBHc3RDYXBzKik7CisgICAgdm9pZCByZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+LCBHc3RD
YXBzKik7CiAgICAgdm9pZCBub3RpZnlEdXJhdGlvbkNoYW5nZWQoKTsKIAogICAgIC8vIEZyb20g
TWVkaWFTb3VyY2VHU3RyZWFtZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVk
aWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDY5ZWZjMWMxMDQ5M2UwMjZmNzBjNDQyNzQ3NDUw
OGIzNmYwZWQwYTYuLjA5NjM5NjAxNjk4YTg1YTVmNzE0MmI3MmM3OTQ1NmEyZDA5Y2RkYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
CkBAIC00NTIsMTggKzQ1MiwxNCBAQCBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY1F1ZXJ5V2l0aFBh
cmVudChHc3RQYWQqIHBhZCwgR3N0T2JqZWN0KiBwYXJlbnQsIEdzdFF1ZXJ5KgogCiB2b2lkIHdl
YktpdE1lZGlhU3JjVXBkYXRlUHJlc2VudGF0aW9uU2l6ZShHc3RDYXBzKiBjYXBzLCBTdHJlYW0q
IHN0cmVhbSkKIHsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9z
dHJ1Y3R1cmUoY2FwcywgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIHN0cnVjdHVyZU5hbWUgPSBnc3Rf
c3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0gICAgR3N0VmlkZW9JbmZvIGluZm87Ci0K
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3RyZWFtLT5wYXJlbnQpOwotICAgIGlmIChnX3N0cl9oYXNf
cHJlZml4KHN0cnVjdHVyZU5hbWUsICJ2aWRlby8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9tX2Nh
cHMoJmluZm8sIGNhcHMpKSB7CisgICAgaWYgKFdlYkNvcmU6OmFyZVZpZGVvQ2FwcyhjYXBzKSkg
ewogICAgICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OwogCi0gICAgICAgIC8vIEZJWE1FOiBDb3Jy
ZWN0Py4KLSAgICAgICAgd2lkdGggPSBpbmZvLndpZHRoOwotICAgICAgICBoZWlnaHQgPSBpbmZv
LmhlaWdodCAqICgoZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotICAg
ICAgICBzdHJlYW0tPnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgs
IGhlaWdodCk7CisgICAgICAgIGlmIChXZWJDb3JlOjpnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fw
cyhjYXBzLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9u
U2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXpl
KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNv
cmU6OkZsb2F0U2l6ZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332984</attachid>
            <date>2018-02-02 11:14:38 -0800</date>
            <delta_ts>2018-02-08 09:51:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180202201437.patch</filename>
            <type>text/plain</type>
            <size>28000</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uODU1NDIxNGQ2Y2ZhNmY2ZjM0MjdjYWY4NmM0Zjdm
MWI3MGU0MzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIENhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIENhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gQ2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIENhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgQ2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIENhcHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldE1lZGlhVHlwZUZyb21DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcHNJc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6YXJlRW5jcnlwdGVkQ2Fwcyk6IEFkZCBhIG5ldyBmdW5jdGlv
bnMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBDYXBzIHByb3Blcmx5LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnBhcnNlRGVtdXhlclNyY1BhZENhcHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFE
ZXNjcmlwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYURlc2NyaXB0
aW9uOjpjb2RlYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYURlc2Ny
aXB0aW9uOjppc1ZpZGVvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlh
RGVzY3JpcHRpb246OmlzQXVkaW8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6dHJhY2tEZXRlY3Rl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1Bp
cGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxpbmU6OnJlYXR0YWNoVHJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBl
bGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0
TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNVcGRhdGVQ
cmVzZW50YXRpb25TaXplKTogUmVmYWN0b3Igc29tZSBwYXJ0cyBieSB1c2luZyB0aGUgbmV3IGFk
ZGVkIGZ1bmN0aW9ucy4KKwogMjAxOC0wMS0xOSAgWWFjaW5lIEJhbmRvdSAgPHlhY2luZS5iYW5k
b3VfZXh0QHNvZnRhdGhvbWUuY29tPgogCiAgICAgICAgIFtFTUVdW0dTdHJlYW1lcl0gQWRkIGEg
bmV3IG1lc3NhZ2UgImRlY3J5cHQta2V5LW5lZWRlZCIgc2VuZCBmcm9tIHRoZSBkZWNyeXB0b3Ig
dG8gdGhlIGFwcGxpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcAppbmRl
eCA0NzYyYWU4ODU1YjhiMTc4YTRmYWJhNmJmODIyM2FmZTU3ZjY1ODhlLi5mZTlhNmY1YzU0OTcx
YjJkZDExZDVkOTczOTM4ZjAyZTMxNWVhNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0
aWVzLmNwcApAQCAtNTksMTkgKzU5LDcyIEBAIEdzdFBhZCogd2Via2l0R3N0R2hvc3RQYWRGcm9t
U3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqIHN0YXRpY1BhZFRlbXBsCiAjaWYg
RU5BQkxFKFZJREVPKQogYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBz
KiBjYXBzLCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBHc3RWaWRlb0Zvcm1hdCYgZm9ybWF0LCBp
bnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9t
aW5hdG9yLCBpbnQmIHN0cmlkZSkKIHsKLSAgICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgICBpZiAo
IWNhcHNJc1R5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRSkpIHsKKyAgICAgICAgR1NUX0VS
Uk9SKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyBzaXplIGFuZCBmb3JhbXQsIHRoZXkgYXJlIG5v
dCBhIHZpZGVvIGNhcHMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChhcmVFbmNyeXB0ZWRDYXBzKGNhcHMpKSB7CisKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworICAgICAgICBnaW50IHdp
ZHRoID0gMCwgaGVpZ2h0ID0gMDsKKworICAgICAgICBmb3JtYXQgPSBHU1RfVklERU9fRk9STUFU
X0VOQ09ERUQ7CisgICAgICAgIHN0cmlkZSA9IDA7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0
X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCk7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVf
Z2V0X2ludChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmaGVpZ2h0KTsKKyAgICAgICAgZ3N0X3N0cnVj
dHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgJnBpeGVs
QXNwZWN0UmF0aW9OdW1lcmF0b3IsICZwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IpOworICAg
ICAgICBzaXplLnNldFdpZHRoKHdpZHRoKTsKKyAgICAgICAgc2l6ZS5zZXRIZWlnaHQoaGVpZ2h0
KTsKKyAgICB9IGVsc2UgeworCisgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOworICAgICAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKKyAgICAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19m
cm9tX2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmaW5mbyk7CisgICAgICAgIHNpemUu
c2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKKyAgICAgICAgc2l6ZS5zZXRI
ZWlnaHQoR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZpbmZvKSk7CisgICAgICAgIHBpeGVsQXNwZWN0
UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7CisgICAgICAgIHBp
eGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsK
KyAgICAgICAgc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFKCZpbmZvLCAwKTsK
KyAgICB9CiAKLSAgICBnc3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKLSAgICBpZiAoIWdzdF92
aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgZmxvYXQmIHdp
ZHRoLCBmbG9hdCYgaGVpZ2h0KQoreworICAgIGdpbnQgbFdpZHRoID0gMCwgbEhlaWdodCA9IDA7
CisgICAgZ2ludCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gMSwgcGl4ZWxBc3BlY3RSYXRp
b0Rlbm9taW5hdG9yID0gMTsKKworICAgIGlmICghY2Fwc0lzVHlwZShjYXBzLCBHU1RfVklERU9f
Q0FQU19UWVBFKSkgeworICAgICAgICBHU1RfRVJST1IoIkZhaWxlZCB0byBnZXQgdGhlIHZpZGVv
IHJlc29sdXRpb24sIHRoZXkgYXJlIG5vdCBhIHZpZGVvIGNhcHMiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKGNhcHMpKSB7CisKKyAg
ICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNh
cHMsIDApOworICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAid2lkdGgi
LCAmbFdpZHRoKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImhl
aWdodCIsICZsSGVpZ2h0KTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3Ry
dWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgJnBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3Is
ICZwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IpOwogCi0gICAgZm9ybWF0ID0gR1NUX1ZJREVP
X0lORk9fRk9STUFUKCZpbmZvKTsKLSAgICBzaXplLnNldFdpZHRoKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZpbmZvKSk7Ci0gICAgc2l6ZS5zZXRIZWlnaHQoR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZp
bmZvKSk7Ci0gICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IEdTVF9WSURFT19JTkZPX1BB
Ul9OKCZpbmZvKTsKLSAgICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklERU9f
SU5GT19QQVJfRCgmaW5mbyk7Ci0gICAgc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RS
SURFKCZpbmZvLCAwKTsKKyAgICB9IGVsc2UgewogCisgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZv
OworICAgICAgICBnc3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKKyAgICAgICAgaWYgKCFnc3Rf
dmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGxXaWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIKCZpbmZvKTsKKyAg
ICAgICAgbEhlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbyk7CisgICAgICAgIHBp
eGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7Cisg
ICAgICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9E
KCZpbmZvKTsKKyAgICB9CisgICAgd2lkdGggPSBsV2lkdGg7CisgICAgaGVpZ2h0ID0gbEhlaWdo
dCAqICgoZmxvYXQpIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgLyAoZmxvYXQpIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMyw2ICsx
NjYsNDcgQEAgR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorY29uc3QgY2hhciogZ2V0
TWVkaWFUeXBlRnJvbUNhcHMoR3N0Q2FwcyogY2FwcykKK3sKKyAgICBBU1NFUlQoY2Fwcyk7Cisg
ICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMs
IDApOworICAgIGlmICghc3RydWN0dXJlKSB7CisgICAgICAgIEdTVF9FUlJPUigiY2FwcyBhcmUg
ZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAi
YXBwbGljYXRpb24veC1jZW5jIikpCisgICAgICAgIHJldHVybiBnc3Rfc3RydWN0dXJlX2dldF9z
dHJpbmcoc3RydWN0dXJlLCAib3JpZ2luYWwtbWVkaWEtdHlwZSIpOworI2VuZGlmCisgICAgcmV0
dXJuIGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKK30KKworYm9vbCBjYXBzSXNU
eXBlKEdzdENhcHMqIGNhcHMsIGNvbnN0IGNoYXIqIHR5cGUpCit7CisgICAgY29uc3QgY2hhciog
bWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBlRnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKCFtZWRpYVR5
cGUpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IE1lZGlhVHlwZSIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBnX3N0cl9oYXNfcHJlZml4KG1l
ZGlhVHlwZSwgdHlwZSk7Cit9CisKK2Jvb2wgYXJlRW5jcnlwdGVkQ2FwcyhHc3RDYXBzKiBjYXBz
KQoreworICAgIEFTU0VSVChjYXBzKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAw
KTsKKyAgICBpZiAoIXN0cnVjdHVyZSkgeworICAgICAgICBHU1RfRVJST1IoImNhcHMgYXJlIGVt
cHR5Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdzdF9zdHJ1
Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIik7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShjYXBzKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwog
Y2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCiB7CiAgICAg
R3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVj
dCo+KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKaW5kZXggZTE2ODU4MjEx
ZTI5NTllOWY3NDNhMzM5Mjg5MGQxMTE0MDdkZjhiNy4uN2IxNGUyNjE4YjFlMmY1OGFkMDJhZWFk
ZDEwY2MyZWQ1NDNmMDM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaApAQCAtNTAs
MTQgKzUwLDIyIEBAIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpv
ciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogICAgIHJldHVybiB0cnVlOwogfQogCisjZGVm
aW5lIEdTVF9WSURFT19DQVBTX1RZUEUgICJ2aWRlby8iCisjZGVmaW5lIEdTVF9BVURJT19DQVBT
X1RZUEUgICJhdWRpby8iCisjZGVmaW5lIEdTVF9URVhUX0NBUFNfVFlQRSAgICJ0ZXh0LyIKKwog
R3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRU
ZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7CiAjaWYgRU5BQkxF
KFZJREVPKQogYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2Vi
Q29yZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVt
ZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwor
Ym9vbCBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhHc3RDYXBzKiwgZmxvYXQmIHdpZHRoLCBm
bG9hdCYgaGVpZ2h0KTsKIGJvb2wgZ2V0U2FtcGxlVmlkZW9JbmZvKEdzdFNhbXBsZSosIEdzdFZp
ZGVvSW5mbyYpOwogI2VuZGlmCiBHc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIq
KTsKIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKIGNoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciopOwor
Y29uc3QgY2hhciogZ2V0TWVkaWFUeXBlRnJvbUNhcHMoR3N0Q2FwcyopOworYm9vbCBjYXBzSXNU
eXBlKEdzdENhcHMqLCBjb25zdCBjaGFyKik7Citib29sIGFyZUVuY3J5cHRlZENhcHMoR3N0Q2Fw
cyopOwogdm9pZCBtYXBHc3RCdWZmZXIoR3N0QnVmZmVyKiwgdWludDMyX3QpOwogdm9pZCB1bm1h
cEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKIGJvb2wgaW5pdGlhbGl6ZUdTdHJlYW1lcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRleCBjZWJiZjJlN2JlNTYyZmFjMTgwYjE0
ZmQ3NjRiOWM5YzU1ZDNmYWMxLi4wYmE3NTc4YmI4MTMzMzRkZmYwNWVmNDZmZGIwYTVmZDIzOTI4
ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW5j
bHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5j
bHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgpAQCAtNTgyLDc0ICs1ODMsMzYgQEAgdm9pZCBBcHBl
bmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFkQ2FwcyhHc3RDYXBzKiBkZW11eGVyU3JjUGFk
Q2FwcykKIAogICAgIG1fZGVtdXhlclNyY1BhZENhcHMgPSBhZG9wdEdSZWYoZGVtdXhlclNyY1Bh
ZENhcHMpOwogICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlw
ZUdTdHJlYW1lcjo6VW5rbm93bjsKLQotICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpLCAwKTsKLSAgICBi
b29sIHNpemVDb25maWd1cmVkID0gZmFsc2U7Ci0KLSNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCA1
LCAzKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hh
c19uYW1lKHN0cnVjdHVyZSwgImFwcGxpY2F0aW9uL3gtY2VuYyIpKSB7CisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICBpZiAoYXJlRW5jcnlwdGVkQ2FwcyhtX2RlbXV4ZXJTcmNQYWRD
YXBzLmdldCgpKSkgewogICAgICAgICAvLyBBbnkgcHJldmlvdXMgZGVjcnlwdG9yIHNob3VsZCBo
YXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBwaXBlbGluZSBieSBkaXNjb25uZWN0RnJvbUFwcFNp
bmtGcm9tU3RyZWFtaW5nVGhyZWFkKCkKICAgICAgICAgQVNTRVJUKCFtX2RlY3J5cHRvcik7Ci0K
KyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJl
KG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCksIDApOwogICAgICAgICBtX2RlY3J5cHRvciA9IEdT
dHJlYW1lckVNRVV0aWxpdGllczo6Y3JlYXRlRGVjcnlwdG9yKGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0
cmluZyhzdHJ1Y3R1cmUsICJwcm90ZWN0aW9uLXN5c3RlbSIpKTsKICAgICAgICAgaWYgKCFtX2Rl
Y3J5cHRvcikgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJkZWNyeXB0b3Igbm90IGZvdW5kIGZv
ciBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgbV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBjb25zdCBnY2hhciogb3Jp
Z2luYWxNZWRpYVR5cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAib3Jp
Z2luYWwtbWVkaWEtdHlwZSIpOwotCi0gICAgICAgIGlmICghTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzdXBwb3J0c0NvZGVjKG9yaWdpbmFsTWVkaWFUeXBlKSkgewotICAgICAgICAg
ICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7Ci0gICAgICAgICAg
ICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6
OkludmFsaWQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChvcmlnaW5hbE1l
ZGlhVHlwZSwgInZpZGVvLyIpKSB7Ci0gICAgICAgICAgICBpbnQgd2lkdGggPSAwOwotICAgICAg
ICAgICAgaW50IGhlaWdodCA9IDA7Ci0gICAgICAgICAgICBmbG9hdCBmaW5hbEhlaWdodCA9IDA7
Ci0KLSAgICAgICAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAid2lk
dGgiLCAmd2lkdGgpICYmIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJoZWlnaHQi
LCAmaGVpZ2h0KSkgewotICAgICAgICAgICAgICAgIGludCByYXRpb051bWVyYXRvciA9IDE7Ci0g
ICAgICAgICAgICAgICAgaW50IHJhdGlvRGVub21pbmF0b3IgPSAxOwotCi0gICAgICAgICAgICAg
ICAgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJh
dGlvIiwgJnJhdGlvTnVtZXJhdG9yLCAmcmF0aW9EZW5vbWluYXRvcik7Ci0gICAgICAgICAgICAg
ICAgZmluYWxIZWlnaHQgPSBoZWlnaHQgKiAoKGZsb2F0KSByYXRpb0Rlbm9taW5hdG9yIC8gKGZs
b2F0KSByYXRpb051bWVyYXRvcik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fcHJl
c2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgZmluYWxIZWlnaHQpOwot
ICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBl
R1N0cmVhbWVyOjpWaWRlbzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fcHJlc2Vu
dGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOwotICAgICAgICAgICAgaWYgKGdfc3Ry
X2hhc19wcmVmaXgob3JpZ2luYWxNZWRpYVR5cGUsICJhdWRpby8iKSkKLSAgICAgICAgICAgICAg
ICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6
OkF1ZGlvOwotICAgICAgICAgICAgZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChvcmlnaW5hbE1l
ZGlhVHlwZSwgInRleHQvIikpCi0gICAgICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29y
ZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpUZXh0OwotICAgICAgICB9Ci0gICAg
ICAgIHNpemVDb25maWd1cmVkID0gdHJ1ZTsKICAgICB9CiAjZW5kaWYKLQotICAgIGlmICghc2l6
ZUNvbmZpZ3VyZWQpIHsKLSAgICAgICAgY29uc3QgY2hhciogc3RydWN0dXJlTmFtZSA9IGdzdF9z
dHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLSAgICAgICAgR3N0VmlkZW9JbmZvIGluZm87
Ci0KLSAgICAgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRz
Q29kZWMoc3RydWN0dXJlTmFtZSkpIHsKKyAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGdldE1lZGlhVHlwZUZyb21DYXBzKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpOworICAg
IGlmICghTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c0NvZGVjKG9yaWdp
bmFsTWVkaWFUeXBlKSkgewogICAgICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29y
ZTo6RmxvYXRTaXplKCk7CiAgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRp
YVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OkludmFsaWQ7Ci0gICAgICAgIH0gZWxzZSBpZiAo
Z19zdHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1lLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2lu
Zm9fZnJvbV9jYXBzKCZpbmZvLCBkZW11eGVyU3JjUGFkQ2FwcykpIHsKLSAgICAgICAgICAgIGZs
b2F0IHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICAgICAgICAgIHdpZHRoID0gaW5mby53aWR0aDsKLSAg
ICAgICAgICAgIGhlaWdodCA9IGluZm8uaGVpZ2h0ICogKChmbG9hdCkgaW5mby5wYXJfZCAvIChm
bG9hdCkgaW5mby5wYXJfbik7Ci0KKyAgICB9IGVsc2UgaWYgKGNhcHNJc1R5cGUobV9kZW11eGVy
U3JjUGFkQ2Fwcy5nZXQoKSwgR1NUX1ZJREVPX0NBUFNfVFlQRSkpIHsKKyAgICAgICAgZmxvYXQg
d2lkdGgsIGhlaWdodDsKKyAgICAgICAgaWYgKGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKG1f
ZGVtdXhlclNyY1BhZENhcHMuZ2V0KCksIHdpZHRoLCBoZWlnaHQpKQogICAgICAgICAgICAgbV9w
cmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwotICAg
ICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0
cmVhbWVyOjpWaWRlbzsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7Ci0gICAgICAgICAg
ICBpZiAoZ19zdHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1lLCAiYXVkaW8vIikpCi0gICAgICAg
ICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0
cmVhbWVyOjpBdWRpbzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgoc3Ry
dWN0dXJlTmFtZSwgInRleHQvIikpCi0gICAgICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2Vi
Q29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpUZXh0OwotICAgICAgICB9CisK
KyAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0
cmVhbWVyOjpWaWRlbzsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUg
PSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKKyAgICAgICAgaWYgKGNhcHNJc1R5cGUobV9kZW11eGVy
U3JjUGFkQ2Fwcy5nZXQoKSwgR1NUX0FVRElPX0NBUFNfVFlQRSkpCisgICAgICAgICAgICBtX3N0
cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OkF1ZGlv
OworICAgICAgICBlbHNlIGlmIChjYXBzSXNUeXBlKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCks
IEdTVF9URVhUX0NBUFNfVFlQRSkpCisgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3Jl
OjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlRleHQ7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcAppbmRleCA3
NzZhMGJlOWIzYjQ2MzM3ZTNmMjEwMDEyMGRjYWRlYmZhOTI0NzQ5Li5jYWU4ZDFkNTU5OTEzNzhj
OTc0YzM0ZTE4NDI2NDg1YzhjZTNlNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0
cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaCIKLQorI2lu
Y2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJHU3RyZWFt
ZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KQEAgLTMzLDM1ICszMywx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF0b21pY1N0cmluZyBHU3RyZWFtZXJNZWRpYURl
c2NyaXB0aW9uOjpjb2RlYygpIGNvbnN0CiB7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGVzY3Jp
cHRpb24oZ3N0X3BiX3V0aWxzX2dldF9jb2RlY19kZXNjcmlwdGlvbihtX2NhcHMuZ2V0KCkpKTsK
LSAgICBTdHJpbmcgY29kZWNOYW1lKGRlc2NyaXB0aW9uLmdldCgpKTsKLQotICAgIC8vIFJlcG9y
dCAiSC4yNjQgKE1haW4gUHJvZmlsZSkiIGFuZCAiSC4yNjQgKEhpZ2ggUHJvZmlsZSkiIGp1c3Qg
YXMgIkguMjY0IiB0byBhbGxvdyBjaGFuZ2VzIGJldHdlZW4gYm90aCB2YXJpYW50cwotICAgIC8v
IGdvIHVubm90aWNlZCB0byB0aGUgU291cmNlQnVmZmVyIGxheWVyLgotICAgIGlmIChjb2RlY05h
bWUuc3RhcnRzV2l0aCgiSC4yNjQiKSkgewotICAgICAgICBzaXplX3QgYnJhY2VTdGFydCA9IGNv
ZGVjTmFtZS5maW5kKCIgKCIpOwotICAgICAgICBzaXplX3QgYnJhY2VFbmQgPSBjb2RlY05hbWUu
ZmluZCgiKSIpOwotICAgICAgICBpZiAoYnJhY2VTdGFydCAhPSBub3RGb3VuZCAmJiBicmFjZUVu
ZCAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIGNvZGVjTmFtZS5yZW1vdmUoYnJhY2VTdGFydCwg
YnJhY2VFbmQtYnJhY2VTdGFydCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvZGVjTmFtZTsKKyAg
ICByZXR1cm4gbV9jb2RlY05hbWU7CiB9CiAKIGJvb2wgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlv
bjo6aXNWaWRlbygpIGNvbnN0CiB7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rf
Y2Fwc19nZXRfc3RydWN0dXJlKG1fY2Fwcy5nZXQoKSwgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIG5h
bWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0KLSAgICByZXR1cm4gZ19z
dHJfaGFzX3ByZWZpeChuYW1lLCAidmlkZW8vIik7CisgICAgcmV0dXJuIGNhcHNJc1R5cGUobV9j
YXBzLmdldCgpLCBHU1RfVklERU9fQ0FQU19UWVBFKTsKIH0KIAogYm9vbCBHU3RyZWFtZXJNZWRp
YURlc2NyaXB0aW9uOjppc0F1ZGlvKCkgY29uc3QKIHsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9jYXBzLmdldCgpLCAwKTsKLSAgICBjb25z
dCBnY2hhciogbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLQotICAg
IHJldHVybiBnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJhdWRpby8iKTsKKyAgICByZXR1cm4gY2Fw
c0lzVHlwZShtX2NhcHMuZ2V0KCksIEdTVF9BVURJT19DQVBTX1RZUEUpOwogfQogCiBib29sIEdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CkBAIC03MCw2ICs1Miw0MyBA
QCBib29sIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitBdG9taWNTdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6
ZXh0cmFjdENvZGVjTmFtZSgpCit7CisgICAgR1JlZlB0cjxHc3RDYXBzPiBvcmlnaW5hbENhcCA9
IG1fY2FwczsKKworICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKG9yaWdpbmFsQ2FwLmdldCgpKSkg
eworICAgICAgICBvcmlnaW5hbENhcCA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG9yaWdpbmFs
Q2FwLmdldCgpKSk7CisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNf
Z2V0X3N0cnVjdHVyZShvcmlnaW5hbENhcC5nZXQoKSwgMCk7CisKKyAgICAgICAgaWYgKCFnc3Rf
c3RydWN0dXJlX2hhc19maWVsZChzdHJ1Y3R1cmUsICJvcmlnaW5hbC1tZWRpYS10eXBlIikpCisg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRf
bmFtZShzdHJ1Y3R1cmUsIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJvcmln
aW5hbC1tZWRpYS10eXBlIikpOworICAgICAgICAvLyBSZW1vdmUgdGhlIERSTSByZWxhdGVkIGZp
ZWxkcyBmcm9tIHRoZSBjYXBzLgorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGdzdF9zdHJ1
Y3R1cmVfbl9maWVsZHMoc3RydWN0dXJlKTsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBjaGFy
KiBmaWVsZE5hbWUgPSBnc3Rfc3RydWN0dXJlX250aF9maWVsZF9uYW1lKHN0cnVjdHVyZSwgaik7
CisKKyAgICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGZpZWxkTmFtZSwgInByb3RlY3Rp
b24tc3lzdGVtIikKKyAgICAgICAgICAgICAgICB8fCBnX3N0cl9oYXNfcHJlZml4KGZpZWxkTmFt
ZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKSkKKyAgICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJl
X3JlbW92ZV9maWVsZChzdHJ1Y3R1cmUsIGZpZWxkTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3RfcGJfdXRpbHNfZ2V0X2NvZGVj
X2Rlc2NyaXB0aW9uKG9yaWdpbmFsQ2FwLmdldCgpKSk7CisgICAgU3RyaW5nIGNvZGVjTmFtZShk
ZXNjcmlwdGlvbi5nZXQoKSk7CisKKyAgICAvLyBSZXBvcnQgIkguMjY0IChNYWluIFByb2ZpbGUp
IiBhbmQgIkguMjY0IChIaWdoIFByb2ZpbGUpIiBqdXN0IGFzICJILjI2NCIgdG8gYWxsb3cgY2hh
bmdlcyBiZXR3ZWVuIGJvdGggdmFyaWFudHMKKyAgICAvLyBnbyB1bm5vdGljZWQgdG8gdGhlIFNv
dXJjZUJ1ZmZlciBsYXllci4KKyAgICBpZiAoY29kZWNOYW1lLnN0YXJ0c1dpdGgoIkguMjY0Iikp
IHsKKyAgICAgICAgc2l6ZV90IGJyYWNlU3RhcnQgPSBjb2RlY05hbWUuZmluZCgiICgiKTsKKyAg
ICAgICAgc2l6ZV90IGJyYWNlRW5kID0gY29kZWNOYW1lLmZpbmQoIikiKTsKKyAgICAgICAgaWYg
KGJyYWNlU3RhcnQgIT0gbm90Rm91bmQgJiYgYnJhY2VFbmQgIT0gbm90Rm91bmQpCisgICAgICAg
ICAgICBjb2RlY05hbWUucmVtb3ZlKGJyYWNlU3RhcnQsIGJyYWNlRW5kLWJyYWNlU3RhcnQpOwor
ICAgIH0KKworICAgIHJldHVybiBjb2RlY05hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUuCiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaAppbmRleCA4NGUyNjNjYWFhN2FkMjQ3ODcwNWIwOTll
MGQ4ZmVkYjRlOWVhNDVhLi42MzVlYmM3YTI5M2E4ZmE4ZWFjNzZmMWIxNzdmNDZlMmU5N2MwZjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKIAogI2luY2x1
ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCw5ICs0OSwxMiBAQCBwcml2YXRlOgogICAgICAgICA6
IE1lZGlhRGVzY3JpcHRpb24oKQogICAgICAgICAsIG1fY2FwcyhjYXBzKQogICAgIHsKKyAgICAg
ICAgbV9jb2RlY05hbWUgPSBleHRyYWN0Q29kZWNOYW1lKCk7CiAgICAgfQogCisgICAgQXRvbWlj
U3RyaW5nIGV4dHJhY3RDb2RlY05hbWUoKTsKICAgICBHUmVmUHRyPEdzdENhcHM+IG1fY2FwczsK
KyAgICBBdG9taWNTdHJpbmcgbV9jb2RlY05hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCmluZGV4IGUwN2VjNTk2NzQ4NzdjYjI4ZTYxZTE2MGYyOWQzOTUzOWFiYmZh
NzYuLjRhYzhlYTgyOTlhMmIxM2IyYjAyYjA3MTQxNjk5ZjFhNzFhMTQ0ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
QEAgLTczOSwyMyArNzM5LDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
Ojp0cmFja0RldGVjdGVkKFJlZlB0cjxBcHBlbmRQaXBlbGluZT4gYXBwZW5kCiAgICAgQVNTRVJU
KGNhcHMpOwogICAgIEdTVF9ERUJVRygidHJhY2sgSUQ6ICVzLCBjYXBzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgbmV3VHJhY2stPmlkKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjYXBzKTsKIAot
ICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBz
LCAwKTsKLSAgICBjb25zdCBnY2hhciogbWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFt
ZShzdHJ1Y3R1cmUpOwotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgaWYgKGdfc3RyX2hh
c19wcmVmaXgobWVkaWFUeXBlLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBz
KCZpbmZvLCBjYXBzKSkgeworICAgIGlmIChjYXBzSXNUeXBlKGNhcHMsIEdTVF9WSURFT19DQVBT
X1RZUEUpKSB7CiAgICAgICAgIGZsb2F0IHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICAgICAgd2lkdGgg
PSBpbmZvLndpZHRoOwotICAgICAgICBoZWlnaHQgPSBpbmZvLmhlaWdodCAqICgoZmxvYXQpIGlu
Zm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotICAgICAgICBtX3ZpZGVvU2l6ZS5zZXRX
aWR0aCh3aWR0aCk7Ci0gICAgICAgIG1fdmlkZW9TaXplLnNldEhlaWdodChoZWlnaHQpOworICAg
ICAgICBpZiAoZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY2Fwcywgd2lkdGgsIGhlaWdodCkp
IHsKKyAgICAgICAgICAgIG1fdmlkZW9TaXplLnNldFdpZHRoKHdpZHRoKTsKKyAgICAgICAgICAg
IG1fdmlkZW9TaXplLnNldEhlaWdodChoZWlnaHQpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKGZpcnN0VHJhY2tEZXRlY3RlZCkKLSAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5hdHRh
Y2hUcmFjayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywg
c3RydWN0dXJlLCBjYXBzKTsKKyAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5hdHRhY2hUcmFj
ayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgY2Fwcyk7
CiAgICAgZWxzZQotICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPnJlYXR0YWNoVHJhY2soYXBw
ZW5kUGlwZWxpbmUtPnNvdXJjZUJ1ZmZlclByaXZhdGUoKSwgbmV3VHJhY2ssIG1lZGlhVHlwZSk7
CisgICAgICAgIG1fcGxheWJhY2tQaXBlbGluZS0+cmVhdHRhY2hUcmFjayhhcHBlbmRQaXBlbGlu
ZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgY2Fwcyk7CiB9CiAKIGNvbnN0IHN0
YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNvZGVjU2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1Bs
YXliYWNrUGlwZWxpbmUuY3BwCmluZGV4IDUzMTk5ZjZmYzNkNWMwM2IxOWYzN2QwYjZhN2RhZmJj
ZjAwZThlYjEuLmRjNmQ5N2MwZDg5OWE3YmI3MTMxYjU2ZjU0MDM2MWMwMGNjOGVkZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxh
eWJhY2tQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZv
aWQgUGxheWJhY2tQaXBlbGluZTo6cmVtb3ZlU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyPiBzCiAgICAgICAgIHdlYktpdE1lZGlhU3JjRnJlZVN0cmVhbSht
X3dlYktpdE1lZGlhU3JjLmdldCgpLCBzdHJlYW0pOwogfQogCi12b2lkIFBsYXliYWNrUGlwZWxp
bmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3Vy
Y2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4gdHJhY2tQcml2YXRlLCBH
c3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR3N0Q2FwcyogY2FwcykKK3ZvaWQgUGxheWJhY2tQaXBl
bGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNv
dXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUs
IEdzdENhcHMqIGNhcHMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmMqIHdlYktpdE1lZGlhU3JjID0g
bV93ZWJLaXRNZWRpYVNyYy5nZXQoKTsKIApAQCAtMTc3LDggKzE3Nyw3IEBAIHZvaWQgUGxheWJh
Y2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI+IHNvdXJjZUJ1CiAgICAgc3RyZWFtLT5wYXJlbnQtPnByaXYtPm51bWJlck9mUGFkcysrOwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHdlYktpdE1lZGlhU3JjKTsKIAotICAgIGNvbnN0IGdjaGFy
KiBtZWRpYVR5cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0KKyAgICBj
b25zdCBjaGFyKiBtZWRpYVR5cGUgPSBnZXRNZWRpYVR5cGVGcm9tQ2FwcyhjYXBzKTsKICAgICBH
U1RfREVCVUdfT0JKRUNUKHdlYktpdE1lZGlhU3JjLCAiQ29uZmlndXJlZCB0cmFjayAlczogYXBw
c3JjPSVzLCBwYWRJZD0ldSwgbWVkaWFUeXBlPSVzIiwgdHJhY2tQcml2YXRlLT5pZCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIEdTVF9FTEVNRU5UX05BTUUoc3RyZWFtLT5hcHBzcmMpLCBwYWRJ
ZCwgbWVkaWFUeXBlKTsKIAogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhcnNlckJpbk5hbWUoZ19z
dHJkdXBfcHJpbnRmKCJzdHJlYW1wYXJzZXIldSIsIHBhZElkKSk7CkBAIC0yMTcsNiArMjE2LDcg
QEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnUKICAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChz
dHJlYW0tPnBhcnNlciwgZ3N0X2dob3N0X3BhZF9uZXcoInNyYyIsIHBhZC5nZXQoKSkpOwogICAg
IH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZWRpYVR5cGUsICJhdWRpby9tcGVnIikpIHsKICAgICAg
ICAgZ2ludCBtcGVndmVyc2lvbiA9IC0xOworICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CiAgICAgICAgIGdzdF9zdHJ1Y3R1
cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJtcGVndmVyc2lvbiIsICZtcGVndmVyc2lvbik7CiAKICAg
ICAgICAgR3N0RWxlbWVudCogcGFyc2VyID0gbnVsbHB0cjsKQEAgLTI3MiwxNyArMjcyLDE3IEBA
IHZvaWQgUGxheWJhY2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1CiAgICAgaW50IHNpZ25hbCA9IC0xOwogCiAgICAgR1NU
X09CSkVDVF9MT0NLKHdlYktpdE1lZGlhU3JjKTsKLSAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeCht
ZWRpYVR5cGUsICJhdWRpbyIpKSB7CisgICAgaWYgKGNhcHNJc1R5cGUoY2FwcywgR1NUX0FVRElP
X0NBUFNfVFlQRSkpIHsKICAgICAgICAgc3RyZWFtLT50eXBlID0gQXVkaW87CiAgICAgICAgIHN0
cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJPZkF1ZGlvU3RyZWFtcysrOwogICAgICAgICBzaWdu
YWwgPSBTSUdOQUxfQVVESU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT5hdWRpb1RyYWNrID0g
UmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQoKSkp
OwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlbyIpKSB7
CisgICAgfSBlbHNlIGlmIChjYXBzSXNUeXBlKGNhcHMsIEdTVF9WSURFT19DQVBTX1RZUEUpKSB7
CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IFZpZGVvOwogICAgICAgICBzdHJlYW0tPnBhcmVudC0+
cHJpdi0+bnVtYmVyT2ZWaWRlb1N0cmVhbXMrKzsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX1ZJ
REVPX0NIQU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+dmlkZW9UcmFjayA9IFJlZlB0cjxXZWJDb3Jl
OjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIqPih0cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVsc2Ug
aWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidGV4dCIpKSB7CisgICAgfSBlbHNlIGlm
IChjYXBzSXNUeXBlKGNhcHMsIEdTVF9URVhUX0NBUFNfVFlQRSkpIHsKICAgICAgICAgc3RyZWFt
LT50eXBlID0gVGV4dDsKICAgICAgICAgc3RyZWFtLT5wYXJlbnQtPnByaXYtPm51bWJlck9mVGV4
dFN0cmVhbXMrKzsKICAgICAgICAgc2lnbmFsID0gU0lHTkFMX1RFWFRfQ0hBTkdFRDsKQEAgLTI5
NSw3ICsyOTUsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdQogICAgICAgICBnX3NpZ25hbF9l
bWl0KEdfT0JKRUNUKHN0cmVhbS0+cGFyZW50KSwgd2ViS2l0TWVkaWFTcmNTaWduYWxzW3NpZ25h
bF0sIDAsIG51bGxwdHIpOwogfQogCi12b2lkIFBsYXliYWNrUGlwZWxpbmU6OnJlYXR0YWNoVHJh
Y2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZh
dGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUsIGNvbnN0IGNoYXIqIG1l
ZGlhVHlwZSkKK3ZvaWQgUGxheWJhY2tQaXBlbGluZTo6cmVhdHRhY2hUcmFjayhSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRy
YWNrUHJpdmF0ZUJhc2U+IHRyYWNrUHJpdmF0ZSwgR3N0Q2FwcyogY2FwcykKIHsKICAgICBHU1Rf
REVCVUcoIlJlLWF0dGFjaGluZyB0cmFjayIpOwogCkBAIC0zMTMsMTUgKzMxMywxNSBAQCB2b2lk
IFBsYXliYWNrUGlwZWxpbmU6OnJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI+IHNvdXJjZQogICAgIGludCBzaWduYWwgPSAtMTsKIAogICAgIEdTVF9PQkpF
Q1RfTE9DSyh3ZWJLaXRNZWRpYVNyYyk7Ci0gICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFU
eXBlLCAiYXVkaW8iKSkgeworICAgIGlmIChjYXBzSXNUeXBlKGNhcHMsIEdTVF9BVURJT19DQVBT
X1RZUEUpKSB7CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gQXVkaW8pOwogICAgICAg
ICBzaWduYWwgPSBTSUdOQUxfQVVESU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT5hdWRpb1Ry
YWNrID0gUmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5n
ZXQoKSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRl
byIpKSB7CisgICAgfSBlbHNlIGlmIChjYXBzSXNUeXBlKGNhcHMsIEdTVF9WSURFT19DQVBTX1RZ
UEUpKSB7CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gVmlkZW8pOwogICAgICAgICBz
aWduYWwgPSBTSUdOQUxfVklERU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNr
ID0gUmVmUHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQo
KSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0Iikp
IHsKKyAgICB9IGVsc2UgaWYgKGNhcHNJc1R5cGUoY2FwcywgR1NUX1RFWFRfQ0FQU19UWVBFKSkg
ewogICAgICAgICBBU1NFUlQoc3RyZWFtLT50eXBlID09IFRleHQpOwogICAgICAgICBzaWduYWwg
PSBTSUdOQUxfVEVYVF9DSEFOR0VEOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5o
CmluZGV4IDY2NjFkNmEyZmY2NGNkNmI4NWI5MTk3MDU0NzNkOTNjODhjMTY4OWIuLjdmNzJlNDdm
YTc3OTE2MGU3ZGUwNGMyOGE1NTQ2YWNjZmRiNjM1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJh
Y2tQaXBlbGluZS5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhU291cmNl
UHJpdmF0ZTo6QWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihSZWZQdHI8U291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lcj4pOwogICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFJlZlB0cjxTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPik7Ci0gICAgdm9pZCBhdHRhY2hUcmFjayhSZWZQdHI8
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiwg
R3N0U3RydWN0dXJlKiwgR3N0Q2FwcyopOwotICAgIHZvaWQgcmVhdHRhY2hUcmFjayhSZWZQdHI8
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiwg
Y29uc3QgY2hhciopOworICAgIHZvaWQgYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+LCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4sIEdzdENhcHMqKTsKKyAg
ICB2b2lkIHJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
LCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4sIEdzdENhcHMqKTsKICAgICB2b2lkIG5vdGlmeUR1
cmF0aW9uQ2hhbmdlZCgpOwogCiAgICAgLy8gRnJvbSBNZWRpYVNvdXJjZUdTdHJlYW1lci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggNjllZmMxYzEwNDkzZTAyNmY3MGM0NDI3NDc0NTA4YjM2ZjBlZDBhNi4uZDlmMDNmZGJjZjZj
YjY2YWY4MmUyNmQ4NDljY2NhYzc0MWJmNWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ1MiwxOCArNDUyLDE0IEBAIGdi
b29sZWFuIHdlYktpdE1lZGlhU3JjUXVlcnlXaXRoUGFyZW50KEdzdFBhZCogcGFkLCBHc3RPYmpl
Y3QqIHBhcmVudCwgR3N0UXVlcnkqCiAKIHZvaWQgd2ViS2l0TWVkaWFTcmNVcGRhdGVQcmVzZW50
YXRpb25TaXplKEdzdENhcHMqIGNhcHMsIFN0cmVhbSogc3RyZWFtKQogewotICAgIEdzdFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKLSAgICBj
b25zdCBnY2hhciogc3RydWN0dXJlTmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0
dXJlKTsKLSAgICBHc3RWaWRlb0luZm8gaW5mbzsKLQogICAgIEdTVF9PQkpFQ1RfTE9DSyhzdHJl
YW0tPnBhcmVudCk7Ci0gICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoc3RydWN0dXJlTmFtZSwgInZp
ZGVvLyIpICYmIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpIHsKKyAgICBp
ZiAoV2ViQ29yZTo6Y2Fwc0lzVHlwZShjYXBzLCBHU1RfVklERU9fQ0FQU19UWVBFKSkgewogICAg
ICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OwogCi0gICAgICAgIC8vIEZJWE1FOiBDb3JyZWN0Py4K
LSAgICAgICAgd2lkdGggPSBpbmZvLndpZHRoOwotICAgICAgICBoZWlnaHQgPSBpbmZvLmhlaWdo
dCAqICgoZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotICAgICAgICBz
dHJlYW0tPnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIGlmIChXZWJDb3JlOjpnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhjYXBz
LCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9
IFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZs
b2F0U2l6ZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333381</attachid>
            <date>2018-02-08 09:51:32 -0800</date>
            <delta_ts>2018-02-09 02:54:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180208185130.patch</filename>
            <type>text/plain</type>
            <size>28675</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uZTE5MTMwOTMwMDZkZDAyMjQ5YTYwY2M1MDhkNzBl
M2Y3M2JhMTcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIGNhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIGNhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIGNhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gY2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIGNhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgY2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIGNhcHMuCisgICAgICAg
IChXZWJDb3JlOjpnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyk6CisgICAgICAgIChXZWJDb3Jl
OjpjYXBzTWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvQ2Fwc0hhdmVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFyZUVuY3J5cHRlZENhcHMpOiBBZGQgYSBuZXcgZnVuY3Rpb25zIGlu
IG9yZGVyIHRvIGhhbmRsZSB0aGUgY2FwcyBwcm9wZXJseS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNv
ZGVjIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246
OmlzVmlkZW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFEZXNjcmlw
dGlvbjo6aXNBdWRpbyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp0cmFja0RldGVjdGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6YXR0YWNoVHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6cmVhdHRhY2hUcmFjayk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1VwZGF0ZVByZXNlbnRh
dGlvblNpemUpOiBSZWZhY3RvciBzb21lIHBhcnRzIGJ5IHVzaW5nIHRoZSBuZXcgYWRkZWQgZnVu
Y3Rpb25zLgorCiAyMDE4LTAxLTE5ICBZYWNpbmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRA
c29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBBZGQgYSBuZXcgbWVz
c2FnZSAiZGVjcnlwdC1rZXktbmVlZGVkIiBzZW5kIGZyb20gdGhlIGRlY3J5cHRvciB0byB0aGUg
YXBwbGljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCmluZGV4IDQ3NjJh
ZTg4NTViOGIxNzhhNGZhYmE2YmY4MjIzYWZlNTdmNjU4OGUuLjdkYjM2YTlkMzg5YjljMTQxMDNl
M2Y0N2MwZjI5ZjVjOTFlMDNiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3Bw
CkBAIC01OSwyMiArNTksNzAgQEAgR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNU
ZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGwKICNpZiBFTkFCTEUo
VklERU8pCiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqIGNhcHMs
IFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZpZGVvRm9ybWF0JiBmb3JtYXQsIGludCYgcGl4
ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3Is
IGludCYgc3RyaWRlKQogewotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgZ3N0X3ZpZGVv
X2luZm9faW5pdCgmaW5mbyk7Ci0gICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmlu
Zm8sIGNhcHMpKQorICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNf
VFlQRV9QUkVGSVgpKSB7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGdldCB0aGUgdmlk
ZW8gc2l6ZSBhbmQgZm9ybWF0LCB0aGV5IGFyZSBub3QgYSB2aWRlbyBjYXBzIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JN
QVQoJmluZm8pOwotICAgIHNpemUuc2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8p
KTsKLSAgICBzaXplLnNldEhlaWdodChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsKLSAg
ICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8p
OwotICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9E
KCZpbmZvKTsKLSAgICBzdHJpZGUgPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmluZm8s
IDApOworICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKGNhcHMpKSB7CisgICAgICAgIEdzdFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICAg
ICAgZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9FTkNPREVEOworICAgICAgICBzdHJpZGUgPSAw
OworICAgICAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgICAgICBnc3Rfc3RydWN0
dXJlX2dldF9pbnQoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpOworICAgICAgICBnc3Rfc3Ry
dWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCk7CisgICAgICAgIGlm
ICghZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJh
dGlvIiwgJnBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsICZwaXhlbEFzcGVjdFJhdGlvRGVub21p
bmF0b3IpKQorICAgICAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciA9IDE7CisKKyAgICAgICAgc2l6ZS5zZXRXaWR0aCh3aWR0aCk7
CisgICAgICAgIHNpemUuc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
R3N0VmlkZW9JbmZvIGluZm87CisgICAgICAgIGdzdF92aWRlb19pbmZvX2luaXQoJmluZm8pOwor
ICAgICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9f
Rk9STUFUKCZpbmZvKTsKKyAgICAgICAgc2l6ZS5zZXRXaWR0aChHU1RfVklERU9fSU5GT19XSURU
SCgmaW5mbykpOworICAgICAgICBzaXplLnNldEhlaWdodChHU1RfVklERU9fSU5GT19IRUlHSFQo
JmluZm8pKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IEdTVF9WSURFT19J
TkZPX1BBUl9OKCZpbmZvKTsKKyAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yID0g
R1NUX1ZJREVPX0lORk9fUEFSX0QoJmluZm8pOworICAgICAgICBzdHJpZGUgPSBHU1RfVklERU9f
SU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwog
fQogCitzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMo
Y29uc3QgR3N0Q2FwcyogY2FwcykKK3sKKyAgICBpZiAoIWRvQ2Fwc0hhdmVUeXBlKGNhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgeworICAgICAgICBHU1RfV0FSTklORygiRmFpbGVk
IHRvIGdldCB0aGUgdmlkZW8gcmVzb2x1dGlvbiwgdGhleSBhcmUgbm90IGEgdmlkZW8gY2FwcyIp
OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+KCk7CisgICAgfQorCisg
ICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKyAgICBpbnQgcGl4ZWxBc3BlY3RSYXRpb051
bWVyYXRvciA9IDEsIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IDE7CisKKyAgICBpZiAo
YXJlRW5jcnlwdGVkQ2FwcyhjYXBzKSkgeworICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisgICAgICAgIGdzdF9zdHJ1Y3R1
cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCk7CisgICAgICAgIGdzdF9zdHJ1
Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmaGVpZ2h0KTsKKyAgICAgICAgZ3N0
X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwg
JnBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsICZwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3Ip
OworICAgIH0gZWxzZSB7CisgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOworICAgICAgICBnc3Rf
dmlkZW9faW5mb19pbml0KCZpbmZvKTsKKyAgICAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9t
X2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPigpOworCisgICAgICAgIHdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8p
OworICAgICAgICBoZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pOworICAgICAg
ICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8p
OworICAgICAgICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklERU9fSU5GT19Q
QVJfRCgmaW5mbyk7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PihGbG9hdFNpemUod2lkdGgsIGhlaWdodCAqIChzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3Bl
Y3RSYXRpb051bWVyYXRvcikgLyBzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKSkpKTsKK30KKwogYm9vbCBnZXRTYW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiBz
YW1wbGUsIEdzdFZpZGVvSW5mbyYgdmlkZW9JbmZvKQogewogICAgIGlmICghR1NUX0lTX1NBTVBM
RShzYW1wbGUpKQpAQCAtMTEzLDYgKzE2MSw0NyBAQCBHc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZl
ckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gYnVmZmVy
OwogfQogCitjb25zdCBjaGFyKiBjYXBzTWVkaWFUeXBlKGNvbnN0IEdzdENhcHMqIGNhcHMpCit7
CisgICAgQVNTRVJUKGNhcHMpOworICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2Nh
cHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkgeworICAgICAg
ICBHU1RfV0FSTklORygiY2FwcyBhcmUgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGdzdF9zdHJ1Y3R1
cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIikpCisgICAgICAgIHJl
dHVybiBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAib3JpZ2luYWwtbWVkaWEt
dHlwZSIpOworI2VuZGlmCisgICAgcmV0dXJuIGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0
dXJlKTsKK30KKworYm9vbCBkb0NhcHNIYXZlVHlwZShjb25zdCBHc3RDYXBzKiBjYXBzLCBjb25z
dCBjaGFyKiB0eXBlKQoreworICAgIGNvbnN0IGNoYXIqIG1lZGlhVHlwZSA9IGNhcHNNZWRpYVR5
cGUoY2Fwcyk7CisgICAgaWYgKCFtZWRpYVR5cGUpIHsKKyAgICAgICAgR1NUX1dBUk5JTkcoIkZh
aWxlZCB0byBnZXQgTWVkaWFUeXBlIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCB0eXBlKTsKK30KKworYm9vbCBh
cmVFbmNyeXB0ZWRDYXBzKGNvbnN0IEdzdENhcHMqIGNhcHMpCit7CisgICAgQVNTRVJUKGNhcHMp
OworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworICAgIGlmICghc3RydWN0dXJl
KSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJjYXBzIGFyZSBlbXB0eSIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVj
dHVyZSwgImFwcGxpY2F0aW9uL3gtY2VuYyIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2Fw
cyk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGNoYXIqIGdldEdzdEJ1ZmZlckRh
dGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQogewogICAgIEdzdE1pbmlPYmplY3QqIG1pbmlP
YmplY3QgPSByZWludGVycHJldF9jYXN0PEdzdE1pbmlPYmplY3QqPihidWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclV0aWxpdGllcy5oCmluZGV4IGUxNjg1ODIxMWUyOTU5ZTlmNzQzYTMzOTI4OTBk
MTExNDA3ZGY4YjcuLjg0NzJkNzgyOTk1YjU1M2ZiYjQ5MjExNzc0ODRjYzVlODgxN2VjNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKQEAgLTIwLDYgKzIwLDcgQEAKICNwcmFnbWEg
b25jZQogCiAKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAj
aW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZvcm1hdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92
aWRlby1pbmZvLmg+CkBAIC01MCwxNCArNTEsMjIgQEAgaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hl
Y2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKKyNkZWZpbmUgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVggICJ2aWRl
by8iCisjZGVmaW5lIEdTVF9BVURJT19DQVBTX1RZUEVfUFJFRklYICAiYXVkaW8vIgorI2RlZmlu
ZSBHU1RfVEVYVF9DQVBTX1RZUEVfUFJFRklYICAgInRleHQvIgorCiBHc3RQYWQqIHdlYmtpdEdz
dEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKEdzdFN0YXRpY1BhZFRlbXBsYXRlKiwgY29uc3Qg
Z2NoYXIqIG5hbWUsIEdzdFBhZCogdGFyZ2V0KTsKICNpZiBFTkFCTEUoVklERU8pCiBib29sIGdl
dFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJDb3JlOjpJbnRTaXplJiwg
R3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4
ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7CitzdGQ6Om9wdGlvbmFsPEZs
b2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyopOwogYm9v
bCBnZXRTYW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiwgR3N0VmlkZW9JbmZvJik7CiAjZW5kaWYK
IEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwogR3N0QnVmZmVyKiBjcmVh
dGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogY2hhciog
Z2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKik7Citjb25zdCBjaGFyKiBjYXBzTWVk
aWFUeXBlKGNvbnN0IEdzdENhcHMqKTsKK2Jvb2wgZG9DYXBzSGF2ZVR5cGUoY29uc3QgR3N0Q2Fw
cyosIGNvbnN0IGNoYXIqKTsKK2Jvb2wgYXJlRW5jcnlwdGVkQ2Fwcyhjb25zdCBHc3RDYXBzKik7
CiB2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqLCB1aW50MzJfdCk7CiB2b2lkIHVubWFwR3N0
QnVmZmVyKEdzdEJ1ZmZlciopOwogYm9vbCBpbml0aWFsaXplR1N0cmVhbWVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGNlYmJmMmU3YmU1NjJmYWMxODBiMTRmZDc2
NGI5YzljNTVkM2ZhYzEuLmE1MzAwOWI5MTk0ZmMwNDEyMTcyNjZlZGE2ZTE4MmY1MmRmNDhmYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lckVNRVV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUdTdHJlYW1lci5o
IgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJNZWRpYURlc2NyaXB0aW9uLmgiCkBAIC01ODIsNzQgKzU4MywzNiBAQCB2b2lkIEFwcGVuZFBp
cGVsaW5lOjpwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKEdzdENhcHMqIGRlbXV4ZXJTcmNQYWRDYXBz
KQogCiAgICAgbV9kZW11eGVyU3JjUGFkQ2FwcyA9IGFkb3B0R1JlZihkZW11eGVyU3JjUGFkQ2Fw
cyk7CiAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0
cmVhbWVyOjpVbmtub3duOwotCi0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fw
c19nZXRfc3RydWN0dXJlKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCksIDApOwotICAgIGJvb2wg
c2l6ZUNvbmZpZ3VyZWQgPSBmYWxzZTsKLQotI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDUsIDMp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIikpIHsKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKG1fZGVtdXhlclNyY1BhZENhcHMu
Z2V0KCkpKSB7CiAgICAgICAgIC8vIEFueSBwcmV2aW91cyBkZWNyeXB0b3Igc2hvdWxkIGhhdmUg
YmVlbiByZW1vdmVkIGZyb20gdGhlIHBpcGVsaW5lIGJ5IGRpc2Nvbm5lY3RGcm9tQXBwU2lua0Zy
b21TdHJlYW1pbmdUaHJlYWQoKQogICAgICAgICBBU1NFUlQoIW1fZGVjcnlwdG9yKTsKLQorICAg
ICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9k
ZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSwgMCk7CiAgICAgICAgIG1fZGVjcnlwdG9yID0gR1N0cmVh
bWVyRU1FVXRpbGl0aWVzOjpjcmVhdGVEZWNyeXB0b3IoZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgInByb3RlY3Rpb24tc3lzdGVtIikpOwogICAgICAgICBpZiAoIW1fZGVjcnlw
dG9yKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImRlY3J5cHRvciBub3QgZm91bmQgZm9yIGNh
cHM6ICUiIEdTVF9QVFJfRk9STUFULCBtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGdjaGFyKiBvcmlnaW5h
bE1lZGlhVHlwZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJvcmlnaW5h
bC1tZWRpYS10eXBlIik7Ci0KLSAgICAgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U6OnN1cHBvcnRzQ29kZWMob3JpZ2luYWxNZWRpYVR5cGUpKSB7Ci0gICAgICAgICAgICBt
X3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKLSAgICAgICAgICAgIG1f
c3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6SW52
YWxpZDsKLSAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG9yaWdpbmFsTWVkaWFU
eXBlLCAidmlkZW8vIikpIHsKLSAgICAgICAgICAgIGludCB3aWR0aCA9IDA7Ci0gICAgICAgICAg
ICBpbnQgaGVpZ2h0ID0gMDsKLSAgICAgICAgICAgIGZsb2F0IGZpbmFsSGVpZ2h0ID0gMDsKLQot
ICAgICAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIs
ICZ3aWR0aCkgJiYgZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImhlaWdodCIsICZo
ZWlnaHQpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJhdGlvTnVtZXJhdG9yID0gMTsKLSAgICAg
ICAgICAgICAgICBpbnQgcmF0aW9EZW5vbWluYXRvciA9IDE7Ci0KLSAgICAgICAgICAgICAgICBn
c3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbihzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8i
LCAmcmF0aW9OdW1lcmF0b3IsICZyYXRpb0Rlbm9taW5hdG9yKTsKLSAgICAgICAgICAgICAgICBm
aW5hbEhlaWdodCA9IGhlaWdodCAqICgoZmxvYXQpIHJhdGlvRGVub21pbmF0b3IgLyAoZmxvYXQp
IHJhdGlvTnVtZXJhdG9yKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9wcmVzZW50
YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBmaW5hbEhlaWdodCk7Ci0gICAg
ICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3Ry
ZWFtZXI6OlZpZGVvOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9wcmVzZW50YXRp
b25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7Ci0gICAgICAgICAgICBpZiAoZ19zdHJfaGFz
X3ByZWZpeChvcmlnaW5hbE1lZGlhVHlwZSwgImF1ZGlvLyIpKQotICAgICAgICAgICAgICAgIG1f
c3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6QXVk
aW87Ci0gICAgICAgICAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG9yaWdpbmFsTWVkaWFU
eXBlLCAidGV4dC8iKSkKLSAgICAgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpN
ZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAg
c2l6ZUNvbmZpZ3VyZWQgPSB0cnVlOwogICAgIH0KICNlbmRpZgotCi0gICAgaWYgKCFzaXplQ29u
ZmlndXJlZCkgewotICAgICAgICBjb25zdCBjaGFyKiBzdHJ1Y3R1cmVOYW1lID0gZ3N0X3N0cnVj
dHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwotICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKLQot
ICAgICAgICBpZiAoIU1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNDb2Rl
YyhzdHJ1Y3R1cmVOYW1lKSkgeworICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0g
Y2Fwc01lZGlhVHlwZShtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpKTsKKyAgICBpZiAoIU1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNDb2RlYyhvcmlnaW5hbE1lZGlhVHlw
ZSkpIHsKICAgICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6
ZSgpOwogICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJl
YW1UeXBlR1N0cmVhbWVyOjpJbnZhbGlkOwotICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19w
cmVmaXgoc3RydWN0dXJlTmFtZSwgInZpZGVvLyIpICYmIGdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmaW5mbywgZGVtdXhlclNyY1BhZENhcHMpKSB7Ci0gICAgICAgICAgICBmbG9hdCB3aWR0aCwg
aGVpZ2h0OwotCi0gICAgICAgICAgICB3aWR0aCA9IGluZm8ud2lkdGg7Ci0gICAgICAgICAgICBo
ZWlnaHQgPSBpbmZvLmhlaWdodCAqICgoZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8u
cGFyX24pOwotCi0gICAgICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9h
dFNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3Jl
OjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlZpZGVvOwotICAgICAgICB9IGVsc2Ug
eworICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQo
KSwgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBzaXplID0gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMobV9kZW11eGVyU3Jj
UGFkQ2Fwcy5nZXQoKSk7CisgICAgICAgIGlmIChzaXplLmhhc192YWx1ZSgpKQorICAgICAgICAg
ICAgbV9wcmVzZW50YXRpb25TaXplID0gc2l6ZS52YWx1ZSgpOworICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3ByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKLSAgICAg
ICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVyZU5hbWUsICJhdWRpby8iKSkKLSAg
ICAgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5
cGVHU3RyZWFtZXI6OkF1ZGlvOwotICAgICAgICAgICAgZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZp
eChzdHJ1Y3R1cmVOYW1lLCAidGV4dC8iKSkKLSAgICAgICAgICAgICAgICBtX3N0cmVhbVR5cGUg
PSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OlRleHQ7Ci0gICAgICAg
IH0KKworICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5
cGVHU3RyZWFtZXI6OlZpZGVvOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcHJlc2VudGF0aW9u
U2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOworICAgICAgICBpZiAoZG9DYXBzSGF2ZVR5cGUo
bV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSwgR1NUX0FVRElPX0NBUFNfVFlQRV9QUkVGSVgpKQor
ICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBl
R1N0cmVhbWVyOjpBdWRpbzsKKyAgICAgICAgZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUobV9kZW11
eGVyU3JjUGFkQ2Fwcy5nZXQoKSwgR1NUX1RFWFRfQ0FQU19UWVBFX1BSRUZJWCkpCisgICAgICAg
ICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFt
ZXI6OlRleHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJN
ZWRpYURlc2NyaXB0aW9uLmNwcAppbmRleCA3NzZhMGJlOWIzYjQ2MzM3ZTNmMjEwMDEyMGRjYWRl
YmZhOTI0NzQ5Li45YzhkNjI0OWNhNDIzMWI0ZmY0OGY1NDlmNmZlMWJhYjdjMDkwMmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAKQEAg
LTIwLDcgKzIwLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdTdHJlYW1l
ck1lZGlhRGVzY3JpcHRpb24uaCIKLQorI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkdVbmlxdWVQdHJHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9wYnV0aWxz
L3BidXRpbHMuaD4KQEAgLTMzLDM1ICszMywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF0
b21pY1N0cmluZyBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjpjb2RlYygpIGNvbnN0CiB7Ci0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGVzY3JpcHRpb24oZ3N0X3BiX3V0aWxzX2dldF9jb2RlY19k
ZXNjcmlwdGlvbihtX2NhcHMuZ2V0KCkpKTsKLSAgICBTdHJpbmcgY29kZWNOYW1lKGRlc2NyaXB0
aW9uLmdldCgpKTsKLQotICAgIC8vIFJlcG9ydCAiSC4yNjQgKE1haW4gUHJvZmlsZSkiIGFuZCAi
SC4yNjQgKEhpZ2ggUHJvZmlsZSkiIGp1c3QgYXMgIkguMjY0IiB0byBhbGxvdyBjaGFuZ2VzIGJl
dHdlZW4gYm90aCB2YXJpYW50cwotICAgIC8vIGdvIHVubm90aWNlZCB0byB0aGUgU291cmNlQnVm
ZmVyIGxheWVyLgotICAgIGlmIChjb2RlY05hbWUuc3RhcnRzV2l0aCgiSC4yNjQiKSkgewotICAg
ICAgICBzaXplX3QgYnJhY2VTdGFydCA9IGNvZGVjTmFtZS5maW5kKCIgKCIpOwotICAgICAgICBz
aXplX3QgYnJhY2VFbmQgPSBjb2RlY05hbWUuZmluZCgiKSIpOwotICAgICAgICBpZiAoYnJhY2VT
dGFydCAhPSBub3RGb3VuZCAmJiBicmFjZUVuZCAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIGNv
ZGVjTmFtZS5yZW1vdmUoYnJhY2VTdGFydCwgYnJhY2VFbmQtYnJhY2VTdGFydCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGNvZGVjTmFtZTsKKyAgICByZXR1cm4gbV9jb2RlY05hbWU7CiB9CiAKIGJv
b2wgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNWaWRlbygpIGNvbnN0CiB7Ci0gICAgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1fY2Fwcy5nZXQo
KSwgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0
cnVjdHVyZSk7Ci0KLSAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChuYW1lLCAidmlkZW8vIik7
CisgICAgcmV0dXJuIGRvQ2Fwc0hhdmVUeXBlKG1fY2Fwcy5nZXQoKSwgR1NUX1ZJREVPX0NBUFNf
VFlQRV9QUkVGSVgpOwogfQogCiBib29sIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzQXVk
aW8oKSBjb25zdAogewotICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0
X3N0cnVjdHVyZShtX2NhcHMuZ2V0KCksIDApOwotICAgIGNvbnN0IGdjaGFyKiBuYW1lID0gZ3N0
X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwotCi0gICAgcmV0dXJuIGdfc3RyX2hhc19w
cmVmaXgobmFtZSwgImF1ZGlvLyIpOworICAgIHJldHVybiBkb0NhcHNIYXZlVHlwZShtX2NhcHMu
Z2V0KCksIEdTVF9BVURJT19DQVBTX1RZUEVfUFJFRklYKTsKIH0KIAogYm9vbCBHU3RyZWFtZXJN
ZWRpYURlc2NyaXB0aW9uOjppc1RleHQoKSBjb25zdApAQCAtNzAsNiArNTIsNDMgQEAgYm9vbCBH
U3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjppc1RleHQoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorQXRvbWljU3RyaW5nIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmV4dHJhY3RD
b2RlY05hbWUoKQoreworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gb3JpZ2luYWxDYXBzID0gbV9jYXBz
OworCisgICAgaWYgKGFyZUVuY3J5cHRlZENhcHMob3JpZ2luYWxDYXBzLmdldCgpKSkgeworICAg
ICAgICBvcmlnaW5hbENhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfY29weShvcmlnaW5hbENhcHMu
Z2V0KCkpKTsKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRf
c3RydWN0dXJlKG9yaWdpbmFsQ2Fwcy5nZXQoKSwgMCk7CisKKyAgICAgICAgaWYgKCFnc3Rfc3Ry
dWN0dXJlX2hhc19maWVsZChzdHJ1Y3R1cmUsICJvcmlnaW5hbC1tZWRpYS10eXBlIikpCisgICAg
ICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKCk7CisKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9z
ZXRfbmFtZShzdHJ1Y3R1cmUsIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJv
cmlnaW5hbC1tZWRpYS10eXBlIikpOworICAgICAgICAvLyBSZW1vdmUgdGhlIERSTSByZWxhdGVk
IGZpZWxkcyBmcm9tIHRoZSBjYXBzLgorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGdzdF9z
dHJ1Y3R1cmVfbl9maWVsZHMoc3RydWN0dXJlKTsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWVsZE5hbWUgPSBnc3Rfc3RydWN0dXJlX250aF9maWVsZF9uYW1lKHN0cnVjdHVyZSwg
aik7CisKKyAgICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGZpZWxkTmFtZSwgInByb3Rl
Y3Rpb24tc3lzdGVtIikKKyAgICAgICAgICAgICAgICB8fCBnX3N0cl9oYXNfcHJlZml4KGZpZWxk
TmFtZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKSkKKyAgICAgICAgICAgICAgICBnc3Rfc3RydWN0
dXJlX3JlbW92ZV9maWVsZChzdHJ1Y3R1cmUsIGZpZWxkTmFtZSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3RfcGJfdXRpbHNfZ2V0X2Nv
ZGVjX2Rlc2NyaXB0aW9uKG9yaWdpbmFsQ2Fwcy5nZXQoKSkpOworICAgIFN0cmluZyBjb2RlY05h
bWUoZGVzY3JpcHRpb24uZ2V0KCkpOworCisgICAgLy8gUmVwb3J0ICJILjI2NCAoTWFpbiBQcm9m
aWxlKSIgYW5kICJILjI2NCAoSGlnaCBQcm9maWxlKSIganVzdCBhcyAiSC4yNjQiIHRvIGFsbG93
IGNoYW5nZXMgYmV0d2VlbiBib3RoIHZhcmlhbnRzCisgICAgLy8gZ28gdW5ub3RpY2VkIHRvIHRo
ZSBTb3VyY2VCdWZmZXIgbGF5ZXIuCisgICAgaWYgKGNvZGVjTmFtZS5zdGFydHNXaXRoKCJILjI2
NCIpKSB7CisgICAgICAgIHNpemVfdCBicmFjZVN0YXJ0ID0gY29kZWNOYW1lLmZpbmQoIiAoIik7
CisgICAgICAgIHNpemVfdCBicmFjZUVuZCA9IGNvZGVjTmFtZS5maW5kKCIpIik7CisgICAgICAg
IGlmIChicmFjZVN0YXJ0ICE9IG5vdEZvdW5kICYmIGJyYWNlRW5kICE9IG5vdEZvdW5kKQorICAg
ICAgICAgICAgY29kZWNOYW1lLnJlbW92ZShicmFjZVN0YXJ0LCBicmFjZUVuZCAtIGJyYWNlU3Rh
cnQpOworICAgIH0KKworICAgIHJldHVybiBjb2RlY05hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUuCiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURl
c2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaAppbmRleCA4NGUyNjNjYWFhN2FkMjQ3ODcw
NWIwOTllMGQ4ZmVkYjRlOWVhNDVhLi42MzVlYmM3YTI5M2E4ZmE4ZWFjNzZmMWIxNzdmNDZlMmU5
N2MwZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRp
b24uaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKIAog
I2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCw5ICs0OSwxMiBAQCBwcml2YXRlOgogICAg
ICAgICA6IE1lZGlhRGVzY3JpcHRpb24oKQogICAgICAgICAsIG1fY2FwcyhjYXBzKQogICAgIHsK
KyAgICAgICAgbV9jb2RlY05hbWUgPSBleHRyYWN0Q29kZWNOYW1lKCk7CiAgICAgfQogCisgICAg
QXRvbWljU3RyaW5nIGV4dHJhY3RDb2RlY05hbWUoKTsKICAgICBHUmVmUHRyPEdzdENhcHM+IG1f
Y2FwczsKKyAgICBBdG9taWNTdHJpbmcgbV9jb2RlY05hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IGUwN2VjNTk2NzQ4NzdjYjI4ZTYxZTE2MGYyOWQzOTUz
OWFiYmZhNzYuLjkxOGM0Mjc2N2NjYmNjM2MyY2E4ODg2MmUzOTA2OGNjMTljZDlhNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKQEAgLTczOSwyMyArNzM5LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjp0cmFja0RldGVjdGVkKFJlZlB0cjxBcHBlbmRQaXBlbGluZT4gYXBwZW5kCiAgICAg
QVNTRVJUKGNhcHMpOwogICAgIEdTVF9ERUJVRygidHJhY2sgSUQ6ICVzLCBjYXBzOiAlIiBHU1Rf
UFRSX0ZPUk1BVCwgbmV3VHJhY2stPmlkKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjYXBz
KTsKIAotICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVy
ZShjYXBzLCAwKTsKLSAgICBjb25zdCBnY2hhciogbWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9n
ZXRfbmFtZShzdHJ1Y3R1cmUpOwotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgaWYgKGdf
c3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9fZnJv
bV9jYXBzKCZpbmZvLCBjYXBzKSkgewotICAgICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OwotCi0g
ICAgICAgIHdpZHRoID0gaW5mby53aWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gaW5mby5oZWlnaHQg
KiAoKGZsb2F0KSBpbmZvLnBhcl9kIC8gKGZsb2F0KSBpbmZvLnBhcl9uKTsKLSAgICAgICAgbV92
aWRlb1NpemUuc2V0V2lkdGgod2lkdGgpOwotICAgICAgICBtX3ZpZGVvU2l6ZS5zZXRIZWlnaHQo
aGVpZ2h0KTsKKyAgICBpZiAoZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQ
RV9QUkVGSVgpKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBzaXplID0gZ2V0
VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY2Fwcyk7CisgICAgICAgIGlmIChzaXplLmhhc192YWx1
ZSgpKQorICAgICAgICAgICAgbV92aWRlb1NpemUgPSBzaXplLnZhbHVlKCk7CiAgICAgfQogCiAg
ICAgaWYgKGZpcnN0VHJhY2tEZXRlY3RlZCkKLSAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5h
dHRhY2hUcmFjayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFj
aywgc3RydWN0dXJlLCBjYXBzKTsKKyAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5hdHRhY2hU
cmFjayhhcHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgY2Fw
cyk7CiAgICAgZWxzZQotICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPnJlYXR0YWNoVHJhY2so
YXBwZW5kUGlwZWxpbmUtPnNvdXJjZUJ1ZmZlclByaXZhdGUoKSwgbmV3VHJhY2ssIG1lZGlhVHlw
ZSk7CisgICAgICAgIG1fcGxheWJhY2tQaXBlbGluZS0+cmVhdHRhY2hUcmFjayhhcHBlbmRQaXBl
bGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgY2Fwcyk7CiB9CiAKIGNvbnN0
IHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNvZGVjU2V0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBl
bGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1BsYXliYWNrUGlwZWxpbmUuY3BwCmluZGV4IDUzMTk5ZjZmYzNkNWMwM2IxOWYzN2QwYjZhN2Rh
ZmJjZjAwZThlYjEuLjczZDMyNjFiZTJmYmFlNDQ4YWYzNzAxZTdiYjE2Y2RjMjc1OTU5NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
UGxheWJhY2tQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBA
IHZvaWQgUGxheWJhY2tQaXBlbGluZTo6cmVtb3ZlU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzCiAgICAgICAgIHdlYktpdE1lZGlhU3JjRnJlZVN0cmVh
bShtX3dlYktpdE1lZGlhU3JjLmdldCgpLCBzdHJlYW0pOwogfQogCi12b2lkIFBsYXliYWNrUGlw
ZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBz
b3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4gdHJhY2tQcml2YXRl
LCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR3N0Q2FwcyogY2FwcykKK3ZvaWQgUGxheWJhY2tQ
aXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
IHNvdXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZh
dGUsIEdzdENhcHMqIGNhcHMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmMqIHdlYktpdE1lZGlhU3Jj
ID0gbV93ZWJLaXRNZWRpYVNyYy5nZXQoKTsKIApAQCAtMTc3LDggKzE3Nyw3IEBAIHZvaWQgUGxh
eWJhY2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI+IHNvdXJjZUJ1CiAgICAgc3RyZWFtLT5wYXJlbnQtPnByaXYtPm51bWJlck9mUGFkcysr
OwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHdlYktpdE1lZGlhU3JjKTsKIAotICAgIGNvbnN0IGdj
aGFyKiBtZWRpYVR5cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0KKyAg
ICBjb25zdCBjaGFyKiBtZWRpYVR5cGUgPSBjYXBzTWVkaWFUeXBlKGNhcHMpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1Qod2ViS2l0TWVkaWFTcmMsICJDb25maWd1cmVkIHRyYWNrICVzOiBhcHBzcmM9
JXMsIHBhZElkPSV1LCBtZWRpYVR5cGU9JXMiLCB0cmFja1ByaXZhdGUtPmlkKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgR1NUX0VMRU1FTlRfTkFNRShzdHJlYW0tPmFwcHNyYyksIHBhZElkLCBt
ZWRpYVR5cGUpOwogCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGFyc2VyQmluTmFtZShnX3N0cmR1
cF9wcmludGYoInN0cmVhbXBhcnNlciV1IiwgcGFkSWQpKTsKQEAgLTIxNyw2ICsyMTYsNyBAQCB2
b2lkIFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyPiBzb3VyY2VCdQogICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKHN0cmVh
bS0+cGFyc2VyLCBnc3RfZ2hvc3RfcGFkX25ldygic3JjIiwgcGFkLmdldCgpKSk7CiAgICAgfSBl
bHNlIGlmICghZ19zdHJjbXAwKG1lZGlhVHlwZSwgImF1ZGlvL21wZWciKSkgewogICAgICAgICBn
aW50IG1wZWd2ZXJzaW9uID0gLTE7CisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Z3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9n
ZXRfaW50KHN0cnVjdHVyZSwgIm1wZWd2ZXJzaW9uIiwgJm1wZWd2ZXJzaW9uKTsKIAogICAgICAg
ICBHc3RFbGVtZW50KiBwYXJzZXIgPSBudWxscHRyOwpAQCAtMjcyLDE3ICsyNzIsMTcgQEAgdm9p
ZCBQbGF5YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lcj4gc291cmNlQnUKICAgICBpbnQgc2lnbmFsID0gLTE7CiAKICAgICBHU1RfT0JK
RUNUX0xPQ0sod2ViS2l0TWVkaWFTcmMpOwotICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlh
VHlwZSwgImF1ZGlvIikpIHsKKyAgICBpZiAoZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX0FVRElP
X0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IEF1ZGlvOwogICAg
ICAgICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZBdWRpb1N0cmVhbXMrKzsKICAgICAg
ICAgc2lnbmFsID0gU0lHTkFMX0FVRElPX0NIQU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+YXVkaW9U
cmFjayA9IFJlZlB0cjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIqPih0cmFja1ByaXZhdGUu
Z2V0KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidmlk
ZW8iKSkgeworICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NB
UFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IFZpZGVvOwogICAgICAg
ICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZWaWRlb1N0cmVhbXMrKzsKICAgICAgICAg
c2lnbmFsID0gU0lHTkFMX1ZJREVPX0NIQU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+dmlkZW9UcmFj
ayA9IFJlZlB0cjxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIqPih0cmFja1ByaXZhdGUuZ2V0
KCkpKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidGV4dCIp
KSB7CisgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShjYXBzLCBHU1RfVEVYVF9DQVBTX1RZ
UEVfUFJFRklYKSkgewogICAgICAgICBzdHJlYW0tPnR5cGUgPSBUZXh0OwogICAgICAgICBzdHJl
YW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZUZXh0U3RyZWFtcysrOwogICAgICAgICBzaWduYWwg
PSBTSUdOQUxfVEVYVF9DSEFOR0VEOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgUGxheWJhY2tQ
aXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
IHNvdXJjZUJ1CiAgICAgICAgIGdfc2lnbmFsX2VtaXQoR19PQkpFQ1Qoc3RyZWFtLT5wYXJlbnQp
LCB3ZWJLaXRNZWRpYVNyY1NpZ25hbHNbc2lnbmFsXSwgMCwgbnVsbHB0cik7CiB9CiAKLXZvaWQg
UGxheWJhY2tQaXBlbGluZTo6cmVhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+
IHRyYWNrUHJpdmF0ZSwgY29uc3QgY2hhciogbWVkaWFUeXBlKQordm9pZCBQbGF5YmFja1BpcGVs
aW5lOjpyZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBz
b3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4gdHJhY2tQcml2YXRl
LCBHc3RDYXBzKiBjYXBzKQogewogICAgIEdTVF9ERUJVRygiUmUtYXR0YWNoaW5nIHRyYWNrIik7
CiAKQEAgLTMxMywxNSArMzEzLDE1IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6cmVhdHRhY2hU
cmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlCiAgICAgaW50
IHNpZ25hbCA9IC0xOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHdlYktpdE1lZGlhU3JjKTsKLSAg
ICBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJhdWRpbyIpKSB7CisgICAgaWYgKGRv
Q2Fwc0hhdmVUeXBlKGNhcHMsIEdTVF9BVURJT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAg
ICBBU1NFUlQoc3RyZWFtLT50eXBlID09IEF1ZGlvKTsKICAgICAgICAgc2lnbmFsID0gU0lHTkFM
X0FVRElPX0NIQU5HRUQ7CiAgICAgICAgIHN0cmVhbS0+YXVkaW9UcmFjayA9IFJlZlB0cjxXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIqPih0cmFja1ByaXZhdGUuZ2V0KCkpKTsKLSAgICB9IGVs
c2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFUeXBlLCAidmlkZW8iKSkgeworICAgIH0gZWxz
ZSBpZiAoZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7
CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gVmlkZW8pOwogICAgICAgICBzaWduYWwg
PSBTSUdOQUxfVklERU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNrID0gUmVm
UHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2FzdDxXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQoKSkpOwot
ICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0IikpIHsKKyAg
ICB9IGVsc2UgaWYgKGRvQ2Fwc0hhdmVUeXBlKGNhcHMsIEdTVF9URVhUX0NBUFNfVFlQRV9QUkVG
SVgpKSB7CiAgICAgICAgIEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gVGV4dCk7CiAgICAgICAgIHNp
Z25hbCA9IFNJR05BTF9URVhUX0NIQU5HRUQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVs
aW5lLmgKaW5kZXggNjY2MWQ2YTJmZjY0Y2Q2Yjg1YjkxOTcwNTQ3M2Q5M2M4OGMxNjg5Yi4uN2Y3
MmU0N2ZhNzc5MTYwZTdkZTA0YzI4YTU1NDZhY2NmZGI2MzVjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Q
bGF5YmFja1BpcGVsaW5lLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiAgICAgTWVkaWFT
b3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyPik7CiAgICAgdm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoUmVmUHRy
PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKLSAgICB2b2lkIGF0dGFjaFRyYWNrKFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJh
c2U+LCBHc3RTdHJ1Y3R1cmUqLCBHc3RDYXBzKik7Ci0gICAgdm9pZCByZWF0dGFjaFRyYWNrKFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJh
c2U+LCBjb25zdCBjaGFyKik7CisgICAgdm9pZCBhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiwgR3N0Q2Fwcyop
OworICAgIHZvaWQgcmVhdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcj4sIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiwgR3N0Q2FwcyopOwogICAgIHZvaWQgbm90
aWZ5RHVyYXRpb25DaGFuZ2VkKCk7CiAKICAgICAvLyBGcm9tIE1lZGlhU291cmNlR1N0cmVhbWVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNw
cAppbmRleCA2OWVmYzFjMTA0OTNlMDI2ZjcwYzQ0Mjc0NzQ1MDhiMzZmMGVkMGE2Li4wNDJlMDNh
NmI1Nzc0M2U5YTA1Y2Y2NDkzY2U1NzI4NDdiODQ1ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDUyLDE4ICs0NTIsMTMg
QEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNRdWVyeVdpdGhQYXJlbnQoR3N0UGFkKiBwYWQsIEdz
dE9iamVjdCogcGFyZW50LCBHc3RRdWVyeSoKIAogdm9pZCB3ZWJLaXRNZWRpYVNyY1VwZGF0ZVBy
ZXNlbnRhdGlvblNpemUoR3N0Q2FwcyogY2FwcywgU3RyZWFtKiBzdHJlYW0pCiB7Ci0gICAgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwot
ICAgIGNvbnN0IGdjaGFyKiBzdHJ1Y3R1cmVOYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShz
dHJ1Y3R1cmUpOwotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCiAgICAgR1NUX09CSkVDVF9MT0NL
KHN0cmVhbS0+cGFyZW50KTsKLSAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1l
LCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkgewot
ICAgICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OwotCi0gICAgICAgIC8vIEZJWE1FOiBDb3JyZWN0
Py4KLSAgICAgICAgd2lkdGggPSBpbmZvLndpZHRoOwotICAgICAgICBoZWlnaHQgPSBpbmZvLmhl
aWdodCAqICgoZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotICAgICAg
ICBzdHJlYW0tPnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGhl
aWdodCk7CisgICAgaWYgKFdlYkNvcmU6OmRvQ2Fwc0hhdmVUeXBlKGNhcHMsIEdTVF9WSURFT19D
QVBTX1RZUEVfUFJFRklYKSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4gc2l6ZSA9IFdlYkNvcmU6OmdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKGNhcHMpOwor
ICAgICAgICBpZiAoc2l6ZS5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHN0cmVhbS0+cHJlc2Vu
dGF0aW9uU2l6ZSA9IHNpemUudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Ry
ZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333474</attachid>
            <date>2018-02-09 02:54:29 -0800</date>
            <delta_ts>2018-02-09 04:11:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181990-20180209115427.patch</filename>
            <type>text/plain</type>
            <size>28674</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmNWI3OTdkMjAzNjZj
OGIxNjRjMjBhNzgxNDA3ODE2NzY3MmY3Ni4uZTE5MTMwOTMwMDZkZDAyMjQ5YTYwY2M1MDhkNzBl
M2Y3M2JhMTcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTAxLTI0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIGNhcHMgaW4gR1N0cmVh
bWVyVXRpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgb2YgZW5jcnlwdGVkIGNhcHMgaW4gR1N0cmVhbWVyVXRpbGl0
aWVzLgorICAgICAgICBSZWZhY3RvciB0aGUgbWFubmVyIHRoYXQgdGhlIGNhcHMgYXJlIGhhbmRs
ZWQsIHN1Y2ggYXMgaG93IHRvIGV4dHJhY3QgdGhlIHJlc29sdXRpb24KKyAgICAgICAgZnJvbSB0
aGUgdmlkZW8gY2FwcyBvciBob3cgdG8gY2hlY2sgaWYgdGhlIGNhcHMgYXJlIGVuY3J5cHRlZC4K
KworICAgICAgICBUaGUgYXR0YWNoVHJhY2sgZnVuY3Rpb24gaW4gUGxheWJhY2tQaXBlbGluZSBk
b2Vzbid0IG5lZWQgdGhlICJzdHJ1Y3R1cmUiIHBhcmFtZXRlciwKKyAgICAgICAgaXQgaXMgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgImNhcHMiIHBhcmFtZXRlci4KKworICAgICAgICBSZXBsYWNl
IHRoZSAibWVkaWFUeXBlIiBwYXJhbWV0ZXIgYnkgdGhlICJjYXBzIiBwYXJhbWV0ZXIgaW4gcmVh
dHRhY2hUcmFjayBmdW5jdGlvbiwKKyAgICAgICAgaXQgYWxsb3dzIHRvIHVzZSB0aGUgbmV3IGZ1
bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgY2FwcyBpbiBHU3RyZWFtZXJVdGlsaXRpZXMuCisKKyAg
ICAgICAgVGVzdHM6CisgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJLZXkv
Y2xlYXJLZXktY2VuYy1hdWRpby1wbGF5YmFjay1tc2UuaHRtbAorICAgICAgICAgICAgbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LWNlbmMtdmlkZW8tcGxheWJhY2stbXNl
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJv
bUNhcHMpOiBBZGQgdGhlIHN1cHBvcnQgb2YgdmlkZW8gZW5jcnlwdGVkIGNhcHMuCisgICAgICAg
IChXZWJDb3JlOjpnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyk6CisgICAgICAgIChXZWJDb3Jl
OjpjYXBzTWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvQ2Fwc0hhdmVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFyZUVuY3J5cHRlZENhcHMpOiBBZGQgYSBuZXcgZnVuY3Rpb25zIGlu
IG9yZGVyIHRvIGhhbmRsZSB0aGUgY2FwcyBwcm9wZXJseS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNv
ZGVjIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246
OmlzVmlkZW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFEZXNjcmlw
dGlvbjo6aXNBdWRpbyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp0cmFja0RldGVjdGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6YXR0YWNoVHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6cmVhdHRhY2hUcmFjayk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1VwZGF0ZVByZXNlbnRh
dGlvblNpemUpOiBSZWZhY3RvciBzb21lIHBhcnRzIGJ5IHVzaW5nIHRoZSBuZXcgYWRkZWQgZnVu
Y3Rpb25zLgorCiAyMDE4LTAxLTE5ICBZYWNpbmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRA
c29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBBZGQgYSBuZXcgbWVz
c2FnZSAiZGVjcnlwdC1rZXktbmVlZGVkIiBzZW5kIGZyb20gdGhlIGRlY3J5cHRvciB0byB0aGUg
YXBwbGljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCmluZGV4IDQ3NjJh
ZTg4NTViOGIxNzhhNGZhYmE2YmY4MjIzYWZlNTdmNjU4OGUuLjhjMmUwYzJmZWQ1ZTMzNGMxZGJj
MGM2M2IxZDdjZTQ3NmE2NmY3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3Bw
CkBAIC01OSwyMiArNTksNzIgQEAgR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNU
ZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGwKICNpZiBFTkFCTEUo
VklERU8pCiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqIGNhcHMs
IFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZpZGVvRm9ybWF0JiBmb3JtYXQsIGludCYgcGl4
ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3Is
IGludCYgc3RyaWRlKQogewotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0gICAgZ3N0X3ZpZGVv
X2luZm9faW5pdCgmaW5mbyk7Ci0gICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmlu
Zm8sIGNhcHMpKQorICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNf
VFlQRV9QUkVGSVgpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gZ2V0IHRoZSB2
aWRlbyBzaXplIGFuZCBmb3JtYXQsIHRoZXNlIGFyZSBub3QgYSB2aWRlbyBjYXBzIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19G
T1JNQVQoJmluZm8pOwotICAgIHNpemUuc2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmlu
Zm8pKTsKLSAgICBzaXplLnNldEhlaWdodChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsK
LSAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmlu
Zm8pOwotICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BB
Ul9EKCZpbmZvKTsKLSAgICBzdHJpZGUgPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmlu
Zm8sIDApOworICAgIGlmIChhcmVFbmNyeXB0ZWRDYXBzKGNhcHMpKSB7CisgICAgICAgIEdzdFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAg
ICAgICAgZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9FTkNPREVEOworICAgICAgICBzdHJpZGUg
PSAwOworICAgICAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgICAgICBnc3Rfc3Ry
dWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpOworICAgICAgICBnc3Rf
c3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCk7CisgICAgICAg
IGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0
LXJhdGlvIiwgJnBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsICZwaXhlbEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IpKSB7CisgICAgICAgICAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gMTsK
KyAgICAgICAgICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IDE7CisgICAgICAgIH0K
KworICAgICAgICBzaXplLnNldFdpZHRoKHdpZHRoKTsKKyAgICAgICAgc2l6ZS5zZXRIZWlnaHQo
aGVpZ2h0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgICAg
ICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CisgICAgICAgIGlmICghZ3N0X3ZpZGVvX2lu
Zm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8pOworICAgICAgICBz
aXplLnNldFdpZHRoKEdTVF9WSURFT19JTkZPX1dJRFRIKCZpbmZvKSk7CisgICAgICAgIHNpemUu
c2V0SGVpZ2h0KEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbykpOworICAgICAgICBwaXhlbEFz
cGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOworICAgICAg
ICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfRCgmaW5m
byk7CisgICAgICAgIHN0cmlkZSA9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmaW5mbywg
MCk7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8RmxvYXRT
aXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQorewor
ICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgp
KSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0
aW9uLCB0aGVzZSBhcmUgbm90IGEgdmlkZW8gY2FwcyIpOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0KKworICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgaW50
IHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgPSAxLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0
b3IgPSAxOworCisgICAgaWYgKGFyZUVuY3J5cHRlZENhcHMoY2FwcykpIHsKKyAgICAgICAgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwor
ICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgp
OworICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhl
aWdodCk7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKHN0cnVjdHVyZSwgInBp
eGVsLWFzcGVjdC1yYXRpbyIsICZwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCAmcGl4ZWxBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBHc3RWaWRlb0luZm8g
aW5mbzsKKyAgICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CisgICAgICAgIGlmICgh
Z3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCgm
aW5mbyk7CisgICAgICAgIGhlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbyk7Cisg
ICAgICAgIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigm
aW5mbyk7CisgICAgICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19J
TkZPX1BBUl9EKCZpbmZvKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFs
KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0ICogKHN0YXRpY19jYXN0PGZsb2F0PihwaXhlbEFzcGVj
dFJhdGlvTnVtZXJhdG9yKSAvIHN0YXRpY19jYXN0PGZsb2F0PihwaXhlbEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IpKSkpOworfQorCiBib29sIGdldFNhbXBsZVZpZGVvSW5mbyhHc3RTYW1wbGUqIHNh
bXBsZSwgR3N0VmlkZW9JbmZvJiB2aWRlb0luZm8pCiB7CiAgICAgaWYgKCFHU1RfSVNfU0FNUExF
KHNhbXBsZSkpCkBAIC0xMTMsNiArMTYzLDQ3IEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVy
Rm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBidWZmZXI7
CiB9CiAKK2NvbnN0IGNoYXIqIGNhcHNNZWRpYVR5cGUoY29uc3QgR3N0Q2FwcyogY2FwcykKK3sK
KyAgICBBU1NFUlQoY2Fwcyk7CisgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fw
c19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworICAgIGlmICghc3RydWN0dXJlKSB7CisgICAgICAg
IEdTVF9XQVJOSU5HKCJjYXBzIGFyZSBlbXB0eSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZ3N0X3N0cnVjdHVy
ZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJhcHBsaWNhdGlvbi94LWNlbmMiKSkKKyAgICAgICAgcmV0
dXJuIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJvcmlnaW5hbC1tZWRpYS10
eXBlIik7CisjZW5kaWYKKyAgICByZXR1cm4gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1
cmUpOworfQorCitib29sIGRvQ2Fwc0hhdmVUeXBlKGNvbnN0IEdzdENhcHMqIGNhcHMsIGNvbnN0
IGNoYXIqIHR5cGUpCit7CisgICAgY29uc3QgY2hhciogbWVkaWFUeXBlID0gY2Fwc01lZGlhVHlw
ZShjYXBzKTsKKyAgICBpZiAoIW1lZGlhVHlwZSkgeworICAgICAgICBHU1RfV0FSTklORygiRmFp
bGVkIHRvIGdldCBNZWRpYVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsIHR5cGUpOworfQorCitib29sIGFy
ZUVuY3J5cHRlZENhcHMoY29uc3QgR3N0Q2FwcyogY2FwcykKK3sKKyAgICBBU1NFUlQoY2Fwcyk7
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUp
IHsKKyAgICAgICAgR1NUX1dBUk5JTkcoImNhcHMgYXJlIGVtcHR5Iik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0
dXJlLCAiYXBwbGljYXRpb24veC1jZW5jIik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjYXBz
KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogY2hhciogZ2V0R3N0QnVmZmVyRGF0
YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCiB7CiAgICAgR3N0TWluaU9iamVjdCogbWluaU9i
amVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyVXRpbGl0aWVzLmgKaW5kZXggZTE2ODU4MjExZTI5NTllOWY3NDNhMzM5Mjg5MGQx
MTE0MDdkZjhiNy4uODQ3MmQ3ODI5OTViNTUzZmJiNDkyMTE3NzQ4NGNjNWU4ODE3ZWM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaApAQCAtMjAsNiArMjAsNyBAQAogI3ByYWdtYSBv
bmNlCiAKIAorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNp
bmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8tZm9ybWF0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3Zp
ZGVvLWluZm8uaD4KQEAgLTUwLDE0ICs1MSwyMiBAQCBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVj
a1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorI2RlZmluZSBHU1RfVklERU9fQ0FQU19UWVBFX1BSRUZJWCAgInZpZGVv
LyIKKyNkZWZpbmUgR1NUX0FVRElPX0NBUFNfVFlQRV9QUkVGSVggICJhdWRpby8iCisjZGVmaW5l
IEdTVF9URVhUX0NBUFNfVFlQRV9QUkVGSVggICAidGV4dC8iCisKIEdzdFBhZCogd2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqLCBjb25zdCBn
Y2hhciogbmFtZSwgR3N0UGFkKiB0YXJnZXQpOwogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgZ2V0
VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyosIFdlYkNvcmU6OkludFNpemUmLCBH
c3RWaWRlb0Zvcm1hdCYsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhl
bEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKTsKK3N0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKik7CiBib29s
IGdldFNhbXBsZVZpZGVvSW5mbyhHc3RTYW1wbGUqLCBHc3RWaWRlb0luZm8mKTsKICNlbmRpZgog
R3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKik7CiBHc3RCdWZmZXIqIGNyZWF0
ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiBjaGFyKiBn
ZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihHc3RCdWZmZXIqKTsKK2NvbnN0IGNoYXIqIGNhcHNNZWRp
YVR5cGUoY29uc3QgR3N0Q2FwcyopOworYm9vbCBkb0NhcHNIYXZlVHlwZShjb25zdCBHc3RDYXBz
KiwgY29uc3QgY2hhciopOworYm9vbCBhcmVFbmNyeXB0ZWRDYXBzKGNvbnN0IEdzdENhcHMqKTsK
IHZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciosIHVpbnQzMl90KTsKIHZvaWQgdW5tYXBHc3RC
dWZmZXIoR3N0QnVmZmVyKik7CiBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggY2ViYmYyZTdiZTU2MmZhYzE4MGIxNGZkNzY0
YjljOWM1NWQzZmFjMS4uYTUzMDA5YjkxOTRmYzA0MTIxNzI2NmVkYTZlMTgyZjUyZGY0OGZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUg
Ik1lZGlhRGVzY3JpcHRpb24uaCIKQEAgLTU4Miw3NCArNTgzLDM2IEBAIHZvaWQgQXBwZW5kUGlw
ZWxpbmU6OnBhcnNlRGVtdXhlclNyY1BhZENhcHMoR3N0Q2FwcyogZGVtdXhlclNyY1BhZENhcHMp
CiAKICAgICBtX2RlbXV4ZXJTcmNQYWRDYXBzID0gYWRvcHRHUmVmKGRlbXV4ZXJTcmNQYWRDYXBz
KTsKICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3Ry
ZWFtZXI6OlVua25vd247Ci0KLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBz
X2dldF9zdHJ1Y3R1cmUobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSwgMCk7Ci0gICAgYm9vbCBz
aXplQ29uZmlndXJlZCA9IGZhbHNlOwotCi0jaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgNSwgMykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFt
ZShzdHJ1Y3R1cmUsICJhcHBsaWNhdGlvbi94LWNlbmMiKSkgeworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgaWYgKGFyZUVuY3J5cHRlZENhcHMobV9kZW11eGVyU3JjUGFkQ2Fwcy5n
ZXQoKSkpIHsKICAgICAgICAgLy8gQW55IHByZXZpb3VzIGRlY3J5cHRvciBzaG91bGQgaGF2ZSBi
ZWVuIHJlbW92ZWQgZnJvbSB0aGUgcGlwZWxpbmUgYnkgZGlzY29ubmVjdEZyb21BcHBTaW5rRnJv
bVN0cmVhbWluZ1RocmVhZCgpCiAgICAgICAgIEFTU0VSVCghbV9kZWNyeXB0b3IpOwotCisgICAg
ICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtX2Rl
bXV4ZXJTcmNQYWRDYXBzLmdldCgpLCAwKTsKICAgICAgICAgbV9kZWNyeXB0b3IgPSBHU3RyZWFt
ZXJFTUVVdGlsaXRpZXM6OmNyZWF0ZURlY3J5cHRvcihnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmco
c3RydWN0dXJlLCAicHJvdGVjdGlvbi1zeXN0ZW0iKSk7CiAgICAgICAgIGlmICghbV9kZWNyeXB0
b3IpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiZGVjcnlwdG9yIG5vdCBmb3VuZCBmb3IgY2Fw
czogJSIgR1NUX1BUUl9GT1JNQVQsIG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgZ2NoYXIqIG9yaWdpbmFs
TWVkaWFUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgIm9yaWdpbmFs
LW1lZGlhLXR5cGUiKTsKLQotICAgICAgICBpZiAoIU1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRTo6c3VwcG9ydHNDb2RlYyhvcmlnaW5hbE1lZGlhVHlwZSkpIHsKLSAgICAgICAgICAgIG1f
cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOwotICAgICAgICAgICAgbV9z
dHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpJbnZh
bGlkOwotICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgob3JpZ2luYWxNZWRpYVR5
cGUsICJ2aWRlby8iKSkgewotICAgICAgICAgICAgaW50IHdpZHRoID0gMDsKLSAgICAgICAgICAg
IGludCBoZWlnaHQgPSAwOwotICAgICAgICAgICAgZmxvYXQgZmluYWxIZWlnaHQgPSAwOwotCi0g
ICAgICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwg
JndpZHRoKSAmJiBnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhl
aWdodCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgcmF0aW9OdW1lcmF0b3IgPSAxOwotICAgICAg
ICAgICAgICAgIGludCByYXRpb0Rlbm9taW5hdG9yID0gMTsKLQotICAgICAgICAgICAgICAgIGdz
dF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKHN0cnVjdHVyZSwgInBpeGVsLWFzcGVjdC1yYXRpbyIs
ICZyYXRpb051bWVyYXRvciwgJnJhdGlvRGVub21pbmF0b3IpOwotICAgICAgICAgICAgICAgIGZp
bmFsSGVpZ2h0ID0gaGVpZ2h0ICogKChmbG9hdCkgcmF0aW9EZW5vbWluYXRvciAvIChmbG9hdCkg
cmF0aW9OdW1lcmF0b3IpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX3ByZXNlbnRh
dGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGZpbmFsSGVpZ2h0KTsKLSAgICAg
ICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJl
YW1lcjo6VmlkZW87Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3ByZXNlbnRhdGlv
blNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKLSAgICAgICAgICAgIGlmIChnX3N0cl9oYXNf
cHJlZml4KG9yaWdpbmFsTWVkaWFUeXBlLCAiYXVkaW8vIikpCi0gICAgICAgICAgICAgICAgbV9z
dHJlYW1UeXBlID0gV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpBdWRp
bzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgob3JpZ2luYWxNZWRpYVR5
cGUsICJ0ZXh0LyIpKQotICAgICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1l
ZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VGV4dDsKLSAgICAgICAgfQotICAgICAgICBz
aXplQ29uZmlndXJlZCA9IHRydWU7CiAgICAgfQogI2VuZGlmCi0KLSAgICBpZiAoIXNpemVDb25m
aWd1cmVkKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHN0cnVjdHVyZU5hbWUgPSBnc3Rfc3RydWN0
dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0gICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotCi0g
ICAgICAgIGlmICghTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c0NvZGVj
KHN0cnVjdHVyZU5hbWUpKSB7CisgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBj
YXBzTWVkaWFUeXBlKG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCkpOworICAgIGlmICghTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c0NvZGVjKG9yaWdpbmFsTWVkaWFUeXBl
KSkgewogICAgICAgICAgICAgbV9wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXpl
KCk7CiAgICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVh
bVR5cGVHU3RyZWFtZXI6OkludmFsaWQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3By
ZWZpeChzdHJ1Y3R1cmVOYW1lLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBz
KCZpbmZvLCBkZW11eGVyU3JjUGFkQ2FwcykpIHsKLSAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBo
ZWlnaHQ7Ci0KLSAgICAgICAgICAgIHdpZHRoID0gaW5mby53aWR0aDsKLSAgICAgICAgICAgIGhl
aWdodCA9IGluZm8uaGVpZ2h0ICogKChmbG9hdCkgaW5mby5wYXJfZCAvIChmbG9hdCkgaW5mby5w
YXJfbik7Ci0KLSAgICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0
U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6
Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VmlkZW87Ci0gICAgICAgIH0gZWxzZSB7
CisgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgp
LCBHU1RfVklERU9fQ0FQU19UWVBFX1BSRUZJWCkpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IHNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhtX2RlbXV4ZXJTcmNQ
YWRDYXBzLmdldCgpKTsKKyAgICAgICAgaWYgKHNpemUuaGFzX3ZhbHVlKCkpCisgICAgICAgICAg
ICBtX3ByZXNlbnRhdGlvblNpemUgPSBzaXplLnZhbHVlKCk7CisgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgpOwotICAgICAg
ICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoc3RydWN0dXJlTmFtZSwgImF1ZGlvLyIpKQotICAg
ICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlw
ZUdTdHJlYW1lcjo6QXVkaW87Ci0gICAgICAgICAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4
KHN0cnVjdHVyZU5hbWUsICJ0ZXh0LyIpKQotICAgICAgICAgICAgICAgIG1fc3RyZWFtVHlwZSA9
IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VGV4dDsKLSAgICAgICAg
fQorCisgICAgICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlw
ZUdTdHJlYW1lcjo6VmlkZW87CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wcmVzZW50YXRpb25T
aXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CisgICAgICAgIGlmIChkb0NhcHNIYXZlVHlwZSht
X2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpLCBHU1RfQVVESU9fQ0FQU19UWVBFX1BSRUZJWCkpCisg
ICAgICAgICAgICBtX3N0cmVhbVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVH
U3RyZWFtZXI6OkF1ZGlvOworICAgICAgICBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShtX2RlbXV4
ZXJTcmNQYWRDYXBzLmdldCgpLCBHU1RfVEVYVF9DQVBTX1RZUEVfUFJFRklYKSkKKyAgICAgICAg
ICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1l
cjo6VGV4dDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1l
ZGlhRGVzY3JpcHRpb24uY3BwCmluZGV4IDc3NmEwYmU5YjNiNDYzMzdlM2YyMTAwMTIwZGNhZGVi
ZmE5MjQ3NDkuLjljOGQ2MjQ5Y2E0MjMxYjRmZjQ4ZjU0OWY2ZmUxYmFiN2MwOTAyYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0
cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcApAQCAt
MjAsNyArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVy
TWVkaWFEZXNjcmlwdGlvbi5oIgotCisjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiR1VuaXF1ZVB0ckdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMv
cGJ1dGlscy5oPgpAQCAtMzMsMzUgKzMzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXRv
bWljU3RyaW5nIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjKCkgY29uc3QKIHsKLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBkZXNjcmlwdGlvbihnc3RfcGJfdXRpbHNfZ2V0X2NvZGVjX2Rl
c2NyaXB0aW9uKG1fY2Fwcy5nZXQoKSkpOwotICAgIFN0cmluZyBjb2RlY05hbWUoZGVzY3JpcHRp
b24uZ2V0KCkpOwotCi0gICAgLy8gUmVwb3J0ICJILjI2NCAoTWFpbiBQcm9maWxlKSIgYW5kICJI
LjI2NCAoSGlnaCBQcm9maWxlKSIganVzdCBhcyAiSC4yNjQiIHRvIGFsbG93IGNoYW5nZXMgYmV0
d2VlbiBib3RoIHZhcmlhbnRzCi0gICAgLy8gZ28gdW5ub3RpY2VkIHRvIHRoZSBTb3VyY2VCdWZm
ZXIgbGF5ZXIuCi0gICAgaWYgKGNvZGVjTmFtZS5zdGFydHNXaXRoKCJILjI2NCIpKSB7Ci0gICAg
ICAgIHNpemVfdCBicmFjZVN0YXJ0ID0gY29kZWNOYW1lLmZpbmQoIiAoIik7Ci0gICAgICAgIHNp
emVfdCBicmFjZUVuZCA9IGNvZGVjTmFtZS5maW5kKCIpIik7Ci0gICAgICAgIGlmIChicmFjZVN0
YXJ0ICE9IG5vdEZvdW5kICYmIGJyYWNlRW5kICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgY29k
ZWNOYW1lLnJlbW92ZShicmFjZVN0YXJ0LCBicmFjZUVuZC1icmFjZVN0YXJ0KTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gY29kZWNOYW1lOworICAgIHJldHVybiBtX2NvZGVjTmFtZTsKIH0KIAogYm9v
bCBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjppc1ZpZGVvKCkgY29uc3QKIHsKLSAgICBHc3RT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9jYXBzLmdldCgp
LCAwKTsKLSAgICBjb25zdCBnY2hhciogbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3Ry
dWN0dXJlKTsKLQotICAgIHJldHVybiBnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJ2aWRlby8iKTsK
KyAgICByZXR1cm4gZG9DYXBzSGF2ZVR5cGUobV9jYXBzLmdldCgpLCBHU1RfVklERU9fQ0FQU19U
WVBFX1BSRUZJWCk7CiB9CiAKIGJvb2wgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6aXNBdWRp
bygpIGNvbnN0CiB7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRf
c3RydWN0dXJlKG1fY2Fwcy5nZXQoKSwgMCk7Ci0gICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnc3Rf
c3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7Ci0KLSAgICByZXR1cm4gZ19zdHJfaGFzX3By
ZWZpeChuYW1lLCAiYXVkaW8vIik7CisgICAgcmV0dXJuIGRvQ2Fwc0hhdmVUeXBlKG1fY2Fwcy5n
ZXQoKSwgR1NUX0FVRElPX0NBUFNfVFlQRV9QUkVGSVgpOwogfQogCiBib29sIEdTdHJlYW1lck1l
ZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CkBAIC03MCw2ICs1Miw0MyBAQCBib29sIEdT
dHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmlzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitBdG9taWNTdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6ZXh0cmFjdENv
ZGVjTmFtZSgpCit7CisgICAgR1JlZlB0cjxHc3RDYXBzPiBvcmlnaW5hbENhcHMgPSBtX2NhcHM7
CisKKyAgICBpZiAoYXJlRW5jcnlwdGVkQ2FwcyhvcmlnaW5hbENhcHMuZ2V0KCkpKSB7CisgICAg
ICAgIG9yaWdpbmFsQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG9yaWdpbmFsQ2Fwcy5n
ZXQoKSkpOworICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9z
dHJ1Y3R1cmUob3JpZ2luYWxDYXBzLmdldCgpLCAwKTsKKworICAgICAgICBpZiAoIWdzdF9zdHJ1
Y3R1cmVfaGFzX2ZpZWxkKHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlhLXR5cGUiKSkKKyAgICAg
ICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKworICAgICAgICBnc3Rfc3RydWN0dXJlX3Nl
dF9uYW1lKHN0cnVjdHVyZSwgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgIm9y
aWdpbmFsLW1lZGlhLXR5cGUiKSk7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgRFJNIHJlbGF0ZWQg
ZmllbGRzIGZyb20gdGhlIGNhcHMuCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZ3N0X3N0
cnVjdHVyZV9uX2ZpZWxkcyhzdHJ1Y3R1cmUpOyArK2opIHsKKyAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGZpZWxkTmFtZSA9IGdzdF9zdHJ1Y3R1cmVfbnRoX2ZpZWxkX25hbWUoc3RydWN0dXJlLCBq
KTsKKworICAgICAgICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoZmllbGROYW1lLCAicHJvdGVj
dGlvbi1zeXN0ZW0iKQorICAgICAgICAgICAgICAgIHx8IGdfc3RyX2hhc19wcmVmaXgoZmllbGRO
YW1lLCAib3JpZ2luYWwtbWVkaWEtdHlwZSIpKQorICAgICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1
cmVfcmVtb3ZlX2ZpZWxkKHN0cnVjdHVyZSwgZmllbGROYW1lKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRlc2NyaXB0aW9uKGdzdF9wYl91dGlsc19nZXRfY29k
ZWNfZGVzY3JpcHRpb24ob3JpZ2luYWxDYXBzLmdldCgpKSk7CisgICAgU3RyaW5nIGNvZGVjTmFt
ZShkZXNjcmlwdGlvbi5nZXQoKSk7CisKKyAgICAvLyBSZXBvcnQgIkguMjY0IChNYWluIFByb2Zp
bGUpIiBhbmQgIkguMjY0IChIaWdoIFByb2ZpbGUpIiBqdXN0IGFzICJILjI2NCIgdG8gYWxsb3cg
Y2hhbmdlcyBiZXR3ZWVuIGJvdGggdmFyaWFudHMKKyAgICAvLyBnbyB1bm5vdGljZWQgdG8gdGhl
IFNvdXJjZUJ1ZmZlciBsYXllci4KKyAgICBpZiAoY29kZWNOYW1lLnN0YXJ0c1dpdGgoIkguMjY0
IikpIHsKKyAgICAgICAgc2l6ZV90IGJyYWNlU3RhcnQgPSBjb2RlY05hbWUuZmluZCgiICgiKTsK
KyAgICAgICAgc2l6ZV90IGJyYWNlRW5kID0gY29kZWNOYW1lLmZpbmQoIikiKTsKKyAgICAgICAg
aWYgKGJyYWNlU3RhcnQgIT0gbm90Rm91bmQgJiYgYnJhY2VFbmQgIT0gbm90Rm91bmQpCisgICAg
ICAgICAgICBjb2RlY05hbWUucmVtb3ZlKGJyYWNlU3RhcnQsIGJyYWNlRW5kIC0gYnJhY2VTdGFy
dCk7CisgICAgfQorCisgICAgcmV0dXJuIGNvZGVjTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZS4KIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVz
Y3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oCmluZGV4IDg0ZTI2M2NhYWE3YWQyNDc4NzA1
YjA5OWUwZDhmZWRiNGU5ZWE0NWEuLjYzNWViYzdhMjkzYThmYThlYWM3NmYxYjE3N2Y0NmUyZTk3
YzBmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogCiAj
aW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4LDkgKzQ5LDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgIDogTWVkaWFEZXNjcmlwdGlvbigpCiAgICAgICAgICwgbV9jYXBzKGNhcHMpCiAgICAgewor
ICAgICAgICBtX2NvZGVjTmFtZSA9IGV4dHJhY3RDb2RlY05hbWUoKTsKICAgICB9CiAKKyAgICBB
dG9taWNTdHJpbmcgZXh0cmFjdENvZGVjTmFtZSgpOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9j
YXBzOworICAgIEF0b21pY1N0cmluZyBtX2NvZGVjTmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggZTA3ZWM1OTY3NDg3N2NiMjhlNjFlMTYwZjI5ZDM5NTM5
YWJiZmE3Ni4uOTE4YzQyNzY3Y2NiY2MzYzJjYTg4ODYyZTM5MDY4Y2MxOWNkOWE2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcApAQCAtNzM5LDIzICs3MzksMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U6OnRyYWNrRGV0ZWN0ZWQoUmVmUHRyPEFwcGVuZFBpcGVsaW5lPiBhcHBlbmQKICAgICBB
U1NFUlQoY2Fwcyk7CiAgICAgR1NUX0RFQlVHKCJ0cmFjayBJRDogJXMsIGNhcHM6ICUiIEdTVF9Q
VFJfRk9STUFULCBuZXdUcmFjay0+aWQoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNhcHMp
OwogCi0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJl
KGNhcHMsIDApOwotICAgIGNvbnN0IGdjaGFyKiBtZWRpYVR5cGUgPSBnc3Rfc3RydWN0dXJlX2dl
dF9uYW1lKHN0cnVjdHVyZSk7Ci0gICAgR3N0VmlkZW9JbmZvIGluZm87Ci0KLSAgICBpZiAoZ19z
dHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlby8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9t
X2NhcHMoJmluZm8sIGNhcHMpKSB7Ci0gICAgICAgIGZsb2F0IHdpZHRoLCBoZWlnaHQ7Ci0KLSAg
ICAgICAgd2lkdGggPSBpbmZvLndpZHRoOwotICAgICAgICBoZWlnaHQgPSBpbmZvLmhlaWdodCAq
ICgoZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOwotICAgICAgICBtX3Zp
ZGVvU2l6ZS5zZXRXaWR0aCh3aWR0aCk7Ci0gICAgICAgIG1fdmlkZW9TaXplLnNldEhlaWdodCho
ZWlnaHQpOworICAgIGlmIChkb0NhcHNIYXZlVHlwZShjYXBzLCBHU1RfVklERU9fQ0FQU19UWVBF
X1BSRUZJWCkpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IHNpemUgPSBnZXRW
aWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhjYXBzKTsKKyAgICAgICAgaWYgKHNpemUuaGFzX3ZhbHVl
KCkpCisgICAgICAgICAgICBtX3ZpZGVvU2l6ZSA9IHNpemUudmFsdWUoKTsKICAgICB9CiAKICAg
ICBpZiAoZmlyc3RUcmFja0RldGVjdGVkKQotICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPmF0
dGFjaFRyYWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNr
LCBzdHJ1Y3R1cmUsIGNhcHMpOworICAgICAgICBtX3BsYXliYWNrUGlwZWxpbmUtPmF0dGFjaFRy
YWNrKGFwcGVuZFBpcGVsaW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNrLCBjYXBz
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcGxheWJhY2tQaXBlbGluZS0+cmVhdHRhY2hUcmFjayhh
cHBlbmRQaXBlbGluZS0+c291cmNlQnVmZmVyUHJpdmF0ZSgpLCBuZXdUcmFjaywgbWVkaWFUeXBl
KTsKKyAgICAgICAgbV9wbGF5YmFja1BpcGVsaW5lLT5yZWF0dGFjaFRyYWNrKGFwcGVuZFBpcGVs
aW5lLT5zb3VyY2VCdWZmZXJQcml2YXRlKCksIG5ld1RyYWNrLCBjYXBzKTsKIH0KIAogY29uc3Qg
c3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY29kZWNTZXQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
UGxheWJhY2tQaXBlbGluZS5jcHAKaW5kZXggNTMxOTlmNmZjM2Q1YzAzYjE5ZjM3ZDBiNmE3ZGFm
YmNmMDBlOGViMS4uNzNkMzI2MWJlMmZiYWU0NDhhZjM3MDFlN2JiMTZjZGMyNzU5NTk2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Q
bGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAg
dm9pZCBQbGF5YmFja1BpcGVsaW5lOjpyZW1vdmVTb3VyY2VCdWZmZXIoUmVmUHRyPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+IHMKICAgICAgICAgd2ViS2l0TWVkaWFTcmNGcmVlU3RyZWFt
KG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCksIHN0cmVhbSk7CiB9CiAKLXZvaWQgUGxheWJhY2tQaXBl
bGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNv
dXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUs
IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlLCBHc3RDYXBzKiBjYXBzKQordm9pZCBQbGF5YmFja1Bp
cGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4g
c291cmNlQnVmZmVyUHJpdmF0ZSwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrUHJpdmF0
ZSwgR3N0Q2FwcyogY2FwcykKIHsKICAgICBXZWJLaXRNZWRpYVNyYyogd2ViS2l0TWVkaWFTcmMg
PSBtX3dlYktpdE1lZGlhU3JjLmdldCgpOwogCkBAIC0xNzcsOCArMTc3LDcgQEAgdm9pZCBQbGF5
YmFja1BpcGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcj4gc291cmNlQnUKICAgICBzdHJlYW0tPnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZQYWRzKys7
CiAgICAgR1NUX09CSkVDVF9VTkxPQ0sod2ViS2l0TWVkaWFTcmMpOwogCi0gICAgY29uc3QgZ2No
YXIqIG1lZGlhVHlwZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKLQorICAg
IGNvbnN0IGNoYXIqIG1lZGlhVHlwZSA9IGNhcHNNZWRpYVR5cGUoY2Fwcyk7CiAgICAgR1NUX0RF
QlVHX09CSkVDVCh3ZWJLaXRNZWRpYVNyYywgIkNvbmZpZ3VyZWQgdHJhY2sgJXM6IGFwcHNyYz0l
cywgcGFkSWQ9JXUsIG1lZGlhVHlwZT0lcyIsIHRyYWNrUHJpdmF0ZS0+aWQoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBHU1RfRUxFTUVOVF9OQU1FKHN0cmVhbS0+YXBwc3JjKSwgcGFkSWQsIG1l
ZGlhVHlwZSk7CiAKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBwYXJzZXJCaW5OYW1lKGdfc3RyZHVw
X3ByaW50Zigic3RyZWFtcGFyc2VyJXUiLCBwYWRJZCkpOwpAQCAtMjE3LDYgKzIxNiw3IEBAIHZv
aWQgUGxheWJhY2tQaXBlbGluZTo6YXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI+IHNvdXJjZUJ1CiAgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFt
LT5wYXJzZXIsIGdzdF9naG9zdF9wYWRfbmV3KCJzcmMiLCBwYWQuZ2V0KCkpKTsKICAgICB9IGVs
c2UgaWYgKCFnX3N0cmNtcDAobWVkaWFUeXBlLCAiYXVkaW8vbXBlZyIpKSB7CiAgICAgICAgIGdp
bnQgbXBlZ3ZlcnNpb24gPSAtMTsKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwogICAgICAgICBnc3Rfc3RydWN0dXJlX2dl
dF9pbnQoc3RydWN0dXJlLCAibXBlZ3ZlcnNpb24iLCAmbXBlZ3ZlcnNpb24pOwogCiAgICAgICAg
IEdzdEVsZW1lbnQqIHBhcnNlciA9IG51bGxwdHI7CkBAIC0yNzIsMTcgKzI3MiwxNyBAQCB2b2lk
IFBsYXliYWNrUGlwZWxpbmU6OmF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyPiBzb3VyY2VCdQogICAgIGludCBzaWduYWwgPSAtMTsKIAogICAgIEdTVF9PQkpF
Q1RfTE9DSyh3ZWJLaXRNZWRpYVNyYyk7Ci0gICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobWVkaWFU
eXBlLCAiYXVkaW8iKSkgeworICAgIGlmIChkb0NhcHNIYXZlVHlwZShjYXBzLCBHU1RfQVVESU9f
Q0FQU19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgc3RyZWFtLT50eXBlID0gQXVkaW87CiAgICAg
ICAgIHN0cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJPZkF1ZGlvU3RyZWFtcysrOwogICAgICAg
ICBzaWduYWwgPSBTSUdOQUxfQVVESU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT5hdWRpb1Ry
YWNrID0gUmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5n
ZXQoKSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRl
byIpKSB7CisgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShjYXBzLCBHU1RfVklERU9fQ0FQ
U19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgc3RyZWFtLT50eXBlID0gVmlkZW87CiAgICAgICAg
IHN0cmVhbS0+cGFyZW50LT5wcml2LT5udW1iZXJPZlZpZGVvU3RyZWFtcysrOwogICAgICAgICBz
aWduYWwgPSBTSUdOQUxfVklERU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT52aWRlb1RyYWNr
ID0gUmVmUHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQo
KSkpOwotICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ0ZXh0Iikp
IHsKKyAgICB9IGVsc2UgaWYgKGRvQ2Fwc0hhdmVUeXBlKGNhcHMsIEdTVF9URVhUX0NBUFNfVFlQ
RV9QUkVGSVgpKSB7CiAgICAgICAgIHN0cmVhbS0+dHlwZSA9IFRleHQ7CiAgICAgICAgIHN0cmVh
bS0+cGFyZW50LT5wcml2LT5udW1iZXJPZlRleHRTdHJlYW1zKys7CiAgICAgICAgIHNpZ25hbCA9
IFNJR05BTF9URVhUX0NIQU5HRUQ7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBQbGF5YmFja1Bp
cGVsaW5lOjphdHRhY2hUcmFjayhSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4g
c291cmNlQnUKICAgICAgICAgZ19zaWduYWxfZW1pdChHX09CSkVDVChzdHJlYW0tPnBhcmVudCks
IHdlYktpdE1lZGlhU3JjU2lnbmFsc1tzaWduYWxdLCAwLCBudWxscHRyKTsKIH0KIAotdm9pZCBQ
bGF5YmFja1BpcGVsaW5lOjpyZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBSZWZQdHI8VHJhY2tQcml2YXRlQmFzZT4g
dHJhY2tQcml2YXRlLCBjb25zdCBjaGFyKiBtZWRpYVR5cGUpCit2b2lkIFBsYXliYWNrUGlwZWxp
bmU6OnJlYXR0YWNoVHJhY2soUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNv
dXJjZUJ1ZmZlclByaXZhdGUsIFJlZlB0cjxUcmFja1ByaXZhdGVCYXNlPiB0cmFja1ByaXZhdGUs
IEdzdENhcHMqIGNhcHMpCiB7CiAgICAgR1NUX0RFQlVHKCJSZS1hdHRhY2hpbmcgdHJhY2siKTsK
IApAQCAtMzEzLDE1ICszMTMsMTUgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpyZWF0dGFjaFRy
YWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2UKICAgICBpbnQg
c2lnbmFsID0gLTE7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0sod2ViS2l0TWVkaWFTcmMpOwotICAg
IGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgImF1ZGlvIikpIHsKKyAgICBpZiAoZG9D
YXBzSGF2ZVR5cGUoY2FwcywgR1NUX0FVRElPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAg
IEFTU0VSVChzdHJlYW0tPnR5cGUgPT0gQXVkaW8pOwogICAgICAgICBzaWduYWwgPSBTSUdOQUxf
QVVESU9fQ0hBTkdFRDsKICAgICAgICAgc3RyZWFtLT5hdWRpb1RyYWNrID0gUmVmUHRyPFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihzdGF0aWNfY2FzdDxXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcio+KHRyYWNrUHJpdmF0ZS5nZXQoKSkpOwotICAgIH0gZWxz
ZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChtZWRpYVR5cGUsICJ2aWRlbyIpKSB7CisgICAgfSBlbHNl
IGlmIChkb0NhcHNIYXZlVHlwZShjYXBzLCBHU1RfVklERU9fQ0FQU19UWVBFX1BSRUZJWCkpIHsK
ICAgICAgICAgQVNTRVJUKHN0cmVhbS0+dHlwZSA9PSBWaWRlbyk7CiAgICAgICAgIHNpZ25hbCA9
IFNJR05BTF9WSURFT19DSEFOR0VEOwogICAgICAgICBzdHJlYW0tPnZpZGVvVHJhY2sgPSBSZWZQ
dHI8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+KHN0YXRpY19jYXN0PFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKj4odHJhY2tQcml2YXRlLmdldCgpKSk7Ci0g
ICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG1lZGlhVHlwZSwgInRleHQiKSkgeworICAg
IH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1RFWFRfQ0FQU19UWVBFX1BSRUZJ
WCkpIHsKICAgICAgICAgQVNTRVJUKHN0cmVhbS0+dHlwZSA9PSBUZXh0KTsKICAgICAgICAgc2ln
bmFsID0gU0lHTkFMX1RFWFRfQ0hBTkdFRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxp
bmUuaAppbmRleCA2NjYxZDZhMmZmNjRjZDZiODViOTE5NzA1NDczZDkzYzg4YzE2ODliLi43Zjcy
ZTQ3ZmE3NzkxNjBlN2RlMDRjMjhhNTU0NmFjY2ZkYjYzNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1Bs
YXliYWNrUGlwZWxpbmUuaApAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVNv
dXJjZVByaXZhdGU6OkFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoUmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihSZWZQdHI8
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4pOwotICAgIHZvaWQgYXR0YWNoVHJhY2soUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBSZWZQdHI8VHJhY2tQcml2YXRlQmFz
ZT4sIEdzdFN0cnVjdHVyZSosIEdzdENhcHMqKTsKLSAgICB2b2lkIHJlYXR0YWNoVHJhY2soUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBSZWZQdHI8VHJhY2tQcml2YXRlQmFz
ZT4sIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIGF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+LCBHc3RDYXBzKik7
CisgICAgdm9pZCByZWF0dGFjaFRyYWNrKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyPiwgUmVmUHRyPFRyYWNrUHJpdmF0ZUJhc2U+LCBHc3RDYXBzKik7CiAgICAgdm9pZCBub3Rp
ZnlEdXJhdGlvbkNoYW5nZWQoKTsKIAogICAgIC8vIEZyb20gTWVkaWFTb3VyY2VHU3RyZWFtZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDY5ZWZjMWMxMDQ5M2UwMjZmNzBjNDQyNzQ3NDUwOGIzNmYwZWQwYTYuLjA0MmUwM2E2
YjU3NzQzZTlhMDVjZjY0OTNjZTU3Mjg0N2I4NDVmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00NTIsMTggKzQ1MiwxMyBA
QCBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY1F1ZXJ5V2l0aFBhcmVudChHc3RQYWQqIHBhZCwgR3N0
T2JqZWN0KiBwYXJlbnQsIEdzdFF1ZXJ5KgogCiB2b2lkIHdlYktpdE1lZGlhU3JjVXBkYXRlUHJl
c2VudGF0aW9uU2l6ZShHc3RDYXBzKiBjYXBzLCBTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBHc3RT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7Ci0g
ICAgY29uc3QgZ2NoYXIqIHN0cnVjdHVyZU5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0
cnVjdHVyZSk7Ci0gICAgR3N0VmlkZW9JbmZvIGluZm87Ci0KICAgICBHU1RfT0JKRUNUX0xPQ0so
c3RyZWFtLT5wYXJlbnQpOwotICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVyZU5hbWUs
ICJ2aWRlby8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKSB7Ci0g
ICAgICAgIGZsb2F0IHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICAgICAgLy8gRklYTUU6IENvcnJlY3Q/
LgotICAgICAgICB3aWR0aCA9IGluZm8ud2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGluZm8uaGVp
Z2h0ICogKChmbG9hdCkgaW5mby5wYXJfZCAvIChmbG9hdCkgaW5mby5wYXJfbik7Ci0gICAgICAg
IHN0cmVhbS0+cHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKKyAgICBpZiAoV2ViQ29yZTo6ZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NB
UFNfVFlQRV9QUkVGSVgpKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRT
aXplPiBzaXplID0gV2ViQ29yZTo6Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY2Fwcyk7Cisg
ICAgICAgIGlmIChzaXplLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgc3RyZWFtLT5wcmVzZW50
YXRpb25TaXplID0gc2l6ZS52YWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHJl
YW0tPnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>