<?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>143301</bug_id>
          
          <creation_ts>2015-04-01 01:59:26 -0700</creation_ts>
          <short_desc>[ThreadedCompositor] Support HTML5 Video</short_desc>
          <delta_ts>2015-12-09 10:43:52 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143299</dependson>
          <blocked>100341</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gwang Yoon Hwang">yoon</reporter>
          <assigned_to name="Gwang Yoon Hwang">yoon</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081938</commentid>
    <comment_count>0</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 01:59:26 -0700</bug_when>
    <thetext>[ThreadedCompositor] Support HTML5 Video</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081939</commentid>
    <comment_count>1</comment_count>
      <attachid>249908</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 02:00:03 -0700</bug_when>
    <thetext>Created attachment 249908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081940</commentid>
    <comment_count>2</comment_count>
      <attachid>249909</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 02:00:47 -0700</bug_when>
    <thetext>Created attachment 249909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147744</commentid>
    <comment_count>3</comment_count>
      <attachid>266996</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 06:04:43 -0800</bug_when>
    <thetext>Created attachment 266996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147745</commentid>
    <comment_count>4</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 06:06:58 -0800</bug_when>
    <thetext>Finally, it reaches to the stage of review.
Zan, could you take a look at it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147747</commentid>
    <comment_count>5</comment_count>
      <attachid>266996</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-09 06:35:29 -0800</bug_when>
    <thetext>Comment on attachment 266996
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:111
&gt; +    GstVideoFrameHolder(GstSample&amp; sample)

It&apos;s uncommon to use references with C API objects (e.g. objects from the GLib, GStreamer and GTK+ APIs). In both places you use this reference in this constructor, you have to use the &amp; unary operator just to retrieve the address. So I wouldn&apos;t advise using a C++ reference for this parameter.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:125
&gt; +        m_videoFrame = new GstVideoFrame();
&gt; +        if (UNLIKELY(!gst_video_frame_map(m_videoFrame, &amp;videoInfo, buffer, static_cast&lt;GstMapFlags&gt;(GST_MAP_READ | GST_MAP_GL))))
&gt; +            return;

As the macro in the branch hints, this would be unlikely, but in case the gst_video_frame_map() call fails you would end up leaking the heap-allocated m_videoFrame object.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:131
&gt; +    ~GstVideoFrameHolder() override

Heh, regarding the virtual-vs-override-specifier, for the destructors I would very much prefer we stuck with the virtual specifier for the destructors. I don&apos;t think override specifier is used in this context anywhere in the WebKit codebase.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:140
&gt; +        gst_gl_window_send_message_async(gstWindow, (GstGLWindowCB) unmapVideoFrameCallback, m_videoFrame, (GDestroyNotify) freeVideoFrameCallback);

There&apos;s no need for the extra space in the GstGLWindowCB and GDestroyNotify casts.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:147
&gt; +    }
&gt; +    static void freeVideoFrameCallback(GstVideoFrame* videoFrame)

You can afford a separate line between these two.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:152
&gt; +    IntSize size() const { return m_size; }

In this case we normally return a const reference to the member variable, while for integers or enums a copy is returned (which usually fits into one register).

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:454
&gt; +    texture.updateContents(srcData, WebCore::IntRect(WebCore::IntPoint(0, 0), size), WebCore::IntPoint(0, 0), stride, BitmapTexture::UpdateCannotModifyOriginalImageData);

You can remove the size variable and just use the 4-parameter IntRect constructor.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:510
&gt; +    unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt; buffer = m_platformLayerProxy-&gt;getAvailableBuffer(size, GraphicsContext3D::DONT_CARE);

std::unique_ptr&lt;&gt;

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:556
&gt; +    updateOnCompositorThread();

This method could just be named updateTexture(), since in this case the name gives false impression.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:602
&gt; +#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; +        return;

Should we also place an ASSERT_NOT_REACHED() here? Or do we actually call this method even with the threaded compositor?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:653
&gt; +        textureMapper-&gt;drawTexture(*texture.get(), targetRect, matrix, opacity);

No need to retrieve the raw pointer from the RefPtr object -- just dereference the RefPtr object directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147771</commentid>
    <comment_count>6</comment_count>
      <attachid>267006</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 08:07:54 -0800</bug_when>
    <thetext>Created attachment 267006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147775</commentid>
    <comment_count>7</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 08:10:41 -0800</bug_when>
    <thetext>Thanks for review.

(In reply to comment #5)
&gt; Comment on attachment 266996 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266996&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:111
&gt; &gt; +    GstVideoFrameHolder(GstSample&amp; sample)
&gt; 
&gt; It&apos;s uncommon to use references with C API objects (e.g. objects from the
&gt; GLib, GStreamer and GTK+ APIs). In both places you use this reference in
&gt; this constructor, you have to use the &amp; unary operator just to retrieve the
&gt; address. So I wouldn&apos;t advise using a C++ reference for this parameter.
&gt; 

Ah, it looks familiar. Fixed as you suggest.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:125
&gt; &gt; +        m_videoFrame = new GstVideoFrame();
&gt; &gt; +        if (UNLIKELY(!gst_video_frame_map(m_videoFrame, &amp;videoInfo, buffer, static_cast&lt;GstMapFlags&gt;(GST_MAP_READ | GST_MAP_GL))))
&gt; &gt; +            return;
&gt; 
&gt; As the macro in the branch hints, this would be unlikely, but in case the
&gt; gst_video_frame_map() call fails you would end up leaking the heap-allocated
&gt; m_videoFrame object.
&gt; 

Nice point! Fixed.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:131
&gt; &gt; +    ~GstVideoFrameHolder() override
&gt; 
&gt; Heh, regarding the virtual-vs-override-specifier, for the destructors I
&gt; would very much prefer we stuck with the virtual specifier for the
&gt; destructors. I don&apos;t think override specifier is used in this context
&gt; anywhere in the WebKit codebase.
&gt; 

Changed to use virtual.

&gt; &gt; 
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:140
&gt; &gt; +        gst_gl_window_send_message_async(gstWindow, (GstGLWindowCB) unmapVideoFrameCallback, m_videoFrame, (GDestroyNotify) freeVideoFrameCallback);
&gt; 
&gt; There&apos;s no need for the extra space in the GstGLWindowCB and GDestroyNotify
&gt; casts.
&gt; 

nice. Fixed.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:147
&gt; &gt; +    }
&gt; &gt; +    static void freeVideoFrameCallback(GstVideoFrame* videoFrame)
&gt; 
&gt; You can afford a separate line between these two.
&gt; 

Ditto.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:152
&gt; &gt; +    IntSize size() const { return m_size; }
&gt; 
&gt; In this case we normally return a const reference to the member variable,
&gt; while for integers or enums a copy is returned (which usually fits into one
&gt; register).
&gt; 

Fixed to use const IntSize&amp;

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:454
&gt; &gt; +    texture.updateContents(srcData, WebCore::IntRect(WebCore::IntPoint(0, 0), size), WebCore::IntPoint(0, 0), stride, BitmapTexture::UpdateCannotModifyOriginalImageData);
&gt; 
&gt; You can remove the size variable and just use the 4-parameter IntRect
&gt; constructor.
&gt; 

Modified as you suggest.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:510
&gt; &gt; +    unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt; buffer = m_platformLayerProxy-&gt;getAvailableBuffer(size, GraphicsContext3D::DONT_CARE);
&gt; 
&gt; std::unique_ptr&lt;&gt;
&gt; 

Ditto.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:556
&gt; &gt; +    updateOnCompositorThread();
&gt; 
&gt; This method could just be named updateTexture(), since in this case the name
&gt; gives false impression.
&gt; 

It is always hard to find nice name. :)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:602
&gt; &gt; +#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; &gt; +        return;
&gt; 
&gt; Should we also place an ASSERT_NOT_REACHED() here? Or do we actually call
&gt; this method even with the threaded compositor?
&gt; 

Let&apos;s use ASSERT_NOT_REACHED at this point.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:653
&gt; &gt; +        textureMapper-&gt;drawTexture(*texture.get(), targetRect, matrix, opacity);
&gt; 
&gt; No need to retrieve the raw pointer from the RefPtr object -- just
&gt; dereference the RefPtr object directly.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147776</commentid>
    <comment_count>8</comment_count>
      <attachid>267006</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-09 08:12:53 -0800</bug_when>
    <thetext>Comment on attachment 267006
Patch

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

OK, r=me.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:499
&gt; +    return;

This return isn&apos;t strictly required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147778</commentid>
    <comment_count>9</comment_count>
      <attachid>267009</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 08:36:08 -0800</bug_when>
    <thetext>Created attachment 267009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147780</commentid>
    <comment_count>10</comment_count>
      <attachid>267009</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 08:38:11 -0800</bug_when>
    <thetext>Comment on attachment 267009
Patch

Rejecting attachment 267009 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 267009, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/537425</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147782</commentid>
    <comment_count>11</comment_count>
      <attachid>267011</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 08:40:05 -0800</bug_when>
    <thetext>Created attachment 267011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147800</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-12-09 09:19:02 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It&apos;s uncommon to use references with C API objects (e.g. objects from the
&gt; GLib, GStreamer and GTK+ APIs). In both places you use this reference in
&gt; this constructor, you have to use the &amp; unary operator just to retrieve the
&gt; address. So I wouldn&apos;t advise using a C++ reference for this parameter.

I prefer to use C++ references as function parameters to document that the parameter cannot be nullptr. I believe we&apos;ve been attempting to replace pointers with references throughout the tree, to reduce potential for mistakes with nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147803</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-09 09:23:15 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #5)
&gt; &gt; It&apos;s uncommon to use references with C API objects (e.g. objects from the
&gt; &gt; GLib, GStreamer and GTK+ APIs). In both places you use this reference in
&gt; &gt; this constructor, you have to use the &amp; unary operator just to retrieve the
&gt; &gt; address. So I wouldn&apos;t advise using a C++ reference for this parameter.
&gt; 
&gt; I prefer to use C++ references as function parameters to document that the
&gt; parameter cannot be nullptr. I believe we&apos;ve been attempting to replace
&gt; pointers with references throughout the tree, to reduce potential for
&gt; mistakes with nullptr.

But not for GObjects, it&apos;s so confusing to me seeing const GObject&amp;, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147809</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-09 09:34:32 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; It&apos;s uncommon to use references with C API objects (e.g. objects from the
&gt; &gt; &gt; GLib, GStreamer and GTK+ APIs). In both places you use this reference in
&gt; &gt; &gt; this constructor, you have to use the &amp; unary operator just to retrieve the
&gt; &gt; &gt; address. So I wouldn&apos;t advise using a C++ reference for this parameter.
&gt; &gt; 
&gt; &gt; I prefer to use C++ references as function parameters to document that the
&gt; &gt; parameter cannot be nullptr. I believe we&apos;ve been attempting to replace
&gt; &gt; pointers with references throughout the tree, to reduce potential for
&gt; &gt; mistakes with nullptr.
&gt; 
&gt; But not for GObjects, it&apos;s so confusing to me seeing const GObject&amp;, for
&gt; example.

I agree, and like I said I feel the same about every C API that operates with raw pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147814</commentid>
    <comment_count>15</comment_count>
      <attachid>267011</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 09:37:50 -0800</bug_when>
    <thetext>Comment on attachment 267011
Patch

Clearing flags on attachment: 267011

Committed r193836: &lt;http://trac.webkit.org/changeset/193836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147844</commentid>
    <comment_count>16</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-09 10:43:52 -0800</bug_when>
    <thetext>The patch was landed. Closing the bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249908</attachid>
            <date>2015-04-01 02:00:03 -0700</date>
            <delta_ts>2015-04-01 02:00:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143301-20150401175919.patch</filename>
            <type>text/plain</type>
            <size>11933</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3NzI0MmNlMjJjYmU0
NDE2NWU0YTAxNTkzODQzOWVhMzkxMjI3Ni4uOGNlZjcxNWUwNTg4ZDY5OGM1YWQ0ODUzNDhkMWJm
YTFmNGMxZGQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTA0LTAxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIFN1cHBvcnQgSFRNTDUgVmlkZW8KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09Q
UyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBIVE1MNSBWaWRlbyBzdXBwb3J0cyBpbiBUaHJlYWRlZCBDb21w
b3NpdG9yLiBVbmxpa2UgcHJldmlvdXMgcmVuZGVyaW5nCisgICAgICAgIHBpcGVsaW5lLCByZW5k
ZXJpbmcgdGhyZWFkIG9mIEdTdHJlYW1lciAoVmlkZW9TaW5rR1N0cmVhbWVyKSBjcmVhdGVzIG9y
IHVwZGF0ZXMgYSB0ZXh0dXJlIGFuZAorICAgICAgICBzZW5kIGEgYnVmZmVyIHdpdGggdGhlIHVw
ZGF0ZWQgdGV4dHVyZSB0byB0aGUgY29tcG9zaXRvciB0aHJlYWQgZGlyZWN0bHkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1l
ci5jcHA6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtSZW5kZXIpOgorCisyMDE1LTA0LTAxICBH
d2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtUaHJlYWRlZENv
bXBvc2l0b3JdIFN1cHBvcnQgV2ViR0wgZm9yIE9wZW5HTC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggOTQ1NmU1OTlhZDBl
ZGZiMzM2M2JhZjE1NTZlYzY4ODE4NjJkZGEzNS4uZGFmYzkyNDllNGU4OTNjZTQxZmIyNmUxZThj
MmQ2NTk0YzhmNjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtOTcsNiArOTcsOSBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVy
KiBwbAogICAgICwgbV9tdXRlU2lnbmFsSGFuZGxlcigwKQogewogICAgIGdfbXV0ZXhfaW5pdCgm
bV9zYW1wbGVNdXRleCk7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQor
ICAgIG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkoKSk7CisjZW5kaWYKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKQpAQCAtMjc4LDM1ICsy
ODEsMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdl
ZCgpCiAgICAgbV9tdXRlVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PihzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5vdGlmeVBsYXll
ck9mTXV0ZSwgdGhpcykpKTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHc3RWaWRl
b0luZm8mIHZpZGVvSW5mbykKIHsKLSAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2so
bV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFtX3NhbXBsZSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZSk7
Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdzdFZpZGVv
SW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKLSAg
ICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURF
T19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5m
bykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+
YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZp
ZGVvSW5mbykpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVy
KG1fc2FtcGxlKTsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApCiAgICAgR3N0Vmlk
ZW9HTFRleHR1cmVVcGxvYWRNZXRhKiBtZXRhOwogICAgIGlmICgobWV0YSA9IGdzdF9idWZmZXJf
Z2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGEoYnVmZmVyKSkpIHsKICAgICAgICAgaWYg
KG1ldGEtPm5fdGV4dHVyZXMgPT0gMSkgeyAvLyBCUkd4ICYgQkdSQSBmb3JtYXRzIHVzZSBvbmx5
IG9uZSB0ZXh0dXJlLgotICAgICAgICAgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJl
R0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKTsK
LSAgICAgICAgICAgIGd1aW50IGlkc1s0XSA9IHsgdGV4dHVyZUdMLT5pZCgpLCAwLCAwLCAwIH07
CisgICAgICAgICAgICBndWludCBpZHNbNF0gPSB7IHRleHR1cmUuaWQoKSwgMCwgMCwgMCB9Owog
CiAgICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGFfdXBsb2Fk
KG1ldGEsIGlkcykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0zMTYsMTQgKzMwNCwx
MiBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogCiAgICAgR3N0VmlkZW9GcmFtZSB2aWRlb0Zy
YW1lOwogICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5m
bywgYnVmZmVyLCBHU1RfTUFQX1JFQUQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgaW50IHN0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJ
REUoJnZpZGVvRnJhbWUsIDApOwogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEgPSBHU1RfVklERU9f
RlJBTUVfUExBTkVfREFUQSgmdmlkZW9GcmFtZSwgMCk7Ci0gICAgdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwg
c2l6ZSksIFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBzdHJpZGUsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB0ZXh0dXJlLnVwZGF0ZUNv
bnRlbnRzKHNyY0RhdGEsIFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoMCwgMCks
IHNpemUpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpV
cGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAgICAgZ3N0X3ZpZGVvX2ZyYW1l
X3VubWFwKCZ2aWRlb0ZyYW1lKTsKLQotICAgIHJldHVybiB0ZXh0dXJlOwogfQogI2VuZGlmCiAK
QEAgLTMzOCw2ICszMjQsMzIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojp0cmlnZ2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkKICAgICAgICAgbV9zYW1wbGUgPSBn
c3Rfc2FtcGxlX3JlZihzYW1wbGUpOwogICAgIH0KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2Fwcyht
X3NhbXBsZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXBzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRl
b0luZm8pOworICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRl
b0luZm8sIGNhcHMpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzaXplID0gSW50
U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJ
R0hUKCZ2aWRlb0luZm8pKTsKKworICAgIHVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGJ1ZmZlciA9IG1fcGxhdGZvcm1MYXllclByb3h5LT5nZXRBdmFpbGFibGVC
dWZmZXIoc2l6ZSk7CisgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7CisgICAgICAgIGlmIChV
TkxJS0VMWSghbV9jb250ZXh0M0QpKQorICAgICAgICAgICAgbV9jb250ZXh0M0QgPSBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCksIG51bGxw
dHIpOworCisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gYWRvcHRSZWYo
bmV3IEJpdG1hcFRleHR1cmVHTChtX2NvbnRleHQzRCkpOworICAgICAgICB0ZXh0dXJlLT5yZXNl
dChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykpOworICAgICAgICBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEY6Om1vdmUodGV4dHVyZSkpOworICAgIH0KKyAgICB1cGRhdGVUZXh0dXJlKGJ1ZmZlci0+
dGV4dHVyZUdMKCksIHZpZGVvSW5mbyk7CisgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hO
ZXh0QnVmZmVyKFdURjo6bW92ZShidWZmZXIpKTsKKyAgICByZXR1cm47CisjZW5kaWYKKwogI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVyLT5jbGllbnQo
KS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIpICYmIGNsaWVu
dCgpKSB7CiAgICAgICAgIGNsaWVudCgpLT5zZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCk7
CkBAIC0zNTUsNyArMzY3LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyAgICAgICAgcmV0dXJuOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCkBAIC0zODcsOSArNDAxLDI3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiAgICAg
aWYgKCFtX3BsYXllci0+dmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHVwZGF0ZVRleHR1cmUodGV4dHVyZU1hcHBlcik7Ci0g
ICAgaWYgKHRleHR1cmUpCi0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0
dXJlLmdldCgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworICAgIFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlOworICAgIHsKKyAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011
dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworCisgICAgICAgIGlmICghbV9zYW1wbGUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0
X2NhcHMobV9zYW1wbGUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWNhcHMpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgICAgIGdz
dF92aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZ3N0
X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAg
ICAgICB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXpl
LCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykpOworICAgICAgICB1cGRhdGVU
ZXh0dXJlKHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJlKSwgdmlkZW9JbmZv
KTsKKyAgICB9CisgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnRleHR1cmUuZ2V0KCks
IHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggMGJjMDVhOGJm
ZGY2MjNkOTAyMTAyYjViMTYyZDc0ZmQxNWJhNGQ5MC4uYzM4OWJlOWExMjMzYzZlYmQ4MjVhN2Uz
OTk3OWM3ZDI5MWRhMWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zNiwxNCArMzYsMjAgQEAKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5oIgorI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogdHlw
ZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RN
ZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U3RyZWFtVm9sdW1lIEdzdFN0
cmVhbVZvbHVtZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRlb0luZm8gR3N0VmlkZW9JbmZvOwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2luayBXZWJLaXRWaWRlb1Npbms7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7CkBAIC01MSw2ICs1Nyw4IEBA
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDog
cHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQogI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAsIHB1YmxpYyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllcgorI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorICAgICwgcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRl
cgogI2VuZGlmCiB7CiAKQEAgLTEwNyw2ICsxMTUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7CiAjZW5kaWYKIAorI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UqPih0aGlzKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxh
eWVyKik7CiAgICAgdmlydHVhbCBHc3RFbGVtZW50KiBjcmVhdGVWaWRlb1NpbmsoKTsKQEAgLTEz
MCw4ICsxNDMsMTQgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1bWVTaWdu
YWxIYW5kbGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9tdXRlU2lnbmFsSGFuZGxlcjsKICAgICBt
dXRhYmxlIEZsb2F0U2l6ZSBtX3ZpZGVvU2l6ZTsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiB1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQorICAgIHZv
aWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJlR0wmLCBHc3RWaWRlb0luZm8mKTsKKyNlbmRp
ZgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwg
UmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyUHJveHkuY29weVJlZigpOyB9CisgICAgUmVm
UHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZvcm1MYXllclByb3h5
OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7CiAjZW5kaWYKIH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IGM5NzJjNGQ4MTRhNDM1
YTBiYWJmYmE5ZjVhOTIxODBjMzQ0MDkwMmIuLjk4MTVhYzdkMzUxMDE5ZTIwZDRiMWEzODNmMzMy
ZjBmYmFhNGY2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0xMzUs
NyArMTM1LDkgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdz
dEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYKICAgICBXZWJLaXRWaWRlb1Npbmsq
IHNpbmsgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2luayk7CiAgICAgV2ViS2l0VmlkZW9TaW5r
UHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQogICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5z
YW1wbGVNdXRleCk7CisjZW5kaWYKIAogICAgIGlmIChwcml2LT51bmxvY2tlZCkKICAgICAgICAg
cmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtMjE0LDYgKzIxNiw5IEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZl
ciogYnVmCiAgICAgfQogI2VuZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisgICAgd2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrKHNpbmspOworI2Vsc2UK
ICAgICAvLyBUaGlzIHNob3VsZCBsaWtlbHkgdXNlIGEgbG93ZXIgcHJpb3JpdHksIGJ1dCBnbGli
IGN1cnJlbnRseSBzdGFydmVzCiAgICAgLy8gbG93ZXIgcHJpb3JpdHkgc291cmNlcy4KICAgICAv
LyBTZWU6IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA4MzAu
CkBAIC0yMjIsNiArMjI3LDcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5r
UmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYKICAgICAgICAgW3Np
bmtdIHsgZ3N0X29iamVjdF91bnJlZihzaW5rKTsgfSk7CiAKICAgICBnX2NvbmRfd2FpdCgmcHJp
di0+ZGF0YUNvbmRpdGlvbiwgJnByaXYtPnNhbXBsZU11dGV4KTsKKyNlbmRpZgogICAgIHJldHVy
biBHU1RfRkxPV19PSzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249909</attachid>
            <date>2015-04-01 02:00:47 -0700</date>
            <delta_ts>2015-12-09 06:04:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143301-20150401180003.patch</filename>
            <type>text/plain</type>
            <size>11954</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3NzI0MmNlMjJjYmU0
NDE2NWU0YTAxNTkzODQzOWVhMzkxMjI3Ni4uYzE2Njg3YzhlNGMxMGE3YjcyY2Q0YTMyYzVhYmQx
NTVlZDNkMzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTA0LTAxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIFN1cHBvcnQgSFRNTDUgVmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBIVE1MNSBWaWRlbyBzdXBw
b3J0cyBpbiBUaHJlYWRlZCBDb21wb3NpdG9yLiBVbmxpa2UgcHJldmlvdXMgcmVuZGVyaW5nCisg
ICAgICAgIHBpcGVsaW5lLCByZW5kZXJpbmcgdGhyZWFkIG9mIEdTdHJlYW1lciAoVmlkZW9TaW5r
R1N0cmVhbWVyKSBjcmVhdGVzIG9yIHVwZGF0ZXMgYSB0ZXh0dXJlIGFuZAorICAgICAgICBzZW5k
IGEgYnVmZmVyIHdpdGggdGhlIHVwZGF0ZWQgdGV4dHVyZSB0byB0aGUgY29tcG9zaXRvciB0aHJl
YWQgZGlyZWN0bHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNB
Y2NlbGVyYXRlZFJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtSZW5k
ZXIpOgorCisyMDE1LTA0LTAxICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgor
CiAgICAgICAgIFtUaHJlYWRlZENvbXBvc2l0b3JdIFN1cHBvcnQgV2ViR0wgZm9yIE9wZW5HTC4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggOTQ1NmU1OTlhZDBlZGZiMzM2M2JhZjE1NTZlYzY4ODE4NjJkZGEzNS4uZGFmYzky
NDllNGU4OTNjZTQxZmIyNmUxZThjMmQ2NTk0YzhmNjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtOTcsNiArOTcsOSBA
QCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9tdXRlU2lnbmFsSGFuZGxlcigwKQog
ewogICAgIGdfbXV0ZXhfaW5pdCgmbV9zYW1wbGVNdXRleCk7CisjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKQorICAgIG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYo
bmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSk7CisjZW5kaWYKIH0KIAogTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UoKQpAQCAtMjc4LDM1ICsyODEsMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCgpCiAgICAgbV9tdXRlVGltZXJIYW5kbGVyLnNjaGVkdWxl
KCJbV2ViS2l0XSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCIs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSwgdGhpcykpKTsKIH0KIAotI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLVBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4
dHVyZShUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQorI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVy
ZUdMJiB0ZXh0dXJlLCBHc3RWaWRlb0luZm8mIHZpZGVvSW5mbykKIHsKLSAgICBXVEY6OkdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFtX3NhbXBsZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBs
ZV9nZXRfY2FwcyhtX3NhbXBsZSk7Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVvX2luZm9f
aW5pdCgmdmlkZW9JbmZvKTsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fwcygmdmlk
ZW9JbmZvLCBjYXBzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBJbnRTaXplIHNp
emUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9f
SU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklE
RU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0g
Z3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlKTsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9O
KDEsIDEsIDApCiAgICAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKiBtZXRhOwogICAgIGlm
ICgobWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGEoYnVm
ZmVyKSkpIHsKICAgICAgICAgaWYgKG1ldGEtPm5fdGV4dHVyZXMgPT0gMSkgeyAvLyBCUkd4ICYg
QkdSQSBmb3JtYXRzIHVzZSBvbmx5IG9uZSB0ZXh0dXJlLgotICAgICAgICAgICAgY29uc3QgQml0
bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJl
R0wqPih0ZXh0dXJlLmdldCgpKTsKLSAgICAgICAgICAgIGd1aW50IGlkc1s0XSA9IHsgdGV4dHVy
ZUdMLT5pZCgpLCAwLCAwLCAwIH07CisgICAgICAgICAgICBndWludCBpZHNbNF0gPSB7IHRleHR1
cmUuaWQoKSwgMCwgMCwgMCB9OwogCiAgICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2dsX3RleHR1
cmVfdXBsb2FkX21ldGFfdXBsb2FkKG1ldGEsIGlkcykpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRleHR1cmU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCkBAIC0zMTYsMTQgKzMwNCwxMiBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogCiAgICAg
R3N0VmlkZW9GcmFtZSB2aWRlb0ZyYW1lOwogICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgm
dmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBHU1RfTUFQX1JFQUQpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IHN0cmlkZSA9IEdTVF9W
SURFT19GUkFNRV9QTEFORV9TVFJJREUoJnZpZGVvRnJhbWUsIDApOwogICAgIGNvbnN0IHZvaWQq
IHNyY0RhdGEgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSgmdmlkZW9GcmFtZSwgMCk7Ci0g
ICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50UmVjdChXZWJD
b3JlOjpJbnRQb2ludCgwLCAwKSwgc2l6ZSksIFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBzdHJp
ZGUsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsK
KyAgICB0ZXh0dXJlLnVwZGF0ZUNvbnRlbnRzKHNyY0RhdGEsIFdlYkNvcmU6OkludFJlY3QoV2Vi
Q29yZTo6SW50UG9pbnQoMCwgMCksIHNpemUpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3Ry
aWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7
CiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKLQotICAgIHJldHVybiB0
ZXh0dXJlOwogfQogI2VuZGlmCiAKQEAgLTMzOCw2ICszMjQsMzIgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkK
ICAgICAgICAgbV9zYW1wbGUgPSBnc3Rfc2FtcGxlX3JlZihzYW1wbGUpOwogICAgIH0KIAorI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBHc3RDYXBzKiBjYXBzID0g
Z3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXBzKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBnc3Rf
dmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZv
KSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKKworICAgIHVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGJ1ZmZlciA9IG1fcGxhdGZvcm1MYXll
clByb3h5LT5nZXRBdmFpbGFibGVCdWZmZXIoc2l6ZSk7CisgICAgaWYgKFVOTElLRUxZKCFidWZm
ZXIpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9jb250ZXh0M0QpKQorICAgICAgICAgICAg
bV9jb250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzKCksIG51bGxwdHIpOworCisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlID0gYWRvcHRSZWYobmV3IEJpdG1hcFRleHR1cmVHTChtX2NvbnRleHQzRCkpOwor
ICAgICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZp
ZGVvSW5mbykpOworICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEY6Om1vdmUodGV4dHVyZSkpOworICAgIH0KKyAgICB1
cGRhdGVUZXh0dXJlKGJ1ZmZlci0+dGV4dHVyZUdMKCksIHZpZGVvSW5mbyk7CisgICAgbV9wbGF0
Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURjo6bW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm47CisjZW5kaWYKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
ICYmIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0
ZWQobV9wbGF5ZXIpICYmIGNsaWVudCgpKSB7CiAgICAgICAgIGNsaWVudCgpLT5zZXRQbGF0Zm9y
bUxheWVyTmVlZHNEaXNwbGF5KCk7CkBAIC0zNTUsNyArMzY3LDkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19USFJFQURFRCkKKyAgICAgICAgcmV0dXJuOworI2VsaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQo
KSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0zODcsOSArNDAxLDI3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyCiAgICAgaWYgKCFtX3BsYXllci0+dmlzaWJsZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHVwZGF0ZVRleHR1
cmUodGV4dHVyZU1hcHBlcik7Ci0gICAgaWYgKHRleHR1cmUpCi0gICAgICAgIHRleHR1cmVNYXBw
ZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlLmdldCgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNp
dHkpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlOworICAgIHsKKyAgICAgICAg
V1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworCisgICAgICAg
IGlmICghbV9zYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgR3N0Q2Fwcyog
Y2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOworICAgICAgICBpZiAoVU5MSUtF
TFkoIWNhcHMpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEdzdFZpZGVvSW5mbyB2
aWRlb0luZm87CisgICAgICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAg
ICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNh
cHMpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbnRTaXplIHNpemUgPSBJbnRT
aXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlH
SFQoJnZpZGVvSW5mbykpOworICAgICAgICB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWly
ZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5m
bykpOworICAgICAgICB1cGRhdGVUZXh0dXJlKHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+
KCp0ZXh0dXJlKSwgdmlkZW9JbmZvKTsKKyAgICB9CisgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1Rl
eHR1cmUoKnRleHR1cmUuZ2V0KCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmgKaW5kZXggMGJjMDVhOGJmZGY2MjNkOTAyMTAyYjViMTYyZDc0ZmQxNWJhNGQ5MC4uYzM4
OWJlOWExMjMzYzZlYmQ4MjVhN2UzOTk3OWM3ZDI5MWRhMWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zNiwxNCArMzYsMjAg
QEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IF9Hc3RT
YW1wbGUgR3N0U2FtcGxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsK
IHR5cGVkZWYgc3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0cnVjdCBf
R3N0U3RyZWFtVm9sdW1lIEdzdFN0cmVhbVZvbHVtZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRl
b0luZm8gR3N0VmlkZW9JbmZvOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2luayBXZWJL
aXRWaWRlb1Npbms7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQml0bWFwVGV4dHVy
ZUdMOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJl
Y3Q7CkBAIC01MSw2ICs1Nyw4IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICAsIHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgorI2VsaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwgcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlQcm92aWRlcgogI2VuZGlmCiB7CiAKQEAgLTEwNyw2ICsxMTUsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCk7CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBj
b25zdF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih0aGlzKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCBHc3RFbGVtZW50KiBjcmVh
dGVWaWRlb1NpbmsoKTsKQEAgLTEzMCw4ICsxNDMsMTQgQEAgcHJvdGVjdGVkOgogICAgIHVuc2ln
bmVkIGxvbmcgbV92b2x1bWVTaWduYWxIYW5kbGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9tdXRl
U2lnbmFsSGFuZGxlcjsKICAgICBtdXRhYmxlIEZsb2F0U2l6ZSBtX3ZpZGVvU2l6ZTsKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqKTsK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
TVVMVElQUk9DRVNTKQorICAgIHZvaWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJlR0wmLCBH
c3RWaWRlb0luZm8mKTsKKyNlbmRpZgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyUHJveHku
Y29weVJlZigpOyB9CisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+
IG1fcGxhdGZvcm1MYXllclByb3h5OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0M0Q7CiAjZW5kaWYKIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3Bw
CmluZGV4IGM5NzJjNGQ4MTRhNDM1YTBiYWJmYmE5ZjVhOTIxODBjMzQ0MDkwMmIuLjk4MTVhYzdk
MzUxMDE5ZTIwZDRiMWEzODNmMzMyZjBmYmFhNGY2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwCkBAIC0xMzUsNyArMTM1LDkgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Vi
a2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYK
ICAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2luayk7
CiAgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CiAKKyNpZiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogICAgIFdURjo6R011dGV4TG9ja2Vy
PEdNdXRleD4gbG9jayhwcml2LT5zYW1wbGVNdXRleCk7CisjZW5kaWYKIAogICAgIGlmIChwcml2
LT51bmxvY2tlZCkKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtMjE0LDYgKzIxNiw5
IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2lu
ayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgfQogI2VuZGlmCiAKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgd2Via2l0VmlkZW9TaW5rVGltZW91dENh
bGxiYWNrKHNpbmspOworI2Vsc2UKICAgICAvLyBUaGlzIHNob3VsZCBsaWtlbHkgdXNlIGEgbG93
ZXIgcHJpb3JpdHksIGJ1dCBnbGliIGN1cnJlbnRseSBzdGFydmVzCiAgICAgLy8gbG93ZXIgcHJp
b3JpdHkgc291cmNlcy4KICAgICAvLyBTZWU6IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3No
b3dfYnVnLmNnaT9pZD02MTA4MzAuCkBAIC0yMjIsNiArMjI3LDcgQEAgc3RhdGljIEdzdEZsb3dS
ZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVm
ZmVyKiBidWYKICAgICAgICAgW3NpbmtdIHsgZ3N0X29iamVjdF91bnJlZihzaW5rKTsgfSk7CiAK
ICAgICBnX2NvbmRfd2FpdCgmcHJpdi0+ZGF0YUNvbmRpdGlvbiwgJnByaXYtPnNhbXBsZU11dGV4
KTsKKyNlbmRpZgogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266996</attachid>
            <date>2015-12-09 06:04:43 -0800</date>
            <delta_ts>2015-12-09 08:07:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143301-20151209150412.patch</filename>
            <type>text/plain</type>
            <size>18925</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdiODEwMmZkNWE2OGU5
MzdkMDNkZWQ2NWYyZDM4YTRhOTA2NzM5My4uNDZmODdhNjA2YzM0MmY3ZDE0ZjQ1N2M2MDkxNGU0
N2EyNzg2YTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA0LTAxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIFN1cHBvcnQgSFRNTDUgVmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBIVE1MNSBWaWRlbyBzdXBw
b3J0cyBpbiBUaHJlYWRlZCBDb21wb3NpdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6Cisg
ICAgICAgIEFkZGVkIHRvIHN1cHBvcnQgR1N0cmVhbWVyIEdMIGJ5IGVuc3VyaW5nIHVubWFwcGlu
ZyBvZiB0aGUgc3dhcHBlZAorICAgICAgICBHc3RWaWRlb0ZyYW1lIHBlcmZvcm1lZCBhdCBHU3Ry
ZWFtZXIgR0wncyBnbCB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgTW9kaWZpZWQgdG8gdXBs
b2FkIGRlY29kZWQgZnJhbWUgdG8gdGhlIGdpdmVuIHRleHR1cmUgaW5zdGVhZCBvZgorICAgICAg
ICBjcmVhdGluZyBhIHRleHR1cmUgaXRzZWxmIGJlY2F1c2Ugd2Ugc2hvdWxkIHVzZSBhIHRleHR1
cmUgZnJvbSB0aGUKKyAgICAgICAgcHJveHkgd2hlbiB3ZSBhcmUgdXNpbmcgdGhlIHRocmVhZGVk
IGNvbXBvc2l0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjp1cGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQpOgorICAgICAgICBJbXBsZW1lbnRzIHR3
byB3YXlzIHRvIHNlbmQgYSB0ZXh0dXJlIGZyb20gR1N0cmVhbWVyIHRvIHRoZSBjb21wb3NpdG9y
LgorICAgICAgICAxLiBJZiB3ZSBhcmUgbm90IHVzaW5nIEdTdHJlYW1lciBHTCwgd2UgYXJlIGdv
aW5nIHRvIGFjcXVpcmUgYSBmcmVlIHRleHR1cmUKKyAgICAgICAgZnJvbSBhIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIHVwbG9hZCB0aGUgZGVjb2RlZCBmcmFtZSB0byB0aGUK
KyAgICAgICAgdGV4dHVyZS4gVGhpcyBzaG91bGQgYmUgZG9uZSBhdCB0aGUgY29tcG9zaXRpbmcg
dGhyZWFkIGJlY2F1c2Ugd2UKKyAgICAgICAgZG9uJ3QgaGF2ZSBhIEdzdCdzIEdMIHRocmVhZC4K
KyAgICAgICAgMi4gSWYgd2UgYXJlIHVzaW5nIEdTdHJlYW1lciBHTCwgd2UgbWFwIGEgdGV4dHVy
ZSBmb3IgdGhlIGdpdmVuIGZyYW1lCisgICAgICAgIGFuZCBwYXNzZXMgaXQgdG8gdGhlIGNvbXBv
c2l0aW5nIHRocmVhZC4gVGhlIG1hcHBlZCBmcmFtZSB3aWxsIGJlCisgICAgICAgIGZyZWVkIGlm
IGl0IGlzIHN3YXBwZWQgb3V0IG9yIHRoZSBsYXllciBpcyByZW1vdmVkLgorCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1h
cHBlcik6CisgICAgICAgIE1vZGlmaWVkIHRvIGFxdWlyZSBhIG5ldyB0ZXh0dXJlIGl0c2VsZi4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgQWRkcyBhIHdheSB0byBwYXNzIGEgZnVuY3Rpb24g
dG8gdGhlIGNvbXBvc2l0aW5nIHRocmVhZCB0byBhbGxvY2F0ZSAvCisgICAgICAgIHVwbG9hZCB0
ZXh0dXJlcyBhdCB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLgorCisKIDIwMTUtMTItMDkgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgTWFpblRocmVh
ZFNoYXJlZFRpbWVyR3RrIGltcGxlbWVudGF0aW9uIEdMaWItc3BlY2lmaWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA1OGFm
ZmViMmJkZmQyMjZlNTliMGFmNmM1MWQwZjFiZTE0N2ZhMWQxLi4zOTc3ZTc2ZDY4YzVlZGJlY2Fi
ZWNjNWY3YjVhMzk2YzZlYzU0YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC01NSw2ICs1NSw5IEBACiAjaW5jbHVkZSAi
Qml0bWFwVGV4dHVyZVBvb2wuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNlbmRp
ZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVB
TUVSX0dMKQogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgpAQCAtMTAyLDYgKzEwNSw2NCBAQCBzdGF0
aWMgaW50IGdyZWF0ZXN0Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiAgICAgcmV0dXJuIEFC
UyhhKTsKIH0KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNF
KEdTVFJFQU1FUl9HTCkKK2NsYXNzIEdzdFZpZGVvRnJhbWVIb2xkZXIgOiBwdWJsaWMgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgewor
cHVibGljOgorICAgIEdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0U2FtcGxlJiBzYW1wbGUpCisgICAg
eworICAgICAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOworICAgICAgICBnc3RfdmlkZW9faW5m
b19pbml0KCZ2aWRlb0luZm8pOworICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9n
ZXRfY2Fwcygmc2FtcGxlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFnc3RfdmlkZW9faW5mb19m
cm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIG1fc2l6ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdT
VF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7CisgICAgICAgIG1fZmxhZ3MgPSBHU1Rf
VklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZEJsZW5kIDogMDsKKworICAgICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0
X2J1ZmZlcigmc2FtcGxlKTsKKyAgICAgICAgbV92aWRlb0ZyYW1lID0gbmV3IEdzdFZpZGVvRnJh
bWUoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFnc3RfdmlkZW9fZnJhbWVfbWFwKG1fdmlkZW9G
cmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01B
UF9SRUFEIHwgR1NUX01BUF9HTCkpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X3RleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PEdMdWludCo+KG1fdmlkZW9GcmFtZS0+ZGF0
YVswXSk7CisgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CisgICAgfQorCisgICAgfkdzdFZpZGVv
RnJhbWVIb2xkZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX2lz
VmFsaWQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEdzdE1hcEluZm8qIGluZm8g
PSAmbV92aWRlb0ZyYW1lLT5tYXBbMF07CisgICAgICAgIEdzdEdMQmFzZUJ1ZmZlciogbWVtID0g
KEdzdEdMQmFzZUJ1ZmZlciopaW5mby0+bWVtb3J5OworICAgICAgICBHc3RHTFdpbmRvdyogZ3N0
V2luZG93ID0gZ3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvdyhtZW0tPmNvbnRleHQpOworCisgICAg
ICAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlX2FzeW5jKGdzdFdpbmRvdywgKEdzdEdMV2lu
ZG93Q0IpIHVubWFwVmlkZW9GcmFtZUNhbGxiYWNrLCBtX3ZpZGVvRnJhbWUsIChHRGVzdHJveU5v
dGlmeSkgZnJlZVZpZGVvRnJhbWVDYWxsYmFjayk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
dW5tYXBWaWRlb0ZyYW1lQ2FsbGJhY2soR3N0VmlkZW9GcmFtZSogdmlkZW9GcmFtZSkKKyAgICB7
CisgICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCh2aWRlb0ZyYW1lKTsKKyAgICB9CisgICAg
c3RhdGljIHZvaWQgZnJlZVZpZGVvRnJhbWVDYWxsYmFjayhHc3RWaWRlb0ZyYW1lKiB2aWRlb0Zy
YW1lKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHZpZGVvRnJhbWU7CisgICAgfQorCisgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgVGV4dHVyZU1hcHBlckdM
OjpGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKyAgICBHTHVpbnQgdGV4
dHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSUQ7IH0KKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KKworcHJpdmF0ZToKKyAgICBHc3RWaWRlb0Zy
YW1lKiBtX3ZpZGVvRnJhbWU7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgVGV4dHVyZU1hcHBl
ckdMOjpGbGFncyBtX2ZsYWdzOworICAgIEdMdWludCBtX3RleHR1cmVJRDsKKyAgICBib29sIG1f
aXNWYWxpZCB7IGZhbHNlIH07Cit9OworI2VuZGlmCisKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBs
YXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fZnBzU2luaygwKQpAQCAtMTEz
LDYgKzE3NCw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBsCiAgICAgLCBtX3VzaW5nRmFsbGJh
Y2tWaWRlb1NpbmsoZmFsc2UpCiB7CiAgICAgZ19tdXRleF9pbml0KCZtX3NhbXBsZU11dGV4KTsK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgbV9wbGF0Zm9ybUxh
eWVyUHJveHkgPSBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgp
KTsKKyNlbmRpZgogfQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCkBAIC0zNjAsMzUgKzQyNCwyMCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om11dGVDaGFuZ2VkQ2FsbGJhY2soTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cgogICAgIHBsYXllci0+bV9ub3RpZmllci5ub3RpZnkoTWFpblRocmVh
ZE5vdGlmaWNhdGlvbjo6TXV0ZUNoYW5nZWQsIFtwbGF5ZXJdIHsgcGxheWVyLT5ub3RpZnlQbGF5
ZXJPZk11dGUoKTsgfSk7CiB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlcikKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjp1cGRhdGVUZXh0dXJlKEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZSwgR3N0VmlkZW9J
bmZvJiB2aWRlb0luZm8pCiB7Ci0gICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1f
c2FtcGxlTXV0ZXgpOwotICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVf
Z2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkpOwotICAgIGlmICghY2FwcykKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOwotICAgIGdzdF92aWRlb19p
bmZvX2luaXQoJnZpZGVvSW5mbyk7Ci0gICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMo
JnZpZGVvSW5mbywgY2FwcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgSW50U2l6
ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJ
REVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgR1NU
X1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gQml0bWFwVGV4dHVyZTo6U3VwcG9y
dHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUuZ2V0KCkpOwogCiAjaWYgR1NUX0NIRUNL
X1ZFUlNJT04oMSwgMSwgMCkKICAgICBHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEqIG1ldGE7
CiAgICAgaWYgKChtZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRf
bWV0YShidWZmZXIpKSkgewogICAgICAgICBpZiAobWV0YS0+bl90ZXh0dXJlcyA9PSAxKSB7IC8v
IEJSR3ggJiBCR1JBIGZvcm1hdHMgdXNlIG9ubHkgb25lIHRleHR1cmUuCi0gICAgICAgICAgICBj
b25zdCBCaXRtYXBUZXh0dXJlR0wqIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1h
cFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpOwotICAgICAgICAgICAgZ3VpbnQgaWRzWzRdID0g
eyB0ZXh0dXJlR0wtPmlkKCksIDAsIDAsIDAgfTsKKyAgICAgICAgICAgIGd1aW50IGlkc1s0XSA9
IHsgdGV4dHVyZS5pZCgpLCAwLCAwLCAwIH07CiAKICAgICAgICAgICAgIGlmIChnc3RfdmlkZW9f
Z2xfdGV4dHVyZV91cGxvYWRfbWV0YV91cGxvYWQobWV0YSwgaWRzKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGV4dHVyZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKQEAgLTM5OCwxNCArNDQ3LDc4IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJl
CiAKICAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7CiAgICAgaWYgKCFnc3RfdmlkZW9fZnJh
bWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIEdTVF9NQVBfUkVBRCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc3RyaWRl
ID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSgmdmlkZW9GcmFtZSwgMCk7CiAgICAgY29u
c3Qgdm9pZCogc3JjRGF0YSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBKCZ2aWRlb0ZyYW1l
LCAwKTsKLSAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRS
ZWN0KFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBzaXplKSwgV2ViQ29yZTo6SW50UG9pbnQoMCwg
MCksIHN0cmlkZSwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2Fubm90TW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOworICAgIHRleHR1cmUudXBkYXRlQ29udGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50
UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc2l6ZSksIFdlYkNvcmU6OkludFBvaW50KDAs
IDApLCBzdHJpZGUsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1h
Z2VEYXRhKTsKICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOworfQorI2Vu
ZGlmCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZCgpCit7
CisjaWYgIVVTRShHU1RSRUFNRVJfR0wpCisgICAgY2xhc3MgQ29uZGl0aW9uTm90aWZpZXIgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgQ29uZGl0aW9uTm90aWZpZXIoTG9jayYgbG9jaywgQ29uZGl0
aW9uJiBjb25kaXRpb24pCisgICAgICAgICAgICA6IG1fbG9ja2VyKGxvY2spLCBtX2NvbmRpdGlv
bihjb25kaXRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+Q29uZGl0aW9uTm90
aWZpZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
KyAgICAgICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIExvY2tIb2xkZXIgbV9sb2NrZXI7Cisg
ICAgICAgIENvbmRpdGlvbiYgbV9jb25kaXRpb247CisgICAgfTsKKyAgICBDb25kaXRpb25Ob3Rp
ZmllciBub3RpZmllcihtX2RyYXdNdXRleCwgbV9kcmF3Q29uZGl0aW9uKTsKKyNlbmRpZgorCisg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIGlm
ICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworCisgICAg
aWYgKCFtX3BsYXRmb3JtTGF5ZXJQcm94eS0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+KCptX3NhbXBsZSk7CisgICAgaWYgKFVOTElLRUxZKCFmcmFtZUhvbGRlci0+aXNWYWxpZCgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKSwgZnJh
bWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCkpOworICAgIGxheWVyQnVmZmVy
LT5zZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKFdURjo6bW92ZShmcmFtZUhvbGRlcikpOwor
ICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihXVEY6Om1vdmUobGF5ZXJC
dWZmZXIpKTsKKyAgICByZXR1cm47CisjZWxzZQorICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2Ft
cGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhcHMpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOworICAgIGdzdF92
aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgaWYgKFVOTElLRUxZKCFnc3RfdmlkZW9f
aW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8p
LCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwogCi0gICAgcmV0dXJuIHRleHR1
cmU7CisgICAgdW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYnVm
ZmVyID0gbV9wbGF0Zm9ybUxheWVyUHJveHktPmdldEF2YWlsYWJsZUJ1ZmZlcihzaXplLCBHcmFw
aGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKTsKKyAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlcikpIHsK
KyAgICAgICAgaWYgKFVOTElLRUxZKCFtX2NvbnRleHQzRCkpCisgICAgICAgICAgICBtX2NvbnRl
eHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMoKSwgbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29u
dGV4dCk7CisKKyAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhZG9wdFJl
ZihuZXcgQml0bWFwVGV4dHVyZUdMKG1fY29udGV4dDNEKSk7CisgICAgICAgIHRleHR1cmUtPnJl
c2V0KHNpemUsIEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRl
eHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEY6Om1vdmUodGV4dHVyZSkpOworICAgIH0KKyAgICB1cGRhdGVUZXh0dXJlKGJ1ZmZlci0+
dGV4dHVyZUdMKCksIHZpZGVvSW5mbyk7CisgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hO
ZXh0QnVmZmVyKFdURjo6bW92ZShidWZmZXIpKTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTQz
OCw2ICs1NTEsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmln
Z2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkKICAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7
CiAgICAgfQogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2lmIFVT
RShHU1RSRUFNRVJfR0wpCisgICAgdXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKCk7CisjZWxzZQor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fZHJhd011dGV4KTsKKyAgICAgICAgaWYg
KCFtX3BsYXRmb3JtTGF5ZXJQcm94eS0+c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQo
W3RoaXNdIHsgdGhpcy0+dXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKCk7IH0pKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2RyYXdDb25kaXRpb24ud2FpdChtX2RyYXdNdXRleCk7Cisg
ICAgfQorI2VuZGlmCisgICAgcmV0dXJuOworI2Vsc2UKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC00NDksNiArNTc1LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChH
c3RTYW1wbGUqIHNhbXBsZSkKICNlbHNlCiAgICAgcmVwYWludCgpOwogI2VuZGlmCisjZW5kaWYK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpyZXBhaW50Q2FsbGJh
Y2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyLCBHc3RTYW1wbGUqIHNh
bXBsZSkKQEAgLTQ3MSw3ICs1OTgsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorICAgICAgICByZXR1cm47CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICByZXR1
cm47CiAjZW5kaWYKQEAgLTUwMSw4ICs2MzAsMjcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXIK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fdXNpbmdGYWxsYmFja1ZpZGVvU2luaykgewot
ICAgICAgICBpZiAoUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB1cGRhdGVUZXh0dXJl
KHRleHR1cmVNYXBwZXIpKQotICAgICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUo
KnRleHR1cmUuZ2V0KCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlOworICAgICAgICB7CisgICAgICAgICAgICBXVEY6
OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7CisKKyAgICAgICAgICAg
IGlmICghbV9zYW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBH
c3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIWNhcHMpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICAgICAgICAgIGdzdF92aWRl
b19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWdzdF92
aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19J
TkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykp
OworICAgICAgICAgICAgdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJv
bVBvb2woc2l6ZSwgR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CisgICAgICAg
ICAgICB1cGRhdGVUZXh0dXJlKHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJl
KSwgdmlkZW9JbmZvKTsKKyAgICAgICAgfQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4
dHVyZSgqdGV4dHVyZS5nZXQoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggMDQ5NTdkYWI5N2I4OTRhNmVkN2Q1ZWFiMjdiYzM1Yjc1
NmI5YTJkOC4uZDc5MDA1ODBiZjM3OWZhOGJlNTY3MWMwZjVmZTE4YWQwMTdmM2ZiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0z
NSwyMSArMzUsMjkgQEAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIK
ICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKIAogdHlwZWRlZiBz
dHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTdHJlYW1W
b2x1bWUgR3N0U3RyZWFtVm9sdW1lOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZpZGVvSW5mbyBHc3RW
aWRlb0luZm87CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0IEdzdEdMQ29udGV4dDsKIHR5
cGVkZWYgc3RydWN0IF9Hc3RHTERpc3BsYXkgR3N0R0xEaXNwbGF5OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEJpdG1hcFRleHR1cmVHTDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICwgcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyCisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgLCBw
dWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyCiAjZW5kaWYKIHsK
IApAQCAtMTA1LDYgKzExMywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSo+KHRoaXMpOyB9CisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UoTWVkaWFQbGF5ZXIqKTsKICAgICB2aXJ0dWFsIEdzdEVsZW1lbnQqIGNyZWF0ZVZpZGVv
U2luaygpOwpAQCAtMTU1LDE4ICsxNjgsMjkgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0
U2FtcGxlPiBtX3NhbXBsZTsKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIFJ1bkxvb3A6OlRp
bWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U+IG1fZHJhd1RpbWVyOwotICAgIENv
bmRpdGlvbiBtX2RyYXdDb25kaXRpb247Ci0gICAgTG9jayBtX2RyYXdNdXRleDsKICNlbmRpZgog
ICAgIG11dGFibGUgRmxvYXRTaXplIG1fdmlkZW9TaXplOwogICAgIGJvb2wgbV91c2luZ0ZhbGxi
YWNrVmlkZW9TaW5rOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHVwZGF0ZVRleHR1
cmUoVGV4dHVyZU1hcHBlciopOworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
KEJpdG1hcFRleHR1cmVHTCYsIEdzdFZpZGVvSW5mbyYpOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJF
QU1FUl9HTCkKICAgICBHUmVmUHRyPEdzdEdMQ29udGV4dD4gbV9nbENvbnRleHQ7CiAgICAgR1Jl
ZlB0cjxHc3RHTERpc3BsYXk+IG1fZ2xEaXNwbGF5OwogI2VuZGlmCisKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVhbCBSZWZQdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Bs
YXRmb3JtTGF5ZXJQcm94eS5jb3B5UmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZl
cnNJZk5lZWRlZCgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHVwZGF0ZU9uQ29tcG9zaXRvclRo
cmVhZCgpOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3Bs
YXRmb3JtTGF5ZXJQcm94eTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkgfHwgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gbV9jb250ZXh0M0Q7CisgICAgQ29uZGl0aW9uIG1fZHJhd0NvbmRpdGlvbjsKKyAgICBM
b2NrIG1fZHJhd011dGV4OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYTVmMDhjYmUzZmMxZTA5YjU5NTA4
NGE3Nzc0YmQ1NmQyNDI4MDkzMC4uOTUxMTM4ZmYyMDgwZjBmM2NlOThkNjA3ZjliZTU2YTNkNDIw
MjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmNwcApAQCAtNjMsNiArNjMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgbV9jb21wb3NpdG9yID0gY29tcG9zaXRvcjsKICAg
ICBtX3RhcmdldExheWVyID0gdGFyZ2V0TGF5ZXI7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgp
CkBAIC0xNTIsNiArMTUzLDMwIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6c3dhcEJ1ZmZlcigpCiAgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6bW92ZShw
cmV2QnVmZmVyKSk7CiB9CiAKK2Jvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYg
dXBkYXRlRnVuY3Rpb24pCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBp
ZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbiA9IFdURjo6bW92ZSh1cGRh
dGVGdW5jdGlvbik7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpCit7CisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IHVwZGF0ZUZ1bmN0aW9uOworICAgIHsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWRV
cGRhdGVGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdXBkYXRlRnVuY3Rp
b24gPSBXVEY6Om1vdmUobV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pOworICAgIH0K
KworICAgIHVwZGF0ZUZ1bmN0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IDdjZmYxY2M0ZmFkMmQ0
YzNlMjQyODliNDFmZGMzNWQwNGQ4MDkxZWIuLjdiYjhmNjczYmI4Mzk4YWFjZjFhYzAwZWI3Nzc5
NjMwZmVhMjQ3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN3YXBCdWZmZXIo
KTsKIAorICAgIGJvb2wgc2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlVW51
c2VkQnVmZmVycygpOwogICAgIHZvaWQgcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCk7
CkBAIC05Myw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsgMCB9OwogI2VuZGlmCisKKyAgICB2b2lk
IGNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PiBtX2NvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lcjsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9jb21w
b3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267006</attachid>
            <date>2015-12-09 08:07:54 -0800</date>
            <delta_ts>2015-12-09 08:12:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143301-20151209170723.patch</filename>
            <type>text/plain</type>
            <size>19052</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdiODEwMmZkNWE2OGU5
MzdkMDNkZWQ2NWYyZDM4YTRhOTA2NzM5My4uMDhmYTliMTcwZmJlZTI2ZDUxYzJlNjY0NWJmYzIw
YzNjYWNmMThlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA0LTAxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIFN1cHBvcnQgSFRNTDUgVmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBIVE1MNSBWaWRlbyBzdXBw
b3J0cyBpbiBUaHJlYWRlZCBDb21wb3NpdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6Cisg
ICAgICAgIEFkZGVkIHRvIHN1cHBvcnQgR1N0cmVhbWVyIEdMIGJ5IGVuc3VyaW5nIHVubWFwcGlu
ZyBvZiB0aGUgc3dhcHBlZAorICAgICAgICBHc3RWaWRlb0ZyYW1lIHBlcmZvcm1lZCBhdCBHU3Ry
ZWFtZXIgR0wncyBnbCB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgTW9kaWZpZWQgdG8gdXBs
b2FkIGRlY29kZWQgZnJhbWUgdG8gdGhlIGdpdmVuIHRleHR1cmUgaW5zdGVhZCBvZgorICAgICAg
ICBjcmVhdGluZyBhIHRleHR1cmUgaXRzZWxmIGJlY2F1c2Ugd2Ugc2hvdWxkIHVzZSBhIHRleHR1
cmUgZnJvbSB0aGUKKyAgICAgICAgcHJveHkgd2hlbiB3ZSBhcmUgdXNpbmcgdGhlIHRocmVhZGVk
IGNvbXBvc2l0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIEltcGxlbWVudHMgdHdv
IHdheXMgdG8gc2VuZCBhIHRleHR1cmUgZnJvbSBHU3RyZWFtZXIgdG8gdGhlIGNvbXBvc2l0b3Iu
CisgICAgICAgIDEuIElmIHdlIGFyZSBub3QgdXNpbmcgR1N0cmVhbWVyIEdMLCB3ZSBhcmUgZ29p
bmcgdG8gYWNxdWlyZSBhIGZyZWUgdGV4dHVyZQorICAgICAgICBmcm9tIGEgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eSBhbmQgdXBsb2FkIHRoZSBkZWNvZGVkIGZyYW1lIHRvIHRoZQor
ICAgICAgICB0ZXh0dXJlLiBUaGlzIHNob3VsZCBiZSBkb25lIGF0IHRoZSBjb21wb3NpdGluZyB0
aHJlYWQgYmVjYXVzZSB3ZQorICAgICAgICBkb24ndCBoYXZlIGEgR3N0J3MgR0wgdGhyZWFkLgor
ICAgICAgICAyLiBJZiB3ZSBhcmUgdXNpbmcgR1N0cmVhbWVyIEdMLCB3ZSBtYXAgYSB0ZXh0dXJl
IGZvciB0aGUgZ2l2ZW4gZnJhbWUKKyAgICAgICAgYW5kIHBhc3NlcyBpdCB0byB0aGUgY29tcG9z
aXRpbmcgdGhyZWFkLiBUaGUgbWFwcGVkIGZyYW1lIHdpbGwgYmUKKyAgICAgICAgZnJlZWQgaWYg
aXQgaXMgc3dhcHBlZCBvdXQgb3IgdGhlIGxheWVyIGlzIHJlbW92ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgTW9kaWZpZWQgdG8gYXF1aXJlIGEgbmV3IHRleHR1cmUgaXRzZWxmLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuY3BwOgorICAgICAgICBBZGRzIGEgd2F5IHRvIHBhc3MgYSBmdW5jdGlvbiB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIHRvIGFsbG9jYXRlIC8KKyAgICAgICAgdXBsb2FkIHRl
eHR1cmVzIGF0IHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCisKKwogMjAxNS0xMi0wOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBNYWluVGhyZWFk
U2hhcmVkVGltZXJHdGsgaW1wbGVtZW50YXRpb24gR0xpYi1zcGVjaWZpYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDU4YWZm
ZWIyYmRmZDIyNmU1OWIwYWY2YzUxZDBmMWJlMTQ3ZmExZDEuLjgyMjJhNzYxZWQ4MzZjODgyMDk3
M2I3YThhZmJkODJmY2JjODU4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTU1LDYgKzU1LDkgQEAKICNpbmNsdWRlICJC
aXRtYXBUZXh0dXJlUG9vbC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2VuZGlm
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFN
RVJfR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCkBAIC0xMDIsNiArMTA1LDY3IEBAIHN0YXRp
YyBpbnQgZ3JlYXRlc3RDb21tb25EaXZpc29yKGludCBhLCBpbnQgYikKICAgICByZXR1cm4gQUJT
KGEpOwogfQogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0Uo
R1NUUkVBTUVSX0dMKQorY2xhc3MgR3N0VmlkZW9GcmFtZUhvbGRlciA6IHB1YmxpYyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBs
ZSkKKyAgICB7CisgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgICAgIGdzdF92
aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKHNhbXBsZSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX3NpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0lu
Zm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAgICAgICBtX2ZsYWdz
ID0gR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDA7CisKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlKTsKKyAgICAgICAgbV92aWRlb0ZyYW1lID0gbmV3IEdzdFZp
ZGVvRnJhbWUoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFnc3RfdmlkZW9fZnJhbWVfbWFwKG1f
dmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4o
R1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKSkgeworICAgICAgICAgICAgZGVsZXRlIG1fdmlk
ZW9GcmFtZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGV4
dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50Kj4obV92aWRlb0ZyYW1lLT5kYXRhWzBd
KTsKKyAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Hc3RW
aWRlb0ZyYW1lSG9sZGVyKCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9pc1ZhbGlk
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBHc3RNYXBJbmZvKiBpbmZvID0gJm1f
dmlkZW9GcmFtZS0+bWFwWzBdOworICAgICAgICBHc3RHTEJhc2VCdWZmZXIqIG1lbSA9IChHc3RH
TEJhc2VCdWZmZXIqKWluZm8tPm1lbW9yeTsKKyAgICAgICAgR3N0R0xXaW5kb3cqIGdzdFdpbmRv
dyA9IGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cobWVtLT5jb250ZXh0KTsKKworICAgICAgICBn
c3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZV9hc3luYyhnc3RXaW5kb3csIChHc3RHTFdpbmRvd0NC
KXVubWFwVmlkZW9GcmFtZUNhbGxiYWNrLCBtX3ZpZGVvRnJhbWUsIChHRGVzdHJveU5vdGlmeSlm
cmVlVmlkZW9GcmFtZUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1bm1hcFZp
ZGVvRnJhbWVDYWxsYmFjayhHc3RWaWRlb0ZyYW1lKiB2aWRlb0ZyYW1lKQorICAgIHsKKyAgICAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKHZpZGVvRnJhbWUpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGZyZWVWaWRlb0ZyYW1lQ2FsbGJhY2soR3N0VmlkZW9GcmFtZSogdmlkZW9GcmFtZSkK
KyAgICB7CisgICAgICAgIGRlbGV0ZSB2aWRlb0ZyYW1lOworICAgIH0KKworICAgIGNvbnN0IElu
dFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBUZXh0dXJlTWFwcGVy
R0w6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIEdMdWludCB0
ZXh0dXJlSUQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJRDsgfQorICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQorCitwcml2YXRlOgorICAgIEdzdFZpZGVv
RnJhbWUqIG1fdmlkZW9GcmFtZTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFw
cGVyR0w6OkZsYWdzIG1fZmxhZ3M7CisgICAgR0x1aW50IG1fdGV4dHVyZUlEOworICAgIGJvb2wg
bV9pc1ZhbGlkIHsgZmFsc2UgfTsKK307CisjZW5kaWYKKwogTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciog
cGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9mcHNTaW5rKDApCkBAIC0x
MTMsNiArMTc3LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fdXNpbmdGYWxs
YmFja1ZpZGVvU2luayhmYWxzZSkKIHsKICAgICBnX211dGV4X2luaXQoJm1fc2FtcGxlTXV0ZXgp
OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBtX3BsYXRmb3Jt
TGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
KCkpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKQEAgLTM2MCwzNSArNDI3LDE5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWRDYWxsYmFjayhNZWRp
YVBsYXllclByaXZhdGVHU3RyCiAgICAgcGxheWVyLT5tX25vdGlmaWVyLm5vdGlmeShNYWluVGhy
ZWFkTm90aWZpY2F0aW9uOjpNdXRlQ2hhbmdlZCwgW3BsYXllcl0geyBwbGF5ZXItPm5vdGlmeVBs
YXllck9mTXV0ZSgpOyB9KTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHc3RWaWRl
b0luZm8mIHZpZGVvSW5mbykKIHsKLSAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2so
bV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBs
ZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSk7Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVv
X2luZm9faW5pdCgmdmlkZW9JbmZvKTsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmdmlkZW9JbmZvLCBjYXBzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1Rf
VklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBH
U1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBw
b3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZl
ciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CiAKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigxLCAxLCAwKQogICAgIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSogbWV0
YTsKICAgICBpZiAoKG1ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19nbF90ZXh0dXJlX3VwbG9h
ZF9tZXRhKGJ1ZmZlcikpKSB7CiAgICAgICAgIGlmIChtZXRhLT5uX3RleHR1cmVzID09IDEpIHsg
Ly8gQlJHeCAmIEJHUkEgZm9ybWF0cyB1c2Ugb25seSBvbmUgdGV4dHVyZS4KLSAgICAgICAgICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgICAgICBndWludCBpZHNbNF0g
PSB7IHRleHR1cmVHTC0+aWQoKSwgMCwgMCwgMCB9OworICAgICAgICAgICAgZ3VpbnQgaWRzWzRd
ID0geyB0ZXh0dXJlLmlkKCksIDAsIDAsIDAgfTsKIAogICAgICAgICAgICAgaWYgKGdzdF92aWRl
b19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhX3VwbG9hZChtZXRhLCBpZHMpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgpAQCAtMzk4LDE0ICs0NDksNzggQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1
cmUKIAogICAgIEdzdFZpZGVvRnJhbWUgdmlkZW9GcmFtZTsKICAgICBpZiAoIWdzdF92aWRlb19m
cmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgR1NUX01BUF9SRUFEKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybjsKIAogICAgIGludCBzdHJp
ZGUgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFKCZ2aWRlb0ZyYW1lLCAwKTsKICAgICBj
b25zdCB2b2lkKiBzcmNEYXRhID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEoJnZpZGVvRnJh
bWUsIDApOwotICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHNyY0RhdGEsIFdlYkNvcmU6Oklu
dFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHNpemUpLCBXZWJDb3JlOjpJbnRQb2ludCgw
LCAwKSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbElt
YWdlRGF0YSk7CisgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJ
bnRSZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9f
SU5GT19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRl
LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCit7CisjaWYgIVVTRShH
U1RSRUFNRVJfR0wpCisgICAgY2xhc3MgQ29uZGl0aW9uTm90aWZpZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgQ29uZGl0aW9uTm90aWZpZXIoTG9jayYgbG9jaywgQ29uZGl0aW9uJiBjb25kaXRp
b24pCisgICAgICAgICAgICA6IG1fbG9ja2VyKGxvY2spLCBtX2NvbmRpdGlvbihjb25kaXRpb24p
CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+Q29uZGl0aW9uTm90aWZpZXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQor
ICAgIHByaXZhdGU6CisgICAgICAgIExvY2tIb2xkZXIgbV9sb2NrZXI7CisgICAgICAgIENvbmRp
dGlvbiYgbV9jb25kaXRpb247CisgICAgfTsKKyAgICBDb25kaXRpb25Ob3RpZmllciBub3RpZmll
cihtX2RyYXdNdXRleCwgbV9kcmF3Q29uZGl0aW9uKTsKKyNlbmRpZgorCisgICAgV1RGOjpHTXV0
ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIExvY2tIb2xkZXIg
aG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworCisgICAgaWYgKCFtX3BsYXRm
b3JtTGF5ZXJQcm94eS0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJh
bWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxl
LmdldCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWZyYW1lSG9sZGVyLT5pc1ZhbGlkKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpLCBmcmFtZUhvbGRl
ci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSk7CisgICAgbGF5ZXJCdWZmZXItPnNldFVu
bWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGOjptb3ZlKGZyYW1lSG9sZGVyKSk7CisgICAgbV9w
bGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURjo6bW92ZShsYXllckJ1ZmZlcikp
OworICAgIHJldHVybjsKKyNlbHNlCisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0
X2NhcHMobV9zYW1wbGUuZ2V0KCkpOworICAgIGlmIChVTkxJS0VMWSghY2FwcykpCisgICAgICAg
IHJldHVybjsKIAotICAgIHJldHVybiB0ZXh0dXJlOworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0lu
Zm87CisgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lE
VEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGJ1ZmZl
ciA9IG1fcGxhdGZvcm1MYXllclByb3h5LT5nZXRBdmFpbGFibGVCdWZmZXIoc2l6ZSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRPTlRfQ0FSRSk7CisgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7Cisg
ICAgICAgIGlmIChVTkxJS0VMWSghbV9jb250ZXh0M0QpKQorICAgICAgICAgICAgbV9jb250ZXh0
M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCksIG51bGxwdHIsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRl
eHQpOworCisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gYWRvcHRSZWYo
bmV3IEJpdG1hcFRleHR1cmVHTChtX2NvbnRleHQzRCkpOworICAgICAgICB0ZXh0dXJlLT5yZXNl
dChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0
dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKyAgICAgICAgYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4o
V1RGOjptb3ZlKHRleHR1cmUpKTsKKyAgICB9CisgICAgdXBkYXRlVGV4dHVyZShidWZmZXItPnRl
eHR1cmVHTCgpLCB2aWRlb0luZm8pOworICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4
dEJ1ZmZlcihXVEY6Om1vdmUoYnVmZmVyKSk7CisjZW5kaWYKIH0KICNlbmRpZgogCkBAIC00Mzgs
NiArNTUzLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dl
clJlcGFpbnQoR3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgICAgIG1fc2FtcGxlID0gc2FtcGxlOwog
ICAgIH0KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpZiBVU0Uo
R1NUUkVBTUVSX0dMKQorICAgIHB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCk7CisjZWxzZQorICAg
IHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fZHJhd011dGV4KTsKKyAgICAgICAgaWYgKCFt
X3BsYXRmb3JtTGF5ZXJQcm94eS0+c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoW3Ro
aXNdIHsgdGhpcy0+cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKTsgfSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fZHJhd0NvbmRpdGlvbi53YWl0KG1fZHJhd011dGV4KTsKKyAgICB9
CisjZW5kaWYKKyAgICByZXR1cm47CisjZWxzZQogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAg
ewogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQ0OSw2ICs1NzcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KEdzdFNh
bXBsZSogc2FtcGxlKQogI2Vsc2UKICAgICByZXBhaW50KCk7CiAjZW5kaWYKKyNlbmRpZgogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnJlcGFpbnRDYWxsYmFjayhN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXIsIEdzdFNhbXBsZSogc2FtcGxl
KQpAQCAtNDcxLDcgKzYwMCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybjsKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoY2xp
ZW50KCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNTAxLDggKzYzMywyNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV91c2luZ0Zh
bGxiYWNrVmlkZW9TaW5rKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSA9IHVwZGF0ZVRleHR1cmUodGV4dHVyZU1hcHBlcikpCi0gICAgICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZS5nZXQoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBv
cGFjaXR5KTsKKyAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmU7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11
dGV4KTsKKworICAgICAgICAgICAgaWYgKCFtX3NhbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1f
c2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghY2FwcykpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOwor
ICAgICAgICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEludFNpemUgc2l6ZSA9
IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZP
X0hFSUdIVCgmdmlkZW9JbmZvKSk7CisgICAgICAgICAgICB0ZXh0dXJlID0gdGV4dHVyZU1hcHBl
ci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEo
JnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVy
ZTo6Tm9GbGFnKTsKKyAgICAgICAgICAgIHVwZGF0ZVRleHR1cmUoc3RhdGljX2Nhc3Q8Qml0bWFw
VGV4dHVyZUdMJj4oKnRleHR1cmUpLCB2aWRlb0luZm8pOworICAgICAgICB9CisgICAgICAgIHRl
eHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9w
YWNpdHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCAwNDk1N2RhYjk3Yjg5NGE2ZWQ3
ZDVlYWIyN2JjMzViNzU2YjlhMmQ4Li42YzlmYjlhN2ZiN2E5OWE2MDM4YTYzOTk2MzIxNGYyNjU2
ZDk1NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmgKQEAgLTM1LDIxICszNSwyOSBAQAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIgogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbmRp
ZgogCiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwogdHlwZWRlZiBzdHJ1
Y3QgX0dzdFN0cmVhbVZvbHVtZSBHc3RTdHJlYW1Wb2x1bWU7Cit0eXBlZGVmIHN0cnVjdCBfR3N0
VmlkZW9JbmZvIEdzdFZpZGVvSW5mbzsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTENvbnRleHQgR3N0
R0xDb250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRGlzcGxheSBHc3RHTERpc3BsYXk7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRTaXplOwog
Y2xhc3MgSW50UmVjdDsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSA6
IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgLCBwdWJsaWMgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXIKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJF
QURFRCkKKyAgICAsIHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlk
ZXIKICNlbmRpZgogewogCkBAIC0xMDUsNiArMTEzLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpIG92ZXJyaWRlOwogI2VuZGlm
CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29u
c3RfY2FzdDxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKj4odGhpcyk7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwogICAgIHZpcnR1YWwgR3N0RWxlbWVu
dCogY3JlYXRlVmlkZW9TaW5rKCk7CkBAIC0xNTUsMTggKzE2OCwyOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgR1JlZlB0cjxHc3RTYW1wbGU+IG1fc2FtcGxlOwogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAg
ICAgUnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZT4gbV9kcmF3
VGltZXI7Ci0gICAgQ29uZGl0aW9uIG1fZHJhd0NvbmRpdGlvbjsKLSAgICBMb2NrIG1fZHJhd011
dGV4OwogI2VuZGlmCiAgICAgbXV0YWJsZSBGbG9hdFNpemUgbV92aWRlb1NpemU7CiAgICAgYm9v
bCBtX3VzaW5nRmFsbGJhY2tWaWRlb1Npbms7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gdXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKik7CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKKyAgICB2b2lk
IHVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiwgR3N0VmlkZW9JbmZvJik7CiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIEdSZWZQdHI8R3N0R0xDb250ZXh0PiBtX2dsQ29u
dGV4dDsKICAgICBHUmVmUHRyPEdzdEdMRGlzcGxheT4gbV9nbERpc3BsYXk7CiAjZW5kaWYKKwor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllclByb3h5LmNvcHlSZWYoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgcHVzaFRl
eHR1cmVUb0NvbXBvc2l0b3IoKTsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eT4gbV9wbGF0Zm9ybUxheWVyUHJveHk7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFN
RVJfR0wpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDNEOworICAgIENvbmRpdGlvbiBtX2RyYXdDb25k
aXRpb247CisgICAgTG9jayBtX2RyYXdNdXRleDsKKyNlbmRpZgogfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCmluZGV4IGE1ZjA4Y2Jl
M2ZjMWUwOWI1OTUwODRhNzc3NGJkNTZkMjQyODA5MzAuLjk1MTEzOGZmMjA4MGYwZjNjZTk4ZDYw
N2Y5YmU1NmEzZDQyMDIyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciog
Y28KICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIG1fY29tcG9zaXRvciA9IGNv
bXBvc2l0b3I7CiAgICAgbV90YXJnZXRMYXllciA9IHRhcmdldExheWVyOworICAgIG1fY29tcG9z
aXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0
ZVRpbWVyRmlyZWQpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmludmFsaWRhdGUoKQpAQCAtMTUyLDYgKzE1MywzMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQogICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVu
ZChXVEY6Om1vdmUocHJldkJ1ZmZlcikpOwogfQogCitib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk6OnNjaGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24gPSBX
VEY6Om1vdmUodXBkYXRlRnVuY3Rpb24pOworICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRp
bWVyLT5zdGFydE9uZVNob3QoMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmly
ZWQoKQoreworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsKKyAgICB7
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICghbV9jb21w
b3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHVwZGF0ZUZ1bmN0aW9uID0gV1RGOjptb3ZlKG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0
aW9uKTsKKyAgICB9CisKKyAgICB1cGRhdGVGdW5jdGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaAppbmRleCA3
Y2ZmMWNjNGZhZDJkNGMzZTI0Mjg5YjQxZmRjMzVkMDRkODA5MWViLi43YmI4ZjY3M2JiODM5OGFh
Y2YxYWMwMGViNzc3OTYzMGZlYTI0NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzd2FwQnVmZmVyKCk7CiAKKyAgICBib29sIHNjaGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhy
ZWFkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVk
dWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKICAgICB2b2lkIHJlbGVhc2VVbnVzZWRCdWZmZXJz
VGltZXJGaXJlZCgpOwpAQCAtOTMsNiArOTUsMTAgQEAgcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVH
CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2NvbXBvc2l0b3JUaHJlYWRJRCB7IDAgfTsKICNlbmRp
ZgorCisgICAgdm9pZCBjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5Pj4gbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXI7CisgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="292037"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267009</attachid>
            <date>2015-12-09 08:36:08 -0800</date>
            <delta_ts>2015-12-09 08:38:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143301-20151209173537.patch</filename>
            <type>text/plain</type>
            <size>19039</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdiODEwMmZkNWE2OGU5
MzdkMDNkZWQ2NWYyZDM4YTRhOTA2NzM5My4uMDhmYTliMTcwZmJlZTI2ZDUxYzJlNjY0NWJmYzIw
YzNjYWNmMThlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA0LTAxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIFN1cHBvcnQgSFRNTDUgVmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBIVE1MNSBWaWRlbyBzdXBw
b3J0cyBpbiBUaHJlYWRlZCBDb21wb3NpdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6Cisg
ICAgICAgIEFkZGVkIHRvIHN1cHBvcnQgR1N0cmVhbWVyIEdMIGJ5IGVuc3VyaW5nIHVubWFwcGlu
ZyBvZiB0aGUgc3dhcHBlZAorICAgICAgICBHc3RWaWRlb0ZyYW1lIHBlcmZvcm1lZCBhdCBHU3Ry
ZWFtZXIgR0wncyBnbCB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgTW9kaWZpZWQgdG8gdXBs
b2FkIGRlY29kZWQgZnJhbWUgdG8gdGhlIGdpdmVuIHRleHR1cmUgaW5zdGVhZCBvZgorICAgICAg
ICBjcmVhdGluZyBhIHRleHR1cmUgaXRzZWxmIGJlY2F1c2Ugd2Ugc2hvdWxkIHVzZSBhIHRleHR1
cmUgZnJvbSB0aGUKKyAgICAgICAgcHJveHkgd2hlbiB3ZSBhcmUgdXNpbmcgdGhlIHRocmVhZGVk
IGNvbXBvc2l0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIEltcGxlbWVudHMgdHdv
IHdheXMgdG8gc2VuZCBhIHRleHR1cmUgZnJvbSBHU3RyZWFtZXIgdG8gdGhlIGNvbXBvc2l0b3Iu
CisgICAgICAgIDEuIElmIHdlIGFyZSBub3QgdXNpbmcgR1N0cmVhbWVyIEdMLCB3ZSBhcmUgZ29p
bmcgdG8gYWNxdWlyZSBhIGZyZWUgdGV4dHVyZQorICAgICAgICBmcm9tIGEgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eSBhbmQgdXBsb2FkIHRoZSBkZWNvZGVkIGZyYW1lIHRvIHRoZQor
ICAgICAgICB0ZXh0dXJlLiBUaGlzIHNob3VsZCBiZSBkb25lIGF0IHRoZSBjb21wb3NpdGluZyB0
aHJlYWQgYmVjYXVzZSB3ZQorICAgICAgICBkb24ndCBoYXZlIGEgR3N0J3MgR0wgdGhyZWFkLgor
ICAgICAgICAyLiBJZiB3ZSBhcmUgdXNpbmcgR1N0cmVhbWVyIEdMLCB3ZSBtYXAgYSB0ZXh0dXJl
IGZvciB0aGUgZ2l2ZW4gZnJhbWUKKyAgICAgICAgYW5kIHBhc3NlcyBpdCB0byB0aGUgY29tcG9z
aXRpbmcgdGhyZWFkLiBUaGUgbWFwcGVkIGZyYW1lIHdpbGwgYmUKKyAgICAgICAgZnJlZWQgaWYg
aXQgaXMgc3dhcHBlZCBvdXQgb3IgdGhlIGxheWVyIGlzIHJlbW92ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgTW9kaWZpZWQgdG8gYXF1aXJlIGEgbmV3IHRleHR1cmUgaXRzZWxmLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuY3BwOgorICAgICAgICBBZGRzIGEgd2F5IHRvIHBhc3MgYSBmdW5jdGlvbiB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIHRvIGFsbG9jYXRlIC8KKyAgICAgICAgdXBsb2FkIHRl
eHR1cmVzIGF0IHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCisKKwogMjAxNS0xMi0wOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBNYWluVGhyZWFk
U2hhcmVkVGltZXJHdGsgaW1wbGVtZW50YXRpb24gR0xpYi1zcGVjaWZpYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDU4YWZm
ZWIyYmRmZDIyNmU1OWIwYWY2YzUxZDBmMWJlMTQ3ZmExZDEuLmFiMmZkY2MxMjkxYTllZmZkNmEy
ZmNiNTJiZDNjZGEyOGY0MDNlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTU1LDYgKzU1LDkgQEAKICNpbmNsdWRlICJC
aXRtYXBUZXh0dXJlUG9vbC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2VuZGlm
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFN
RVJfR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCkBAIC0xMDIsNiArMTA1LDY3IEBAIHN0YXRp
YyBpbnQgZ3JlYXRlc3RDb21tb25EaXZpc29yKGludCBhLCBpbnQgYikKICAgICByZXR1cm4gQUJT
KGEpOwogfQogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0Uo
R1NUUkVBTUVSX0dMKQorY2xhc3MgR3N0VmlkZW9GcmFtZUhvbGRlciA6IHB1YmxpYyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBs
ZSkKKyAgICB7CisgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgICAgIGdzdF92
aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKHNhbXBsZSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX3NpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0lu
Zm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAgICAgICBtX2ZsYWdz
ID0gR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDA7CisKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlKTsKKyAgICAgICAgbV92aWRlb0ZyYW1lID0gbmV3IEdzdFZp
ZGVvRnJhbWUoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFnc3RfdmlkZW9fZnJhbWVfbWFwKG1f
dmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4o
R1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKSkgeworICAgICAgICAgICAgZGVsZXRlIG1fdmlk
ZW9GcmFtZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGV4
dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50Kj4obV92aWRlb0ZyYW1lLT5kYXRhWzBd
KTsKKyAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Hc3RW
aWRlb0ZyYW1lSG9sZGVyKCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9pc1ZhbGlk
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBHc3RNYXBJbmZvKiBpbmZvID0gJm1f
dmlkZW9GcmFtZS0+bWFwWzBdOworICAgICAgICBHc3RHTEJhc2VCdWZmZXIqIG1lbSA9IChHc3RH
TEJhc2VCdWZmZXIqKWluZm8tPm1lbW9yeTsKKyAgICAgICAgR3N0R0xXaW5kb3cqIGdzdFdpbmRv
dyA9IGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cobWVtLT5jb250ZXh0KTsKKworICAgICAgICBn
c3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZV9hc3luYyhnc3RXaW5kb3csIChHc3RHTFdpbmRvd0NC
KXVubWFwVmlkZW9GcmFtZUNhbGxiYWNrLCBtX3ZpZGVvRnJhbWUsIChHRGVzdHJveU5vdGlmeSlm
cmVlVmlkZW9GcmFtZUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1bm1hcFZp
ZGVvRnJhbWVDYWxsYmFjayhHc3RWaWRlb0ZyYW1lKiB2aWRlb0ZyYW1lKQorICAgIHsKKyAgICAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKHZpZGVvRnJhbWUpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGZyZWVWaWRlb0ZyYW1lQ2FsbGJhY2soR3N0VmlkZW9GcmFtZSogdmlkZW9GcmFtZSkK
KyAgICB7CisgICAgICAgIGRlbGV0ZSB2aWRlb0ZyYW1lOworICAgIH0KKworICAgIGNvbnN0IElu
dFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBUZXh0dXJlTWFwcGVy
R0w6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIEdMdWludCB0
ZXh0dXJlSUQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJRDsgfQorICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQorCitwcml2YXRlOgorICAgIEdzdFZpZGVv
RnJhbWUqIG1fdmlkZW9GcmFtZTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFw
cGVyR0w6OkZsYWdzIG1fZmxhZ3M7CisgICAgR0x1aW50IG1fdGV4dHVyZUlEOworICAgIGJvb2wg
bV9pc1ZhbGlkIHsgZmFsc2UgfTsKK307CisjZW5kaWYKKwogTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciog
cGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9mcHNTaW5rKDApCkBAIC0x
MTMsNiArMTc3LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fdXNpbmdGYWxs
YmFja1ZpZGVvU2luayhmYWxzZSkKIHsKICAgICBnX211dGV4X2luaXQoJm1fc2FtcGxlTXV0ZXgp
OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBtX3BsYXRmb3Jt
TGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
KCkpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKQEAgLTM2MCwzNSArNDI3LDE5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWRDYWxsYmFjayhNZWRp
YVBsYXllclByaXZhdGVHU3RyCiAgICAgcGxheWVyLT5tX25vdGlmaWVyLm5vdGlmeShNYWluVGhy
ZWFkTm90aWZpY2F0aW9uOjpNdXRlQ2hhbmdlZCwgW3BsYXllcl0geyBwbGF5ZXItPm5vdGlmeVBs
YXllck9mTXV0ZSgpOyB9KTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHc3RWaWRl
b0luZm8mIHZpZGVvSW5mbykKIHsKLSAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2so
bV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBs
ZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSk7Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVv
X2luZm9faW5pdCgmdmlkZW9JbmZvKTsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmdmlkZW9JbmZvLCBjYXBzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1Rf
VklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBH
U1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBw
b3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZl
ciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CiAKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigxLCAxLCAwKQogICAgIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSogbWV0
YTsKICAgICBpZiAoKG1ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19nbF90ZXh0dXJlX3VwbG9h
ZF9tZXRhKGJ1ZmZlcikpKSB7CiAgICAgICAgIGlmIChtZXRhLT5uX3RleHR1cmVzID09IDEpIHsg
Ly8gQlJHeCAmIEJHUkEgZm9ybWF0cyB1c2Ugb25seSBvbmUgdGV4dHVyZS4KLSAgICAgICAgICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgICAgICBndWludCBpZHNbNF0g
PSB7IHRleHR1cmVHTC0+aWQoKSwgMCwgMCwgMCB9OworICAgICAgICAgICAgZ3VpbnQgaWRzWzRd
ID0geyB0ZXh0dXJlLmlkKCksIDAsIDAsIDAgfTsKIAogICAgICAgICAgICAgaWYgKGdzdF92aWRl
b19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhX3VwbG9hZChtZXRhLCBpZHMpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgpAQCAtMzk4LDE0ICs0NDksNzcgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1
cmUKIAogICAgIEdzdFZpZGVvRnJhbWUgdmlkZW9GcmFtZTsKICAgICBpZiAoIWdzdF92aWRlb19m
cmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgR1NUX01BUF9SRUFEKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybjsKIAogICAgIGludCBzdHJp
ZGUgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFKCZ2aWRlb0ZyYW1lLCAwKTsKICAgICBj
b25zdCB2b2lkKiBzcmNEYXRhID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEoJnZpZGVvRnJh
bWUsIDApOwotICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHNyY0RhdGEsIFdlYkNvcmU6Oklu
dFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHNpemUpLCBXZWJDb3JlOjpJbnRQb2ludCgw
LCAwKSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbElt
YWdlRGF0YSk7CisgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJ
bnRSZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9f
SU5GT19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRl
LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCit7CisjaWYgIVVTRShH
U1RSRUFNRVJfR0wpCisgICAgY2xhc3MgQ29uZGl0aW9uTm90aWZpZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgQ29uZGl0aW9uTm90aWZpZXIoTG9jayYgbG9jaywgQ29uZGl0aW9uJiBjb25kaXRp
b24pCisgICAgICAgICAgICA6IG1fbG9ja2VyKGxvY2spLCBtX2NvbmRpdGlvbihjb25kaXRpb24p
CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+Q29uZGl0aW9uTm90aWZpZXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQor
ICAgIHByaXZhdGU6CisgICAgICAgIExvY2tIb2xkZXIgbV9sb2NrZXI7CisgICAgICAgIENvbmRp
dGlvbiYgbV9jb25kaXRpb247CisgICAgfTsKKyAgICBDb25kaXRpb25Ob3RpZmllciBub3RpZmll
cihtX2RyYXdNdXRleCwgbV9kcmF3Q29uZGl0aW9uKTsKKyNlbmRpZgorCisgICAgV1RGOjpHTXV0
ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIExvY2tIb2xkZXIg
aG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworCisgICAgaWYgKCFtX3BsYXRm
b3JtTGF5ZXJQcm94eS0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJh
bWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxl
LmdldCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWZyYW1lSG9sZGVyLT5pc1ZhbGlkKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpLCBmcmFtZUhvbGRl
ci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSk7CisgICAgbGF5ZXJCdWZmZXItPnNldFVu
bWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGOjptb3ZlKGZyYW1lSG9sZGVyKSk7CisgICAgbV9w
bGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURjo6bW92ZShsYXllckJ1ZmZlcikp
OworI2Vsc2UKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBs
ZS5nZXQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXBzKSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmV0dXJuIHRleHR1cmU7CisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBnc3Rf
dmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZv
KSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYnVmZmVyID0gbV9wbGF0Zm9y
bUxheWVyUHJveHktPmdldEF2YWlsYWJsZUJ1ZmZlcihzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
RE9OVF9DQVJFKTsKKyAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFtX2NvbnRleHQzRCkpCisgICAgICAgICAgICBtX2NvbnRleHQzRCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSwgbnVsbHB0
ciwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCk7CisKKyAgICAg
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhZG9wdFJlZihuZXcgQml0bWFwVGV4
dHVyZUdMKG1fY29udGV4dDNEKSk7CisgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIEdTVF9W
SURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEY6Om1vdmUodGV4
dHVyZSkpOworICAgIH0KKyAgICB1cGRhdGVUZXh0dXJlKGJ1ZmZlci0+dGV4dHVyZUdMKCksIHZp
ZGVvSW5mbyk7CisgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURjo6
bW92ZShidWZmZXIpKTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTQzOCw2ICs1NTIsMTkgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChHc3RT
YW1wbGUqIHNhbXBsZSkKICAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7CiAgICAgfQogCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2lmIFVTRShHU1RSRUFNRVJfR0wp
CisgICAgcHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKTsKKyNlbHNlCisgICAgeworICAgICAgICBM
b2NrSG9sZGVyIGxvY2sobV9kcmF3TXV0ZXgpOworICAgICAgICBpZiAoIW1fcGxhdGZvcm1MYXll
clByb3h5LT5zY2hlZHVsZVVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZChbdGhpc10geyB0aGlzLT5w
dXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpOyB9KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9kcmF3Q29uZGl0aW9uLndhaXQobV9kcmF3TXV0ZXgpOworICAgIH0KKyNlbmRpZgorICAg
IHJldHVybjsKKyNlbHNlCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtNDQ5LDYgKzU3Niw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQoR3N0U2FtcGxlKiBzYW1wbGUp
CiAjZWxzZQogICAgIHJlcGFpbnQoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWludENhbGxiYWNrKE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllciwgR3N0U2FtcGxlKiBzYW1wbGUpCkBAIC00NzEsNyAr
NTk5LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCkBAIC01MDEsOCArNjMyLDI3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3VzaW5nRmFsbGJhY2tWaWRlb1Np
bmspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdXBkYXRl
VGV4dHVyZSh0ZXh0dXJlTWFwcGVyKSkKLSAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdU
ZXh0dXJlKCp0ZXh0dXJlLmdldCgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworICAg
ICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZTsKKyAgICAgICAgeworICAgICAgICAg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworCisgICAg
ICAgICAgICBpZiAoIW1fc2FtcGxlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkp
OworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFjYXBzKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgICAgICAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1Rf
VklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRl
b0luZm8pKTsKKyAgICAgICAgICAgIHRleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4
dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/
IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwor
ICAgICAgICAgICAgdXBkYXRlVGV4dHVyZShzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPigq
dGV4dHVyZSksIHZpZGVvSW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgdGV4dHVyZU1hcHBlci0+
ZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDA0OTU3ZGFiOTdiODk0YTZlZDdkNWVhYjI3YmMzNWI3
NTZiOWEyZDguLjZjOWZiOWE3ZmI3YTk5YTYwMzhhNjM5OTYzMjE0ZjI2NTZkOTU2NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAt
MzUsMjEgKzM1LDI5IEBACiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgi
CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2VuZGlmCiAKIHR5cGVkZWYg
c3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U3RyZWFt
Vm9sdW1lIEdzdFN0cmVhbVZvbHVtZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRlb0luZm8gR3N0
VmlkZW9JbmZvOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29udGV4dCBHc3RHTENvbnRleHQ7CiB0
eXBlZGVmIHN0cnVjdCBfR3N0R0xEaXNwbGF5IEdzdEdMRGlzcGxheTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0
OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAsIHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllcgorI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwg
cHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcgogI2VuZGlmCiB7
CiAKQEAgLTEwNSw2ICsxMTMsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih0aGlzKTsgfQorICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCBHc3RFbGVtZW50KiBjcmVhdGVWaWRl
b1NpbmsoKTsKQEAgLTE1NSwxOCArMTY4LDI5IEBAIHByb3RlY3RlZDoKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBSdW5Mb29wOjpU
aW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlPiBtX2RyYXdUaW1lcjsKLSAgICBD
b25kaXRpb24gbV9kcmF3Q29uZGl0aW9uOwotICAgIExvY2sgbV9kcmF3TXV0ZXg7CiAjZW5kaWYK
ICAgICBtdXRhYmxlIEZsb2F0U2l6ZSBtX3ZpZGVvU2l6ZTsKICAgICBib29sIG1fdXNpbmdGYWxs
YmFja1ZpZGVvU2luazsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB1cGRhdGVUZXh0
dXJlKFRleHR1cmVNYXBwZXIqKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQorICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZShCaXRtYXBUZXh0dXJlR0wmLCBHc3RWaWRlb0luZm8mKTsKICNlbmRpZgogI2lmIFVTRShHU1RS
RUFNRVJfR0wpCiAgICAgR1JlZlB0cjxHc3RHTENvbnRleHQ+IG1fZ2xDb250ZXh0OwogICAgIEdS
ZWZQdHI8R3N0R0xEaXNwbGF5PiBtX2dsRGlzcGxheTsKICNlbmRpZgorCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
bGF0Zm9ybUxheWVyUHJveHkuY29weVJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZm
ZXJzSWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBwdXNoVGV4dHVyZVRvQ29tcG9z
aXRvcigpOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3Bs
YXRmb3JtTGF5ZXJQcm94eTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkgfHwgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gbV9jb250ZXh0M0Q7CisgICAgQ29uZGl0aW9uIG1fZHJhd0NvbmRpdGlvbjsKKyAgICBM
b2NrIG1fZHJhd011dGV4OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYTVmMDhjYmUzZmMxZTA5YjU5NTA4
NGE3Nzc0YmQ1NmQyNDI4MDkzMC4uOTUxMTM4ZmYyMDgwZjBmM2NlOThkNjA3ZjliZTU2YTNkNDIw
MjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmNwcApAQCAtNjMsNiArNjMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgbV9jb21wb3NpdG9yID0gY29tcG9zaXRvcjsKICAg
ICBtX3RhcmdldExheWVyID0gdGFyZ2V0TGF5ZXI7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgp
CkBAIC0xNTIsNiArMTUzLDMwIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6c3dhcEJ1ZmZlcigpCiAgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6bW92ZShw
cmV2QnVmZmVyKSk7CiB9CiAKK2Jvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYg
dXBkYXRlRnVuY3Rpb24pCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBp
ZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbiA9IFdURjo6bW92ZSh1cGRh
dGVGdW5jdGlvbik7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpCit7CisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IHVwZGF0ZUZ1bmN0aW9uOworICAgIHsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWRV
cGRhdGVGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdXBkYXRlRnVuY3Rp
b24gPSBXVEY6Om1vdmUobV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pOworICAgIH0K
KworICAgIHVwZGF0ZUZ1bmN0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IDdjZmYxY2M0ZmFkMmQ0
YzNlMjQyODliNDFmZGMzNWQwNGQ4MDkxZWIuLjdiYjhmNjczYmI4Mzk4YWFjZjFhYzAwZWI3Nzc5
NjMwZmVhMjQ3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN3YXBCdWZmZXIo
KTsKIAorICAgIGJvb2wgc2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlVW51
c2VkQnVmZmVycygpOwogICAgIHZvaWQgcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCk7
CkBAIC05Myw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsgMCB9OwogI2VuZGlmCisKKyAgICB2b2lk
IGNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PiBtX2NvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lcjsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9jb21w
b3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>
<flag name="commit-queue"
          id="292040"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267011</attachid>
            <date>2015-12-09 08:40:05 -0800</date>
            <delta_ts>2015-12-09 09:37:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143301-20151209173933.patch</filename>
            <type>text/plain</type>
            <size>19039</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdiODEwMmZkNWE2OGU5
MzdkMDNkZWQ2NWYyZDM4YTRhOTA2NzM5My4uNmZlOGRmNGM0MjA2NDVhY2U5YmVjZjBlYzQ3OGYx
YzI2ZWY1ZDE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA0LTAxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIFN1cHBvcnQgSFRNTDUgVmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IMW9YW4gRG9i
ZXLFoWVrLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBIVE1MNSBWaWRlbyBzdXBw
b3J0cyBpbiBUaHJlYWRlZCBDb21wb3NpdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6Cisg
ICAgICAgIEFkZGVkIHRvIHN1cHBvcnQgR1N0cmVhbWVyIEdMIGJ5IGVuc3VyaW5nIHVubWFwcGlu
ZyBvZiB0aGUgc3dhcHBlZAorICAgICAgICBHc3RWaWRlb0ZyYW1lIHBlcmZvcm1lZCBhdCBHU3Ry
ZWFtZXIgR0wncyBnbCB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgTW9kaWZpZWQgdG8gdXBs
b2FkIGRlY29kZWQgZnJhbWUgdG8gdGhlIGdpdmVuIHRleHR1cmUgaW5zdGVhZCBvZgorICAgICAg
ICBjcmVhdGluZyBhIHRleHR1cmUgaXRzZWxmIGJlY2F1c2Ugd2Ugc2hvdWxkIHVzZSBhIHRleHR1
cmUgZnJvbSB0aGUKKyAgICAgICAgcHJveHkgd2hlbiB3ZSBhcmUgdXNpbmcgdGhlIHRocmVhZGVk
IGNvbXBvc2l0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIEltcGxlbWVudHMgdHdv
IHdheXMgdG8gc2VuZCBhIHRleHR1cmUgZnJvbSBHU3RyZWFtZXIgdG8gdGhlIGNvbXBvc2l0b3Iu
CisgICAgICAgIDEuIElmIHdlIGFyZSBub3QgdXNpbmcgR1N0cmVhbWVyIEdMLCB3ZSBhcmUgZ29p
bmcgdG8gYWNxdWlyZSBhIGZyZWUgdGV4dHVyZQorICAgICAgICBmcm9tIGEgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eSBhbmQgdXBsb2FkIHRoZSBkZWNvZGVkIGZyYW1lIHRvIHRoZQor
ICAgICAgICB0ZXh0dXJlLiBUaGlzIHNob3VsZCBiZSBkb25lIGF0IHRoZSBjb21wb3NpdGluZyB0
aHJlYWQgYmVjYXVzZSB3ZQorICAgICAgICBkb24ndCBoYXZlIGEgR3N0J3MgR0wgdGhyZWFkLgor
ICAgICAgICAyLiBJZiB3ZSBhcmUgdXNpbmcgR1N0cmVhbWVyIEdMLCB3ZSBtYXAgYSB0ZXh0dXJl
IGZvciB0aGUgZ2l2ZW4gZnJhbWUKKyAgICAgICAgYW5kIHBhc3NlcyBpdCB0byB0aGUgY29tcG9z
aXRpbmcgdGhyZWFkLiBUaGUgbWFwcGVkIGZyYW1lIHdpbGwgYmUKKyAgICAgICAgZnJlZWQgaWYg
aXQgaXMgc3dhcHBlZCBvdXQgb3IgdGhlIGxheWVyIGlzIHJlbW92ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgTW9kaWZpZWQgdG8gYXF1aXJlIGEgbmV3IHRleHR1cmUgaXRzZWxmLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuY3BwOgorICAgICAgICBBZGRzIGEgd2F5IHRvIHBhc3MgYSBmdW5jdGlvbiB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIHRvIGFsbG9jYXRlIC8KKyAgICAgICAgdXBsb2FkIHRl
eHR1cmVzIGF0IHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCisKKwogMjAxNS0xMi0wOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBNYWluVGhyZWFk
U2hhcmVkVGltZXJHdGsgaW1wbGVtZW50YXRpb24gR0xpYi1zcGVjaWZpYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDU4YWZm
ZWIyYmRmZDIyNmU1OWIwYWY2YzUxZDBmMWJlMTQ3ZmExZDEuLmFiMmZkY2MxMjkxYTllZmZkNmEy
ZmNiNTJiZDNjZGEyOGY0MDNlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTU1LDYgKzU1LDkgQEAKICNpbmNsdWRlICJC
aXRtYXBUZXh0dXJlUG9vbC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2VuZGlm
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFN
RVJfR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCkBAIC0xMDIsNiArMTA1LDY3IEBAIHN0YXRp
YyBpbnQgZ3JlYXRlc3RDb21tb25EaXZpc29yKGludCBhLCBpbnQgYikKICAgICByZXR1cm4gQUJT
KGEpOwogfQogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0Uo
R1NUUkVBTUVSX0dMKQorY2xhc3MgR3N0VmlkZW9GcmFtZUhvbGRlciA6IHB1YmxpYyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBs
ZSkKKyAgICB7CisgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgICAgIGdzdF92
aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKHNhbXBsZSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX3NpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0lu
Zm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAgICAgICBtX2ZsYWdz
ID0gR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDA7CisKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlKTsKKyAgICAgICAgbV92aWRlb0ZyYW1lID0gbmV3IEdzdFZp
ZGVvRnJhbWUoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFnc3RfdmlkZW9fZnJhbWVfbWFwKG1f
dmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4o
R1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKSkgeworICAgICAgICAgICAgZGVsZXRlIG1fdmlk
ZW9GcmFtZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGV4
dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50Kj4obV92aWRlb0ZyYW1lLT5kYXRhWzBd
KTsKKyAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Hc3RW
aWRlb0ZyYW1lSG9sZGVyKCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9pc1ZhbGlk
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBHc3RNYXBJbmZvKiBpbmZvID0gJm1f
dmlkZW9GcmFtZS0+bWFwWzBdOworICAgICAgICBHc3RHTEJhc2VCdWZmZXIqIG1lbSA9IChHc3RH
TEJhc2VCdWZmZXIqKWluZm8tPm1lbW9yeTsKKyAgICAgICAgR3N0R0xXaW5kb3cqIGdzdFdpbmRv
dyA9IGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cobWVtLT5jb250ZXh0KTsKKworICAgICAgICBn
c3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZV9hc3luYyhnc3RXaW5kb3csIChHc3RHTFdpbmRvd0NC
KXVubWFwVmlkZW9GcmFtZUNhbGxiYWNrLCBtX3ZpZGVvRnJhbWUsIChHRGVzdHJveU5vdGlmeSlm
cmVlVmlkZW9GcmFtZUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1bm1hcFZp
ZGVvRnJhbWVDYWxsYmFjayhHc3RWaWRlb0ZyYW1lKiB2aWRlb0ZyYW1lKQorICAgIHsKKyAgICAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKHZpZGVvRnJhbWUpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGZyZWVWaWRlb0ZyYW1lQ2FsbGJhY2soR3N0VmlkZW9GcmFtZSogdmlkZW9GcmFtZSkK
KyAgICB7CisgICAgICAgIGRlbGV0ZSB2aWRlb0ZyYW1lOworICAgIH0KKworICAgIGNvbnN0IElu
dFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBUZXh0dXJlTWFwcGVy
R0w6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIEdMdWludCB0
ZXh0dXJlSUQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJRDsgfQorICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQorCitwcml2YXRlOgorICAgIEdzdFZpZGVv
RnJhbWUqIG1fdmlkZW9GcmFtZTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFw
cGVyR0w6OkZsYWdzIG1fZmxhZ3M7CisgICAgR0x1aW50IG1fdGV4dHVyZUlEOworICAgIGJvb2wg
bV9pc1ZhbGlkIHsgZmFsc2UgfTsKK307CisjZW5kaWYKKwogTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciog
cGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9mcHNTaW5rKDApCkBAIC0x
MTMsNiArMTc3LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fdXNpbmdGYWxs
YmFja1ZpZGVvU2luayhmYWxzZSkKIHsKICAgICBnX211dGV4X2luaXQoJm1fc2FtcGxlTXV0ZXgp
OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBtX3BsYXRmb3Jt
TGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
KCkpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKQEAgLTM2MCwzNSArNDI3LDE5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWRDYWxsYmFjayhNZWRp
YVBsYXllclByaXZhdGVHU3RyCiAgICAgcGxheWVyLT5tX25vdGlmaWVyLm5vdGlmeShNYWluVGhy
ZWFkTm90aWZpY2F0aW9uOjpNdXRlQ2hhbmdlZCwgW3BsYXllcl0geyBwbGF5ZXItPm5vdGlmeVBs
YXllck9mTXV0ZSgpOyB9KTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHc3RWaWRl
b0luZm8mIHZpZGVvSW5mbykKIHsKLSAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2so
bV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBs
ZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSk7Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVv
X2luZm9faW5pdCgmdmlkZW9JbmZvKTsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmdmlkZW9JbmZvLCBjYXBzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1Rf
VklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBH
U1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBw
b3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZl
ciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CiAKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigxLCAxLCAwKQogICAgIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSogbWV0
YTsKICAgICBpZiAoKG1ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19nbF90ZXh0dXJlX3VwbG9h
ZF9tZXRhKGJ1ZmZlcikpKSB7CiAgICAgICAgIGlmIChtZXRhLT5uX3RleHR1cmVzID09IDEpIHsg
Ly8gQlJHeCAmIEJHUkEgZm9ybWF0cyB1c2Ugb25seSBvbmUgdGV4dHVyZS4KLSAgICAgICAgICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgICAgICBndWludCBpZHNbNF0g
PSB7IHRleHR1cmVHTC0+aWQoKSwgMCwgMCwgMCB9OworICAgICAgICAgICAgZ3VpbnQgaWRzWzRd
ID0geyB0ZXh0dXJlLmlkKCksIDAsIDAsIDAgfTsKIAogICAgICAgICAgICAgaWYgKGdzdF92aWRl
b19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhX3VwbG9hZChtZXRhLCBpZHMpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgpAQCAtMzk4LDE0ICs0NDksNzcgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1
cmUKIAogICAgIEdzdFZpZGVvRnJhbWUgdmlkZW9GcmFtZTsKICAgICBpZiAoIWdzdF92aWRlb19m
cmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgR1NUX01BUF9SRUFEKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybjsKIAogICAgIGludCBzdHJp
ZGUgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFKCZ2aWRlb0ZyYW1lLCAwKTsKICAgICBj
b25zdCB2b2lkKiBzcmNEYXRhID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEoJnZpZGVvRnJh
bWUsIDApOwotICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHNyY0RhdGEsIFdlYkNvcmU6Oklu
dFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHNpemUpLCBXZWJDb3JlOjpJbnRQb2ludCgw
LCAwKSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbElt
YWdlRGF0YSk7CisgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJ
bnRSZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9f
SU5GT19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRl
LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCit7CisjaWYgIVVTRShH
U1RSRUFNRVJfR0wpCisgICAgY2xhc3MgQ29uZGl0aW9uTm90aWZpZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgQ29uZGl0aW9uTm90aWZpZXIoTG9jayYgbG9jaywgQ29uZGl0aW9uJiBjb25kaXRp
b24pCisgICAgICAgICAgICA6IG1fbG9ja2VyKGxvY2spLCBtX2NvbmRpdGlvbihjb25kaXRpb24p
CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+Q29uZGl0aW9uTm90aWZpZXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQor
ICAgIHByaXZhdGU6CisgICAgICAgIExvY2tIb2xkZXIgbV9sb2NrZXI7CisgICAgICAgIENvbmRp
dGlvbiYgbV9jb25kaXRpb247CisgICAgfTsKKyAgICBDb25kaXRpb25Ob3RpZmllciBub3RpZmll
cihtX2RyYXdNdXRleCwgbV9kcmF3Q29uZGl0aW9uKTsKKyNlbmRpZgorCisgICAgV1RGOjpHTXV0
ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIExvY2tIb2xkZXIg
aG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworCisgICAgaWYgKCFtX3BsYXRm
b3JtTGF5ZXJQcm94eS0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJh
bWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxl
LmdldCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWZyYW1lSG9sZGVyLT5pc1ZhbGlkKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpLCBmcmFtZUhvbGRl
ci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSk7CisgICAgbGF5ZXJCdWZmZXItPnNldFVu
bWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGOjptb3ZlKGZyYW1lSG9sZGVyKSk7CisgICAgbV9w
bGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURjo6bW92ZShsYXllckJ1ZmZlcikp
OworI2Vsc2UKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBs
ZS5nZXQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXBzKSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmV0dXJuIHRleHR1cmU7CisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBnc3Rf
dmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmIChVTkxJS0VMWSghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZv
KSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYnVmZmVyID0gbV9wbGF0Zm9y
bUxheWVyUHJveHktPmdldEF2YWlsYWJsZUJ1ZmZlcihzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
RE9OVF9DQVJFKTsKKyAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFtX2NvbnRleHQzRCkpCisgICAgICAgICAgICBtX2NvbnRleHQzRCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSwgbnVsbHB0
ciwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCk7CisKKyAgICAg
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhZG9wdFJlZihuZXcgQml0bWFwVGV4
dHVyZUdMKG1fY29udGV4dDNEKSk7CisgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIEdTVF9W
SURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEY6Om1vdmUodGV4
dHVyZSkpOworICAgIH0KKyAgICB1cGRhdGVUZXh0dXJlKGJ1ZmZlci0+dGV4dHVyZUdMKCksIHZp
ZGVvSW5mbyk7CisgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURjo6
bW92ZShidWZmZXIpKTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTQzOCw2ICs1NTIsMTkgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChHc3RT
YW1wbGUqIHNhbXBsZSkKICAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7CiAgICAgfQogCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2lmIFVTRShHU1RSRUFNRVJfR0wp
CisgICAgcHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKTsKKyNlbHNlCisgICAgeworICAgICAgICBM
b2NrSG9sZGVyIGxvY2sobV9kcmF3TXV0ZXgpOworICAgICAgICBpZiAoIW1fcGxhdGZvcm1MYXll
clByb3h5LT5zY2hlZHVsZVVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZChbdGhpc10geyB0aGlzLT5w
dXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpOyB9KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9kcmF3Q29uZGl0aW9uLndhaXQobV9kcmF3TXV0ZXgpOworICAgIH0KKyNlbmRpZgorICAg
IHJldHVybjsKKyNlbHNlCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtNDQ5LDYgKzU3Niw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQoR3N0U2FtcGxlKiBzYW1wbGUp
CiAjZWxzZQogICAgIHJlcGFpbnQoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWludENhbGxiYWNrKE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllciwgR3N0U2FtcGxlKiBzYW1wbGUpCkBAIC00NzEsNyAr
NTk5LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCkBAIC01MDEsOCArNjMyLDI3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3VzaW5nRmFsbGJhY2tWaWRlb1Np
bmspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdXBkYXRl
VGV4dHVyZSh0ZXh0dXJlTWFwcGVyKSkKLSAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdU
ZXh0dXJlKCp0ZXh0dXJlLmdldCgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworICAg
ICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZTsKKyAgICAgICAgeworICAgICAgICAg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworCisgICAg
ICAgICAgICBpZiAoIW1fc2FtcGxlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkp
OworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFjYXBzKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgICAgICAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1Rf
VklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRl
b0luZm8pKTsKKyAgICAgICAgICAgIHRleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4
dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/
IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwor
ICAgICAgICAgICAgdXBkYXRlVGV4dHVyZShzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPigq
dGV4dHVyZSksIHZpZGVvSW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgdGV4dHVyZU1hcHBlci0+
ZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDA0OTU3ZGFiOTdiODk0YTZlZDdkNWVhYjI3YmMzNWI3
NTZiOWEyZDguLjZjOWZiOWE3ZmI3YTk5YTYwMzhhNjM5OTYzMjE0ZjI2NTZkOTU2NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAt
MzUsMjEgKzM1LDI5IEBACiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgi
CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2VuZGlmCiAKIHR5cGVkZWYg
c3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U3RyZWFt
Vm9sdW1lIEdzdFN0cmVhbVZvbHVtZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRlb0luZm8gR3N0
VmlkZW9JbmZvOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29udGV4dCBHc3RHTENvbnRleHQ7CiB0
eXBlZGVmIHN0cnVjdCBfR3N0R0xEaXNwbGF5IEdzdEdMRGlzcGxheTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0
OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAsIHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllcgorI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwg
cHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcgogI2VuZGlmCiB7
CiAKQEAgLTEwNSw2ICsxMTMsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih0aGlzKTsgfQorICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCBHc3RFbGVtZW50KiBjcmVhdGVWaWRl
b1NpbmsoKTsKQEAgLTE1NSwxOCArMTY4LDI5IEBAIHByb3RlY3RlZDoKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBSdW5Mb29wOjpU
aW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlPiBtX2RyYXdUaW1lcjsKLSAgICBD
b25kaXRpb24gbV9kcmF3Q29uZGl0aW9uOwotICAgIExvY2sgbV9kcmF3TXV0ZXg7CiAjZW5kaWYK
ICAgICBtdXRhYmxlIEZsb2F0U2l6ZSBtX3ZpZGVvU2l6ZTsKICAgICBib29sIG1fdXNpbmdGYWxs
YmFja1ZpZGVvU2luazsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB1cGRhdGVUZXh0
dXJlKFRleHR1cmVNYXBwZXIqKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQorICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZShCaXRtYXBUZXh0dXJlR0wmLCBHc3RWaWRlb0luZm8mKTsKICNlbmRpZgogI2lmIFVTRShHU1RS
RUFNRVJfR0wpCiAgICAgR1JlZlB0cjxHc3RHTENvbnRleHQ+IG1fZ2xDb250ZXh0OwogICAgIEdS
ZWZQdHI8R3N0R0xEaXNwbGF5PiBtX2dsRGlzcGxheTsKICNlbmRpZgorCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
bGF0Zm9ybUxheWVyUHJveHkuY29weVJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZm
ZXJzSWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBwdXNoVGV4dHVyZVRvQ29tcG9z
aXRvcigpOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3Bs
YXRmb3JtTGF5ZXJQcm94eTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkgfHwgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gbV9jb250ZXh0M0Q7CisgICAgQ29uZGl0aW9uIG1fZHJhd0NvbmRpdGlvbjsKKyAgICBM
b2NrIG1fZHJhd011dGV4OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYTVmMDhjYmUzZmMxZTA5YjU5NTA4
NGE3Nzc0YmQ1NmQyNDI4MDkzMC4uOTUxMTM4ZmYyMDgwZjBmM2NlOThkNjA3ZjliZTU2YTNkNDIw
MjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmNwcApAQCAtNjMsNiArNjMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgbV9jb21wb3NpdG9yID0gY29tcG9zaXRvcjsKICAg
ICBtX3RhcmdldExheWVyID0gdGFyZ2V0TGF5ZXI7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgp
CkBAIC0xNTIsNiArMTUzLDMwIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6c3dhcEJ1ZmZlcigpCiAgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6bW92ZShw
cmV2QnVmZmVyKSk7CiB9CiAKK2Jvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYg
dXBkYXRlRnVuY3Rpb24pCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBp
ZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbiA9IFdURjo6bW92ZSh1cGRh
dGVGdW5jdGlvbik7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpCit7CisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IHVwZGF0ZUZ1bmN0aW9uOworICAgIHsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWRV
cGRhdGVGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdXBkYXRlRnVuY3Rp
b24gPSBXVEY6Om1vdmUobV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pOworICAgIH0K
KworICAgIHVwZGF0ZUZ1bmN0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IDdjZmYxY2M0ZmFkMmQ0
YzNlMjQyODliNDFmZGMzNWQwNGQ4MDkxZWIuLjdiYjhmNjczYmI4Mzk4YWFjZjFhYzAwZWI3Nzc5
NjMwZmVhMjQ3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN3YXBCdWZmZXIo
KTsKIAorICAgIGJvb2wgc2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlVW51
c2VkQnVmZmVycygpOwogICAgIHZvaWQgcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCk7
CkBAIC05Myw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsgMCB9OwogI2VuZGlmCisKKyAgICB2b2lk
IGNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PiBtX2NvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lcjsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9jb21w
b3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>