<?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>137065</bug_id>
          
          <creation_ts>2014-09-24 04:30:18 -0700</creation_ts>
          <short_desc>[GStreamer] Video resolution changes trigger a crash in the TextureMapper</short_desc>
          <delta_ts>2014-11-07 11:30:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pnormand</cc>
    
    <cc>slomo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>xclaesse</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036954</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-24 04:30:18 -0700</bug_when>
    <thetext>When the video sink updates its caps the player is notified and clears its internal video size cache but this is not protected by a mutex so it&apos;s possible that the player tries to use caps that don&apos;t correspond to the buffer being rendered, triggering this crash:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:36
36	../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: No such file or directory.
(gdb) bt
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:36
#1  0x00007fe5bd010b5e in ?? () from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
#2  0x00007fe5bd015f20 in ?? () from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
#3  0x00007fe5bd0160d2 in ?? () from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
#4  0x00007fe5bd06a902 in ?? () from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
#5  0x00007fe5bd000e27 in ?? () from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
#6  0x00007fe5bd004b5f in ?? () from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
#7  0x00007fe623104f1a in WebCore::BitmapTextureGL::updateContentsNoSwizzle(void const*, WebCore::IntRect const&amp;, WebCore::IntPoint const&amp;, int, unsigned int, unsigned int) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#8  0x00007fe62310569a in WebCore::BitmapTextureGL::updateContents(void const*, WebCore::IntRect const&amp;, WebCore::IntPoint const&amp;, int, WebCore::BitmapTexture::UpdateContentsFlag) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#9  0x00007fe6230b891c in WebCore::MediaPlayerPrivateGStreamerBase::updateTexture(WebCore::TextureMapper*) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#10 0x00007fe6230b8a2f in WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper(WebCore::TextureMapper*, WebCore::FloatRect const&amp;, WebCore::TransformationMatrix const&amp;, float) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#11 0x00007fe622bbe3f3 in WebCore::TextureMapperLayer::paintSelf(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#12 0x00007fe622bc1dc2 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#13 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#14 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#15 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#16 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#17 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#18 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#19 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#20 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#21 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#22 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#23 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#24 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#25 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#26 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#27 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#28 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#29 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#30 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#31 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#32 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#33 0x00007fe622bc1d45 in WebCore::TextureMapperLayer::paintSelfAndChildren(WebCore::TextureMapperPaintOptions const&amp;) [clone .part.108] ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#34 0x00007fe622bc1f7d in WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(WebCore::TextureMapperPaintOptions const&amp;) ()
   from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#35 0x00007fe622bc1aa5 in WebCore::TextureMapperLayer::paintRecursive(WebCore::TextureMapperPaintOptions const&amp;) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#36 0x00007fe622bc1bc1 in WebCore::TextureMapperLayer::paint() () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#37 0x00007fe6223171a7 in WebKit::LayerTreeHostGtk::compositeLayersToContext(WebKit::LayerTreeHostGtk::CompositePurpose) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#38 0x00007fe622317710 in WebKit::LayerTreeHostGtk::flushAndRenderLayers() () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#39 0x00007fe6223177bb in WebKit::LayerTreeHostGtk::layerFlushTimerFired() () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#40 0x00007fe62048174c in WTF::GMainLoopSource::voidCallback() () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
#41 0x00007fe620481929 in WTF::GMainLoopSource::voidSourceCallback(WTF::GMainLoopSource*) () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#42 0x00007fe61db9c0fe in g_main_dispatch (context=0x13fdb10) at gmain.c:3065
#43 g_main_context_dispatch (context=context@entry=0x13fdb10) at gmain.c:3641
#44 0x00007fe61db9c4a8 in g_main_context_iterate (context=0x13fdb10, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at gmain.c:3712
#45 0x00007fe61db9c912 in g_main_loop_run (loop=0x19c76b0) at gmain.c:3906
#46 0x00007fe62231b911 in WebProcessMainUnix () from /home/phil/dev/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#47 0x00007fe6207bfb45 in __libc_start_main (main=0x4006f0 &lt;main&gt;, argc=2, argv=0x7fffe3e8fd28, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7fffe3e8fd18)
    at libc-start.c:287
#48 0x0000000000400723 in _start ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036955</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-24 04:31:53 -0700</bug_when>
    <thetext>One workaround is to clear m_buffer when video caps changed but the side effect is a quick flash during the video size transition...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036956</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-24 04:36:18 -0700</bug_when>
    <thetext>The proper fix would be to have DRAIN query support in the sink but currently only the OMX video decoder supports this, see also: https://bugzilla.gnome.org/show_bug.cgi?id=737240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036958</commentid>
    <comment_count>3</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2014-09-24 04:49:34 -0700</bug_when>
    <thetext>Or you always pass caps and buffer around at the same time? You could use GstSample for that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044220</commentid>
    <comment_count>4</comment_count>
      <attachid>240473</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-27 02:00:05 -0700</bug_when>
    <thetext>Created attachment 240473
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044221</commentid>
    <comment_count>5</comment_count>
      <attachid>240473</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2014-10-27 02:16:42 -0700</bug_when>
    <thetext>Comment on attachment 240473
patch

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

Looks good overall and seems like a little simplification of the code :)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:421
&gt; +    GRefPtr&lt;GstCaps&gt; currentCaps = gst_sample_get_caps(m_sample);

Doesn&apos;t this need the sampleMutex locked too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044222</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-27 02:20:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 240473 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240473&amp;action=review
&gt; 
&gt; Looks good overall and seems like a little simplification of the code :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:421
&gt; &gt; +    GRefPtr&lt;GstCaps&gt; currentCaps = gst_sample_get_caps(m_sample);
&gt; 
&gt; Doesn&apos;t this need the sampleMutex locked too?

Well that method is always invoked with the mutex locked already. Perhaps I can add an ASSERT about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044223</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-27 02:23:17 -0700</bug_when>
    <thetext>Or drop this method all together :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044253</commentid>
    <comment_count>8</comment_count>
      <attachid>240485</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-27 10:08:15 -0700</bug_when>
    <thetext>Created attachment 240485
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044258</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-27 10:24:39 -0700</bug_when>
    <thetext>Oops the sample caps don&apos;t really need to be stored in a GRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044260</commentid>
    <comment_count>10</comment_count>
      <attachid>240486</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-27 10:30:41 -0700</bug_when>
    <thetext>Created attachment 240486
patch

Please review this one :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044759</commentid>
    <comment_count>11</comment_count>
      <attachid>240486</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-10-29 08:50:22 -0700</bug_when>
    <thetext>Comment on attachment 240486
patch

Great =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045000</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-30 01:54:06 -0700</bug_when>
    <thetext>Committed r175370: &lt;http://trac.webkit.org/changeset/175370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047129</commentid>
    <comment_count>13</comment_count>
    <who name="Xavier Claessens">xclaesse</who>
    <bug_when>2014-11-07 11:30:25 -0800</bug_when>
    <thetext>*** Bug 138505 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240473</attachid>
            <date>2014-10-27 02:00:05 -0700</date>
            <delta_ts>2014-10-27 10:08:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>21546</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0MDY1Mzk3YWFiOGMyMmI5OGU1MjFjYTQwNmViOGE0OTVlZDNiZjgzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI0IE9jdCAyMDE0IDEyOjEwOjE3ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCA1MyArKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZUdTdHJlYW1lci5oICAgfCAgNiArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZUdTdHJlYW1lckNhaXJvLmNwcCAgICAgfCAgNCArLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCAgfCA1NSArKysrKysrLS0tLS0tLQogLi4uL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggICAgfCAgOCArLQogLi4uL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwICAgICAgfCA4NSArKysrKysr
Ky0tLS0tLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCA5MCBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJiMGI3Zi4uZjZlMmQyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDE0LTEwLTI0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBWaWRlbyByZXNvbHV0aW9uIGNoYW5n
ZXMgdHJpZ2dlciBhIGNyYXNoIGluIHRoZSBUZXh0dXJlTWFwcGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdG8gR3N0U2FtcGxlIGZvciBi
dWZmZXIrY2FwcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIHZpZGVvIHNpbmsg
YW5kIHRoZSBwbGF5ZXIuIFVzaW5nIGEgc2luZ2xlIG9iamVjdCB0eXBlIGZvciB0aGlzCisgICAg
ICAgIGF2b2lkIGlzc3VlcyB3aGVyZSB0aGUgY2FwcyBtaWdodCBub3QgY29ycmVjdGx5IGRlc2Ny
aWJlIHRoZQorICAgICAgICBidWZmZXIgY29udGVudHMgYW55bW9yZSwgZm9yIGV4YW1wbGUgd2hl
biB0aGUgdmlkZW8gcmVzb2x1dGlvbiBpcworICAgICAgICBjaGFuZ2VkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6IFVzZSBHc3RTYW1w
bGUKKyAgICAgICAgaW5zdGVhZCBvZiBHc3RCdWZmZXIrR3N0Q2Fwcy4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAg
KEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKTogVGhlIHJl
cGFpbnQgc2lnbmFsCisgICAgICAgIG5vdyB1c2VzIGEgR3N0U2FtcGxlIGluc3RlYWQgb2YgYSBH
c3RCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgU3RvcmUgdGhl
IGN1cnJlbnQgc2FtcGxlIGluc3RlYWQgb2YgYSBidWZmZXIuIEFsc28gcmVuYW1lZCB0aGUKKyAg
ICAgICAgbXV0ZXggcHJvdGVjdGluZyBhY2Nlc3MgdG8gdGhlIHNhbXBsZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6IFJldHVybgorICAgICAgICBlYXJseSBp
ZiBubyBzYW1wbGUgaXMgYXZhaWxhYmxlLiBUaGUgY2FwcyB1c2VkIHRvIGdldCB0aGUgdmlkZW8K
KyAgICAgICAgc2l6ZSBhcmUgc3RvcmUgaW4gdGhlIHNhbXBsZS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOiBVc2UKKyAg
ICAgICAgR3N0U2FtcGxlIGluc3RlYWQgb2YgR3N0QnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpjdXJyZW50VmlkZW9TaW5rQ2Fwcyk6CisgICAgICAgIFVzZSBHc3RTYW1wbGUgaW5zdGVh
ZCBvZiB2aWRlbyBzaW5rIHNpbmsgcGFkIGNhcHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDogTm93
IHN0b3JlIGEKKyAgICAgICAgR3N0U2FtcGxlIGludGVybmFsbHkuIEFsc28gcmVtb3ZlZCB0aGUg
bm93IHVzZWxlc3MgY3VycmVudC1jYXBzIHByb3BlcnR5LgorICAgICAgICAoX1dlYktpdFZpZGVv
U2lua1ByaXZhdGU6Ol9XZWJLaXRWaWRlb1NpbmtQcml2YXRlKTogUmVuYW1lZCB0aGUKKyAgICAg
ICAgbXV0ZXggcHJvdGVjdGluZyBhY2Nlc3MgdG8gdGhlIHNhbXBsZS4KKyAgICAgICAgKF9XZWJL
aXRWaWRlb1NpbmtQcml2YXRlOjp+X1dlYktpdFZpZGVvU2lua1ByaXZhdGUpOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdF92aWRlb19zaW5rX2luaXQpOiBEaXNhYmxlIGxhc3Qtc2FtcGxlIGluIGJh
c2VzaW5rIHNpbmNlIHdlCisgICAgICAgIGFscmVhZHkgc3RvcmUgb25lIGluIG91ciBzaW5rIGFu
eXdheS4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayk6IFN3aXRjaCB0
byBHc3RTYW1wbGUuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtSZW5kZXIpOiBEaXR0by4KKyAg
ICAgICAgKHVubG9ja1NhbXBsZU11dGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRWaWRlb1Np
bmtVbmxvY2spOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1VubG9ja1N0b3ApOiBE
aXR0by4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1N0b3ApOiBEaXR0byEKKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1N0YXJ0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfdmlkZW9fc2lua19j
bGFzc19pbml0KTogRHJvcCBjdXJyZW50LWNhcHMgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRW
aWRlb1NpbmtHZXRQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICh1bmxvY2tCdWZmZXJNdXRl
eCk6IERlbGV0ZWQuCisKIDIwMTQtMTAtMjYgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEltYWdlcyB3aXRoIHVzZW1hcCBzaG91bGQgbm90IGhhdmUg
YSBsaW5rIHN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IGM5ZDJmYjQuLjM5MzFhMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIEludFNpemU7
CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFt
ZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlR1N0cmVh
bWVyPiBjcmVhdGVJbWFnZShHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUltYWdlKEdzdFNhbXBs
ZSogc2FtcGxlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElt
YWdlR1N0cmVhbWVyKGJ1ZmZlciwgY2FwcykpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbWFnZUdTdHJlYW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VH
U3RyZWFtZXIoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBJbWFnZUdTdHJlYW1lciA6IHB1
YmxpYyBSZWZDb3VudGVkPEltYWdlR1N0cmVhbWVyPiB7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciosIEdzdENhcHMqKTsKKyAgICAg
ICAgSW1hZ2VHU3RyZWFtZXIoR3N0U2FtcGxlKik7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBJbWFn
ZT4gbV9pbWFnZTsKICAgICAgICAgRmxvYXRSZWN0IG1fY3JvcFJlY3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lckNhaXJvLmNwcAppbmRleCBiMTUzZjA5Li4wNmZhZWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCkBAIC0zMiw4ICszMiw5IEBACiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUltYWdlR1N0cmVhbWVyOjpJ
bWFnZUdTdHJlYW1lcihHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKK0ltYWdlR1N0
cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RTYW1wbGUqIHNhbXBsZSkKIHsKKyAgICBHc3RDYXBz
KiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUpOwogICAgIEdzdFZpZGVvSW5mbyB2
aWRlb0luZm87CiAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKICAgICBpZiAo
IWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKQEAgLTQyLDYgKzQz
LDcgQEAgSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBH
c3RDYXBzKiBjYXBzKQogICAgIC8vIFJpZ2h0IG5vdyB0aGUgVGV4dHVyZU1hcHBlciBvbmx5IHN1
cHBvcnRzIGNocm9tYXMgd2l0aCBvbmUgcGxhbmUKICAgICBBU1NFUlQoR1NUX1ZJREVPX0lORk9f
Tl9QTEFORVMoJnZpZGVvSW5mbykgPT0gMSk7CiAKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdz
dF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUpOwogICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21h
cCgmbV92aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIEdTVF9NQVBfUkVBRCkpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCmluZGV4IGQxNzliZDQuLjUwYWEyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTc5LDkgKzc5
LDkgQEAgc3RhdGljIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlTXV0ZUNoYW5nZWRDYWxsYmFjayhH
T2JqZWN0KiwgR1BhcmFtU3BlYyosIE1lZGlhUGwKICAgICBwbGF5ZXItPm11dGVDaGFuZ2VkKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJL
aXRWaWRlb1NpbmsqLCBHc3RCdWZmZXIgKmJ1ZmZlciwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZSogcGxheWVyUHJpdmF0ZSkKK3N0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVJl
cGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RTYW1wbGUqIHNhbXBsZSwgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyUHJpdmF0ZSkKIHsKLSAgICBwbGF5ZXJQ
cml2YXRlLT50cmlnZ2VyUmVwYWludChidWZmZXIpOworICAgIHBsYXllclByaXZhdGUtPnRyaWdn
ZXJSZXBhaW50KHNhbXBsZSk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBsYXllcikKQEAg
LTg5LDEyICs4OSwxMiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9mcHNTaW5r
KDApCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQogICAgICwg
bV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9idWZmZXIoMCkKKyAg
ICAsIG1fc2FtcGxlKDApCiAgICAgLCBtX3JlcGFpbnRIYW5kbGVyKDApCiAgICAgLCBtX3ZvbHVt
ZVNpZ25hbEhhbmRsZXIoMCkKICAgICAsIG1fbXV0ZVNpZ25hbEhhbmRsZXIoMCkKIHsKLSAgICBn
X211dGV4X2luaXQoJm1fYnVmZmVyTXV0ZXgpOworICAgIGdfbXV0ZXhfaW5pdCgmbV9zYW1wbGVN
dXRleCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlKCkKQEAgLTEwNCwxMSArMTA0LDExIEBAIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkK
ICAgICAgICAgbV9yZXBhaW50SGFuZGxlciA9IDA7CiAgICAgfQogCi0gICAgZ19tdXRleF9jbGVh
cigmbV9idWZmZXJNdXRleCk7CisgICAgZ19tdXRleF9jbGVhcigmbV9zYW1wbGVNdXRleCk7CiAK
LSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGdzdF9idWZmZXJfdW5yZWYobV9idWZmZXIpOwot
ICAgIG1fYnVmZmVyID0gMDsKKyAgICBpZiAobV9zYW1wbGUpCisgICAgICAgIGdzdF9zYW1wbGVf
dW5yZWYobV9zYW1wbGUpOworICAgIG1fc2FtcGxlID0gMDsKIAogICAgIG1fcGxheWVyID0gMDsK
IApAQCAtMTM3LDYgKzEzNywxMCBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6Om5hdHVyYWxTaXplKCkgY29uc3QKICAgICBpZiAoIW1fdmlkZW9TaXplLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG1fdmlkZW9TaXplOwogCisgICAgR011dGV4TG9ja2VyPEdNdXRl
eD4gbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBpZiAoIW1fc2FtcGxlKQorICAgICAgICByZXR1
cm4gSW50U2l6ZSgpOworCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVv
U2lua0NhcHMoKTsKICAgICBpZiAoIWNhcHMpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CkBA
IC0yNzUsOCArMjc5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpt
dXRlQ2hhbmdlZCgpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIpCiB7Ci0gICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX2J1ZmZlck11dGV4KTsKLSAg
ICBpZiAoIW1fYnVmZmVyKQorICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVN
dXRleCk7CisgICAgaWYgKCFtX3NhbXBsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9TaW5rQ2FwcygpOwpAQCAtMjkw
LDEwICsyOTQsMTEgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUKIAogICAgIEludFNpemUgc2l6
ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19J
TkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1
cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURF
T19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0
X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlKTsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEs
IDEsIDApCiAgICAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKiBtZXRhOwotICAgIGlmICgo
bWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGEobV9idWZm
ZXIpKSkgeworICAgIGlmICgobWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVf
dXBsb2FkX21ldGEoYnVmZmVyKSkpIHsKICAgICAgICAgaWYgKG1ldGEtPm5fdGV4dHVyZXMgPT0g
MSkgeyAvLyBCUkd4ICYgQkdSQSBmb3JtYXRzIHVzZSBvbmx5IG9uZSB0ZXh0dXJlLgogICAgICAg
ICAgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25z
dCBCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKTsKICAgICAgICAgICAgIGd1aW50IGlk
c1s0XSA9IHsgdGV4dHVyZUdMLT5pZCgpLCAwLCAwLCAwIH07CkBAIC0zMDgsNyArMzEzLDcgQEAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojp1cGRhdGVUZXh0dXJlKFRleHR1cmUKICAgICBBU1NFUlQoR1NUX1ZJREVPX0lORk9fTl9QTEFO
RVMoJnZpZGVvSW5mbykgPT0gMSk7CiAKICAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7Ci0g
ICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBtX2J1
ZmZlciwgR1NUX01BUF9SRUFEKSkKKyAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAoJnZpZGVv
RnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgR1NUX01BUF9SRUFEKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpbnQgc3RyaWRlID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklE
RSgmdmlkZW9GcmFtZSwgMCk7CkBAIC0zMjAsMTMgKzMyNSwxNSBAQCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUo
VGV4dHVyZQogfQogI2VuZGlmCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6dHJpZ2dlclJlcGFpbnQoR3N0QnVmZmVyKiBidWZmZXIpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBsZSogc2FtcGxlKQogewot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1NUX0lTX0JVRkZFUihidWZmZXIpKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKEdTVF9JU19TQU1QTEUoc2FtcGxlKSk7CiAKICAgICB7Ci0gICAgICAgIEdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2sobV9idWZmZXJNdXRleCk7Ci0gICAgICAgIGdzdF9idWZmZXJf
cmVwbGFjZSgmbV9idWZmZXIsIGJ1ZmZlcik7CisgICAgICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+
IGxvY2sobV9zYW1wbGVNdXRleCk7CisgICAgICAgIGlmIChtX3NhbXBsZSkKKyAgICAgICAgICAg
IGdzdF9zYW1wbGVfdW5yZWYobV9zYW1wbGUpOworICAgICAgICBtX3NhbXBsZSA9IGdzdF9zYW1w
bGVfcmVmKHNhbXBsZSk7CiAgICAgfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpAQCAtMzU3LDE1ICszNjQsMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFIKICAgICBpZiAoIW1fcGxheWVyLT52aXNpYmxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9idWZmZXJNdXRleCk7Ci0g
ICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1JlZlB0cjxHc3RDYXBz
PiBjYXBzID0gY3VycmVudFZpZGVvU2lua0NhcHMoKTsKLSAgICBpZiAoIWNhcHMpCisgICAgR011
dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBpZiAoIW1fc2FtcGxl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdl
ID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fYnVmZmVyLCBjYXBzLmdldCgpKTsKKyAg
ICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0
ZUltYWdlKG1fc2FtcGxlKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAK
QEAgLTQxMSwxMSArNDE0LDExIEBAIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om1vdmllTG9hZFR5cGUoKSBjb25zCiAKIEdSZWZQdHI8
R3N0Q2Fwcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3VycmVudFZpZGVvU2lu
a0NhcHMoKSBjb25zdAogewotICAgIGlmICghbV93ZWJraXRWaWRlb1NpbmspCisgICAgQVNTRVJU
KG1fc2FtcGxlKTsKKyAgICBpZiAoIW1fc2FtcGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY3VycmVudENhcHM7Ci0gICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKG1fd2Via2l0VmlkZW9TaW5rLmdldCgpKSwgImN1cnJlbnQtY2FwcyIsICZjdXJyZW50
Q2Fwcy5vdXRQdHIoKSwgTlVMTCk7CisgICAgR1JlZlB0cjxHc3RDYXBzPiBjdXJyZW50Q2FwcyA9
IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOwogICAgIHJldHVybiBjdXJyZW50Q2FwczsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKaW5kZXggNDYwZTg2MS4uODVjZmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgogCi10eXBlZGVmIHN0cnVjdCBf
R3N0QnVmZmVyIEdzdEJ1ZmZlcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxl
OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKIHR5cGVkZWYgc3RydWN0
IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U3RyZWFtVm9sdW1l
IEdzdFN0cmVhbVZvbHVtZTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBzaXplQ2hhbmdlZCgpOwogCi0gICAgdm9p
ZCB0cmlnZ2VyUmVwYWludChHc3RCdWZmZXIqKTsKKyAgICB2b2lkIHRyaWdnZXJSZXBhaW50KEdz
dFNhbXBsZSopOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTIzLDggKzEyMyw4IEBAIHByb3RlY3RlZDoKICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBHTXV0ZXgg
bV9idWZmZXJNdXRleDsKLSAgICBHc3RCdWZmZXIqIG1fYnVmZmVyOworICAgIG11dGFibGUgR011
dGV4IG1fc2FtcGxlTXV0ZXg7CisgICAgR3N0U2FtcGxlKiBtX3NhbXBsZTsKICAgICBHVGhyZWFk
U2FmZU1haW5Mb29wU291cmNlIG1fdm9sdW1lVGltZXJIYW5kbGVyOwogICAgIEdUaHJlYWRTYWZl
TWFpbkxvb3BTb3VyY2UgbV9tdXRlVGltZXJIYW5kbGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9y
ZXBhaW50SGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggN2Ni
MTkzZS4uMjU1ZTc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTY2
LDMwICs2NiwyNSBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05BTAogfTsKIAotZW51bSB7Ci0gICAg
UFJPUF8wLAotICAgIFBST1BfQ0FQUwotfTsKLQogc3RhdGljIGd1aW50IHdlYmtpdFZpZGVvU2lu
a1NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lu
a1ByaXZhdGUgewogICAgIF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlKCkKICAgICB7Ci0gICAgICAg
IGdfbXV0ZXhfaW5pdCgmYnVmZmVyTXV0ZXgpOworICAgICAgICBnX211dGV4X2luaXQoJnNhbXBs
ZU11dGV4KTsKICAgICAgICAgZ19jb25kX2luaXQoJmRhdGFDb25kaXRpb24pOwogICAgICAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKICAgICB9CiAKICAgICB+X1dlYktpdFZpZGVvU2lu
a1ByaXZhdGUoKQogICAgIHsKLSAgICAgICAgZ19tdXRleF9jbGVhcigmYnVmZmVyTXV0ZXgpOwor
ICAgICAgICBnX211dGV4X2NsZWFyKCZzYW1wbGVNdXRleCk7CiAgICAgICAgIGdfY29uZF9jbGVh
cigmZGF0YUNvbmRpdGlvbik7CiAgICAgfQogCi0gICAgR3N0QnVmZmVyKiBidWZmZXI7CisgICAg
R3N0U2FtcGxlKiBzYW1wbGU7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSB0aW1lb3V0
U291cmNlOwotICAgIEdNdXRleCBidWZmZXJNdXRleDsKKyAgICBHTXV0ZXggc2FtcGxlTXV0ZXg7
CiAgICAgR0NvbmQgZGF0YUNvbmRpdGlvbjsKIAogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwpAQCAt
MTAzLDcgKzk4LDcgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICAvLyBl
dmVyeXRoaW5nIGVsc2UgaXNuJ3QgcnVubmluZyBhbnltb3JlLiBUaGlzIHdpbGwgbGVhZAogICAg
IC8vIHRvIGRlYWRsb2NrcyBiZWNhdXNlIHJlbmRlcigpIGhvbGRzIHRoZSBzdHJlYW0gbG9jay4K
ICAgICAvLwotICAgIC8vIFByb3RlY3RlZCBieSB0aGUgYnVmZmVyIG11dGV4CisgICAgLy8gUHJv
dGVjdGVkIGJ5IHRoZSBzYW1wbGUgbXV0ZXgKICAgICBib29sIHVubG9ja2VkOwogfTsKIApAQCAt
MTE0LDYgKzEwOSw3IEBAIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFZpZGVvU2luaywg
d2Via2l0X3ZpZGVvX3NpbmssIEdTVF9UWVBFX1ZJREVPX1NJTkssCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfdmlkZW9fc2lua19pbml0KFdlYktpdFZpZGVvU2luayogc2luaykKIHsKICAgICBzaW5rLT5w
cml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNpbmssIFdFQktJVF9UWVBFX1ZJREVP
X1NJTkssIFdlYktpdFZpZGVvU2lua1ByaXZhdGUpOworICAgIGdfb2JqZWN0X3NldChHU1RfQkFT
RV9TSU5LKHNpbmspLCAiZW5hYmxlLWxhc3Qtc2FtcGxlIiwgRkFMU0UsIE5VTEwpOwogICAgIG5l
dyAoc2luay0+cHJpdikgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSgpOwogfQogCkBAIC0xMjEsMTcg
KzExNywxNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2soV2Vi
S2l0VmlkZW9TaW5rKiBzaW5rKQogewogICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYg
PSBzaW5rLT5wcml2OwogCi0gICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5idWZm
ZXJNdXRleCk7Ci0gICAgR3N0QnVmZmVyKiBidWZmZXIgPSBwcml2LT5idWZmZXI7Ci0gICAgcHJp
di0+YnVmZmVyID0gMDsKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPnNhbXBs
ZU11dGV4KTsKKyAgICBHc3RTYW1wbGUqIHNhbXBsZSA9IHByaXYtPnNhbXBsZTsKKyAgICBwcml2
LT5zYW1wbGUgPSAwOwogCi0gICAgaWYgKCFidWZmZXIgfHwgcHJpdi0+dW5sb2NrZWQgfHwgVU5M
SUtFTFkoIUdTVF9JU19CVUZGRVIoYnVmZmVyKSkpIHsKKyAgICBpZiAoIXNhbXBsZSB8fCBwcml2
LT51bmxvY2tlZCB8fCBVTkxJS0VMWSghR1NUX0lTX1NBTVBMRShzYW1wbGUpKSkgewogICAgICAg
ICBnX2NvbmRfc2lnbmFsKCZwcml2LT5kYXRhQ29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGdfc2lnbmFsX2VtaXQoc2luaywgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tS
RVBBSU5UX1JFUVVFU1RFRF0sIDAsIGJ1ZmZlcik7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZihidWZm
ZXIpOworICAgIGdfc2lnbmFsX2VtaXQoc2luaywgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tSRVBB
SU5UX1JFUVVFU1RFRF0sIDAsIHNhbXBsZSk7CisgICAgZ3N0X3NhbXBsZV91bnJlZihzYW1wbGUp
OwogICAgIGdfY29uZF9zaWduYWwoJnByaXYtPmRhdGFDb25kaXRpb24pOwogfQogCkBAIC0xNDAs
MTcgKzEzNiwxNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIo
R3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgIFdlYktpdFZpZGVvU2lu
ayogc2luayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKTsKICAgICBXZWJLaXRWaWRlb1Np
bmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKIAotICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+
IGxvY2socHJpdi0+YnVmZmVyTXV0ZXgpOworICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2so
cHJpdi0+c2FtcGxlTXV0ZXgpOwogCiAgICAgaWYgKHByaXYtPnVubG9ja2VkKQogICAgICAgICBy
ZXR1cm4gR1NUX0ZMT1dfT0s7CiAKLSAgICBwcml2LT5idWZmZXIgPSBnc3RfYnVmZmVyX3JlZihi
dWZmZXIpOworICAgIHByaXYtPnNhbXBsZSA9IGdzdF9zYW1wbGVfbmV3KGJ1ZmZlciwgcHJpdi0+
Y3VycmVudENhcHMsIDAsIDApOwogCiAgICAgLy8gVGhlIHZpZGVvIGluZm8gc3RydWN0dXJlIGlz
IHZhbGlkIG9ubHkgaWYgdGhlIHNpbmsgaGFuZGxlZCBhbiBhbGxvY2F0aW9uIHF1ZXJ5LgogICAg
IEdzdFZpZGVvRm9ybWF0IGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmcHJpdi0+aW5m
byk7CiAgICAgaWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pIHsKLSAgICAg
ICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKHBy
aXYtPnNhbXBsZSk7CiAgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgICB9CiAKQEAg
LTE3OSwxMyArMTc1LDEyIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1Jl
bmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgIEdzdFZp
ZGVvRnJhbWUgZGVzdGluYXRpb25GcmFtZTsKIAogICAgICAgICBpZiAoIWdzdF92aWRlb19mcmFt
ZV9tYXAoJnNvdXJjZUZyYW1lLCAmcHJpdi0+aW5mbywgYnVmZmVyLCBHU1RfTUFQX1JFQUQpKSB7
Ci0gICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgICAgICBnc3Rf
c2FtcGxlX3VucmVmKHByaXYtPnNhbXBsZSk7CiAgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVm
KG5ld0J1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZkZXN0aW5hdGlvbkZyYW1lLCAm
cHJpdi0+aW5mbywgbmV3QnVmZmVyLCBHU1RfTUFQX1dSSVRFKSkgewogICAgICAgICAgICAgZ3N0
X3ZpZGVvX2ZyYW1lX3VubWFwKCZzb3VyY2VGcmFtZSk7Ci0gICAgICAgICAgICBnc3RfYnVmZmVy
X3VucmVmKGJ1ZmZlcik7CiAgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmKG5ld0J1ZmZlcik7
CiAgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgICAgICAgIH0KQEAgLTIxNSw4
ICsyMTAsOCBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0
QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogCiAgICAgICAgIGdzdF92aWRlb19m
cmFtZV91bm1hcCgmc291cmNlRnJhbWUpOwogICAgICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAo
JmRlc3RpbmF0aW9uRnJhbWUpOwotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0g
ICAgICAgIGJ1ZmZlciA9IHByaXYtPmJ1ZmZlciA9IG5ld0J1ZmZlcjsKKyAgICAgICAgZ3N0X3Nh
bXBsZV91bnJlZihwcml2LT5zYW1wbGUpOworICAgICAgICBwcml2LT5zYW1wbGUgPSBnc3Rfc2Ft
cGxlX25ldyhuZXdCdWZmZXIsIHByaXYtPmN1cnJlbnRDYXBzLCAwLCAwKTsKICAgICB9CiAjZW5k
aWYKIApAQCAtMjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVv
U2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgcHJp
di0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2Via2l0VmlkZW9TaW5rVGltZW91
dENhbGxiYWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHN0ZDo6YmluZCh3ZWJraXRWaWRlb1Np
bmtUaW1lb3V0Q2FsbGJhY2ssIHNpbmspKSwgR19QUklPUklUWV9ERUZBVUxULAogICAgICAgICBb
c2lua10geyBnc3Rfb2JqZWN0X3VucmVmKHNpbmspOyB9KTsKIAotICAgIGdfY29uZF93YWl0KCZw
cml2LT5kYXRhQ29uZGl0aW9uLCAmcHJpdi0+YnVmZmVyTXV0ZXgpOworICAgIGdfY29uZF93YWl0
KCZwcml2LT5kYXRhQ29uZGl0aW9uLCAmcHJpdi0+c2FtcGxlTXV0ZXgpOwogICAgIHJldHVybiBH
U1RfRkxPV19PSzsKIH0KIApAQCAtMjM3LDMxICsyMzIsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0
VmlkZW9TaW5rRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHBh
cmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFZp
ZGVvU2lua0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1ldGVyU3BlYykKK3N0YXRpYyB2b2lkIHVubG9j
a1NhbXBsZU11dGV4KFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYpCiB7Ci0gICAgV2ViS2l0
VmlkZW9TaW5rKiBzaW5rID0gV0VCS0lUX1ZJREVPX1NJTksob2JqZWN0KTsKLSAgICBXZWJLaXRW
aWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKyAgICBHTXV0ZXhMb2NrZXI8R011
dGV4PiBsb2NrKHByaXYtPnNhbXBsZU11dGV4KTsKIAotICAgIHN3aXRjaCAocHJvcGVydHlJZCkg
ewotICAgIGNhc2UgUFJPUF9DQVBTOiB7Ci0gICAgICAgIEdzdENhcHMqIGNhcHMgPSBwcml2LT5j
dXJyZW50Q2FwczsKLSAgICAgICAgaWYgKGNhcHMpCi0gICAgICAgICAgICBnc3RfY2Fwc19yZWYo
Y2Fwcyk7Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9ib3hlZCh2YWx1ZSwgY2Fwcyk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwYXJhbWV0ZXJTcGVjKTsKLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHVubG9ja0J1ZmZlck11dGV4KFdlYktpdFZpZGVvU2lua1ByaXZh
dGUqIHByaXYpCi17Ci0gICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5idWZmZXJN
dXRleCk7Ci0KLSAgICBpZiAocHJpdi0+YnVmZmVyKSB7Ci0gICAgICAgIGdzdF9idWZmZXJfdW5y
ZWYocHJpdi0+YnVmZmVyKTsKLSAgICAgICAgcHJpdi0+YnVmZmVyID0gMDsKKyAgICBpZiAocHJp
di0+c2FtcGxlKSB7CisgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYocHJpdi0+c2FtcGxlKTsKKyAg
ICAgICAgcHJpdi0+c2FtcGxlID0gMDsKICAgICB9CiAKICAgICBwcml2LT51bmxvY2tlZCA9IHRy
dWU7CkBAIC0yNzMsNyArMjUwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1Vu
bG9jayhHc3RCYXNlU2luayogYmFzZVNpbmspCiB7CiAgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5r
ID0gV0VCS0lUX1ZJREVPX1NJTksoYmFzZVNpbmspOwogCi0gICAgdW5sb2NrQnVmZmVyTXV0ZXgo
c2luay0+cHJpdik7CisgICAgdW5sb2NrU2FtcGxlTXV0ZXgoc2luay0+cHJpdik7CiAKICAgICBy
ZXR1cm4gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVChHU1RfQkFTRV9TSU5LX0NMQVNTLCB1
bmxvY2ssIChiYXNlU2luayksIFRSVUUpOwogfQpAQCAtMjgzLDcgKzI2MCw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRWaWRlb1NpbmtVbmxvY2tTdG9wKEdzdEJhc2VTaW5rKiBiYXNlU2luaykK
ICAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJREVPX1NJTksoYmFz
ZVNpbmspLT5wcml2OwogCiAgICAgewotICAgICAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2Nr
KHByaXYtPmJ1ZmZlck11dGV4KTsKKyAgICAgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhw
cml2LT5zYW1wbGVNdXRleCk7CiAgICAgICAgIHByaXYtPnVubG9ja2VkID0gZmFsc2U7CiAgICAg
fQogCkBAIC0yOTQsNyArMjcxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1N0
b3AoR3N0QmFzZVNpbmsqIGJhc2VTaW5rKQogewogICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUq
IHByaXYgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2luayktPnByaXY7CiAKLSAgICB1bmxvY2tC
dWZmZXJNdXRleChwcml2KTsKKyAgICB1bmxvY2tTYW1wbGVNdXRleChwcml2KTsKIAogICAgIGlm
IChwcml2LT5jdXJyZW50Q2FwcykgewogICAgICAgICBnc3RfY2Fwc191bnJlZihwcml2LT5jdXJy
ZW50Q2Fwcyk7CkBAIC0zMDgsNyArMjg1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVv
U2lua1N0YXJ0KEdzdEJhc2VTaW5rKiBiYXNlU2luaykKIHsKICAgICBXZWJLaXRWaWRlb1NpbmtQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJREVPX1NJTksoYmFzZVNpbmspLT5wcml2OwogCi0gICAg
R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5idWZmZXJNdXRleCk7CisgICAgR011dGV4
TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5zYW1wbGVNdXRleCk7CiAgICAgcHJpdi0+dW5sb2Nr
ZWQgPSBmYWxzZTsKICAgICByZXR1cm4gVFJVRTsKIH0KQEAgLTM2Myw3ICszNDAsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNz
KiBrbGFzcykKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJL
aXRWaWRlb1NpbmtQcml2YXRlKSk7CiAKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Vi
a2l0VmlkZW9TaW5rRmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3
ZWJraXRWaWRlb1NpbmtHZXRQcm9wZXJ0eTsKIAogICAgIGJhc2VTaW5rQ2xhc3MtPnVubG9jayA9
IHdlYmtpdFZpZGVvU2lua1VubG9jazsKICAgICBiYXNlU2lua0NsYXNzLT51bmxvY2tfc3RvcCA9
IHdlYmtpdFZpZGVvU2lua1VubG9ja1N0b3A7CkBAIC0zNzQsOSArMzUwLDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xh
c3MpCiAgICAgYmFzZVNpbmtDbGFzcy0+c2V0X2NhcHMgPSB3ZWJraXRWaWRlb1NpbmtTZXRDYXBz
OwogICAgIGJhc2VTaW5rQ2xhc3MtPnByb3Bvc2VfYWxsb2NhdGlvbiA9IHdlYmtpdFZpZGVvU2lu
a1Byb3Bvc2VBbGxvY2F0aW9uOwogCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0Q2xhc3MsIFBST1BfQ0FQUywKLSAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJj
dXJyZW50LWNhcHMiLCAiQ3VycmVudC1DYXBzIiwgIkN1cnJlbnQgY2FwcyIsIEdTVF9UWVBFX0NB
UFMsIEdfUEFSQU1fUkVBREFCTEUpKTsKLQogICAgIHdlYmtpdFZpZGVvU2lua1NpZ25hbHNbUkVQ
QUlOVF9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJyZXBhaW50LXJlcXVlc3RlZCIsCiAgICAg
ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHU2lnbmFsRmxhZ3M+KEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKQEAg
LTM4Niw3ICszNTksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0
KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFy
c2hhbF9nZW5lcmljLAogICAgICAgICAgICAgR19UWVBFX05PTkUsIC8vIFJldHVybiB0eXBlCiAg
ICAgICAgICAgICAxLCAvLyBPbmx5IG9uZSBwYXJhbWV0ZXIKLSAgICAgICAgICAgIEdTVF9UWVBF
X0JVRkZFUik7CisgICAgICAgICAgICBHU1RfVFlQRV9TQU1QTEUpOwogfQogCiAKLS0gCjIuMS4w
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240485</attachid>
            <date>2014-10-27 10:08:15 -0700</date>
            <delta_ts>2014-10-27 10:30:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>21910</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4NjY1YTllM2ZmYjkwN2UyZGM2ZmRhNmZkM2M2MmU0YzQ2YjRjY2M4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI0IE9jdCAyMDE0IDEyOjEwOjE3ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCA1MSArKysrKysrKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlR1N0cmVhbWVyLmggICB8ICA2ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyQ2Fpcm8uY3BwICAgICB8ICA0ICstCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwICB8IDYzICsrKysrKystLS0tLS0tLS0KIC4uLi9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oICAgIHwgIDkgKy0tCiAuLi4v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgICAgICB8IDg1ICsrKysr
KysrLS0tLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDEw
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJiMGI3Zi4uYTAxYjAwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU0IEBACisyMDE0LTEwLTI0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBWaWRlbyByZXNvbHV0aW9uIGNo
YW5nZXMgdHJpZ2dlciBhIGNyYXNoIGluIHRoZSBUZXh0dXJlTWFwcGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwNjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdG8gR3N0U2FtcGxlIGZv
ciBidWZmZXIrY2FwcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIHZpZGVvIHNp
bmsgYW5kIHRoZSBwbGF5ZXIuIFVzaW5nIGEgc2luZ2xlIG9iamVjdCB0eXBlIGZvciB0aGlzCisg
ICAgICAgIGF2b2lkIGlzc3VlcyB3aGVyZSB0aGUgY2FwcyBtaWdodCBub3QgY29ycmVjdGx5IGRl
c2NyaWJlIHRoZQorICAgICAgICBidWZmZXIgY29udGVudHMgYW55bW9yZSwgZm9yIGV4YW1wbGUg
d2hlbiB0aGUgdmlkZW8gcmVzb2x1dGlvbiBpcworICAgICAgICBjaGFuZ2VkLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6IFVzZSBHc3RT
YW1wbGUKKyAgICAgICAgaW5zdGVhZCBvZiBHc3RCdWZmZXIrR3N0Q2Fwcy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwOiBEaXR0by4KKyAgICAg
ICAgKEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKTogVGhl
IHJlcGFpbnQgc2lnbmFsCisgICAgICAgIG5vdyB1c2VzIGEgR3N0U2FtcGxlIGluc3RlYWQgb2Yg
YSBHc3RCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgU3RvcmUg
dGhlIGN1cnJlbnQgc2FtcGxlIGluc3RlYWQgb2YgYSBidWZmZXIuIEFsc28gcmVuYW1lZCB0aGUK
KyAgICAgICAgbXV0ZXggcHJvdGVjdGluZyBhY2Nlc3MgdG8gdGhlIHNhbXBsZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6IFJldHVybgorICAgICAgICBlYXJs
eSBpZiBubyBzYW1wbGUgaXMgYXZhaWxhYmxlLiBUaGUgY2FwcyB1c2VkIHRvIGdldCB0aGUgdmlk
ZW8KKyAgICAgICAgc2l6ZSBhcmUgc3RvcmUgaW4gdGhlIHNhbXBsZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOiBVc2UK
KyAgICAgICAgR3N0U2FtcGxlIGluc3RlYWQgb2YgR3N0QnVmZmVyLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
aW50KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDogTm93IHN0b3JlIGEKKyAgICAgICAg
R3N0U2FtcGxlIGludGVybmFsbHkuIEFsc28gcmVtb3ZlZCB0aGUgbm93IHVzZWxlc3MgY3VycmVu
dC1jYXBzIHByb3BlcnR5LgorICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGU6Ol9XZWJL
aXRWaWRlb1NpbmtQcml2YXRlKTogUmVuYW1lZCB0aGUKKyAgICAgICAgbXV0ZXggcHJvdGVjdGlu
ZyBhY2Nlc3MgdG8gdGhlIHNhbXBsZS4KKyAgICAgICAgKF9XZWJLaXRWaWRlb1NpbmtQcml2YXRl
Ojp+X1dlYktpdFZpZGVvU2lua1ByaXZhdGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF92aWRl
b19zaW5rX2luaXQpOiBEaXNhYmxlIGxhc3Qtc2FtcGxlIGluIGJhc2VzaW5rIHNpbmNlIHdlCisg
ICAgICAgIGFscmVhZHkgc3RvcmUgb25lIGluIG91ciBzaW5rIGFueXdheS4KKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayk6IFN3aXRjaCB0byBHc3RTYW1wbGUuCisgICAg
ICAgICh3ZWJraXRWaWRlb1NpbmtSZW5kZXIpOiBEaXR0by4KKyAgICAgICAgKHVubG9ja1NhbXBs
ZU11dGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtVbmxvY2spOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1VubG9ja1N0b3ApOiBEaXR0by4KKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1N0b3ApOiBEaXR0byEKKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1N0YXJ0
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KTogRHJvcCBj
dXJyZW50LWNhcHMgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtHZXRQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgICh1bmxvY2tCdWZmZXJNdXRleCk6IERlbGV0ZWQuCisKIDIw
MTQtMTAtMjYgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEltYWdlcyB3aXRoIHVzZW1hcCBzaG91bGQgbm90IGhhdmUgYSBsaW5rIHN0YXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCmluZGV4IGM5ZDJmYjQuLjM5MzFhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lci5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0
cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShH
c3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUltYWdlKEdzdFNhbXBsZSogc2FtcGxlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKGJ1ZmZl
ciwgY2FwcykpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUdTdHJlYW1l
cihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIApAQCAt
NjAsNyArNjAsNyBAQCBjbGFzcyBJbWFnZUdTdHJlYW1lciA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlR1N0cmVhbWVyPiB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEltYWdl
R1N0cmVhbWVyKEdzdEJ1ZmZlciosIEdzdENhcHMqKTsKKyAgICAgICAgSW1hZ2VHU3RyZWFtZXIo
R3N0U2FtcGxlKik7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKICAgICAg
ICAgRmxvYXRSZWN0IG1fY3JvcFJlY3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJv
LmNwcAppbmRleCBiMTUzZjA5Li4wNmZhZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVy
Q2Fpcm8uY3BwCkBAIC0zMiw4ICszMiw5IEBACiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLUltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RC
dWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKK0ltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJl
YW1lcihHc3RTYW1wbGUqIHNhbXBsZSkKIHsKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBs
ZV9nZXRfY2FwcyhzYW1wbGUpOwogICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CiAgICAgZ3N0
X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zy
b21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKQEAgLTQyLDYgKzQzLDcgQEAgSW1hZ2VHU3RyZWFt
ZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQogICAg
IC8vIFJpZ2h0IG5vdyB0aGUgVGV4dHVyZU1hcHBlciBvbmx5IHN1cHBvcnRzIGNocm9tYXMgd2l0
aCBvbmUgcGxhbmUKICAgICBBU1NFUlQoR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvSW5m
bykgPT0gMSk7CiAKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZl
cihzYW1wbGUpOwogICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmbV92aWRlb0ZyYW1lLCAm
dmlkZW9JbmZvLCBidWZmZXIsIEdTVF9NQVBfUkVBRCkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmlu
ZGV4IGQxNzliZDQuLjUxMjYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgc3RhdGljIHZvaWQg
bWVkaWFQbGF5ZXJQcml2YXRlTXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgR1BhcmFtU3Bl
YyosIE1lZGlhUGwKICAgICBwbGF5ZXItPm11dGVDaGFuZ2VkKCk7CiB9CiAKLXN0YXRpYyB2b2lk
IG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RC
dWZmZXIgKmJ1ZmZlciwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyUHJp
dmF0ZSkKK3N0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJL
aXRWaWRlb1NpbmsqLCBHc3RTYW1wbGUqIHNhbXBsZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZSogcGxheWVyUHJpdmF0ZSkKIHsKLSAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2VyUmVw
YWludChidWZmZXIpOworICAgIHBsYXllclByaXZhdGUtPnRyaWdnZXJSZXBhaW50KHNhbXBsZSk7
CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBsYXllcikKQEAgLTg5LDEyICs4OSwxMiBAQCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9mcHNTaW5rKDApCiAgICAgLCBtX3JlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQogICAgICwgbV9uZXR3b3JrU3RhdGUoTWVk
aWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9idWZmZXIoMCkKKyAgICAsIG1fc2FtcGxlKDApCiAg
ICAgLCBtX3JlcGFpbnRIYW5kbGVyKDApCiAgICAgLCBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIoMCkK
ICAgICAsIG1fbXV0ZVNpZ25hbEhhbmRsZXIoMCkKIHsKLSAgICBnX211dGV4X2luaXQoJm1fYnVm
ZmVyTXV0ZXgpOworICAgIGdfbXV0ZXhfaW5pdCgmbV9zYW1wbGVNdXRleCk7CiB9CiAKIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlKCkKQEAgLTEwNCwxMSArMTA0LDExIEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKICAgICAgICAgbV9yZXBhaW50
SGFuZGxlciA9IDA7CiAgICAgfQogCi0gICAgZ19tdXRleF9jbGVhcigmbV9idWZmZXJNdXRleCk7
CisgICAgZ19tdXRleF9jbGVhcigmbV9zYW1wbGVNdXRleCk7CiAKLSAgICBpZiAobV9idWZmZXIp
Ci0gICAgICAgIGdzdF9idWZmZXJfdW5yZWYobV9idWZmZXIpOwotICAgIG1fYnVmZmVyID0gMDsK
KyAgICBpZiAobV9zYW1wbGUpCisgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYobV9zYW1wbGUpOwor
ICAgIG1fc2FtcGxlID0gMDsKIAogICAgIG1fcGxheWVyID0gMDsKIApAQCAtMTM3LDcgKzEzNywx
MSBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXpl
KCkgY29uc3QKICAgICBpZiAoIW1fdmlkZW9TaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG1fdmlkZW9TaXplOwogCi0gICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVv
U2lua0NhcHMoKTsKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgp
OworICAgIGlmICghbV9zYW1wbGUpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICBH
UmVmUHRyPEdzdENhcHM+IGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlKTsKICAg
ICBpZiAoIWNhcHMpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKQEAgLTI3NSwxMSArMjc5
LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWQo
KQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQogewotICAg
IEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9idWZmZXJNdXRleCk7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAg
IGlmICghbV9zYW1wbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgR1JlZlB0cjxH
c3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVvU2lua0NhcHMoKTsKKyAgICBHUmVmUHRyPEdzdENh
cHM+IGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlKTsKICAgICBpZiAoIWNhcHMp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTAsMTAgKzI5NCwxMSBAQCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0
ZVRleHR1cmUoVGV4dHVyZQogCiAgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9f
SU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8p
KTsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmFj
cXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRl
b0luZm8pID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5v
RmxhZyk7CisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9z
YW1wbGUpOwogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICAgICBHc3RWaWRlb0dM
VGV4dHVyZVVwbG9hZE1ldGEqIG1ldGE7Ci0gICAgaWYgKChtZXRhID0gZ3N0X2J1ZmZlcl9nZXRf
dmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YShtX2J1ZmZlcikpKSB7CisgICAgaWYgKChtZXRh
ID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YShidWZmZXIpKSkg
ewogICAgICAgICBpZiAobWV0YS0+bl90ZXh0dXJlcyA9PSAxKSB7IC8vIEJSR3ggJiBCR1JBIGZv
cm1hdHMgdXNlIG9ubHkgb25lIHRleHR1cmUuCiAgICAgICAgICAgICBjb25zdCBCaXRtYXBUZXh0
dXJlR0wqIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KHRl
eHR1cmUuZ2V0KCkpOwogICAgICAgICAgICAgZ3VpbnQgaWRzWzRdID0geyB0ZXh0dXJlR0wtPmlk
KCksIDAsIDAsIDAgfTsKQEAgLTMwOCw3ICszMTMsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVy
ZQogICAgIEFTU0VSVChHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9JbmZvKSA9PSAxKTsK
IAogICAgIEdzdFZpZGVvRnJhbWUgdmlkZW9GcmFtZTsKLSAgICBpZiAoIWdzdF92aWRlb19mcmFt
ZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLCBHU1RfTUFQX1JFQUQpKQor
ICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVm
ZmVyLCBHU1RfTUFQX1JFQUQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGludCBz
dHJpZGUgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFKCZ2aWRlb0ZyYW1lLCAwKTsKQEAg
LTMyMCwxMyArMzI1LDE1IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlCiB9CiAjZW5kaWYKIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChHc3RC
dWZmZXIqIGJ1ZmZlcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJp
Z2dlclJlcGFpbnQoR3N0U2FtcGxlKiBzYW1wbGUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChH
U1RfSVNfQlVGRkVSKGJ1ZmZlcikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1NUX0lTX1NBTVBM
RShzYW1wbGUpKTsKIAogICAgIHsKLSAgICAgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayht
X2J1ZmZlck11dGV4KTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlKCZtX2J1ZmZlciwgYnVm
ZmVyKTsKKyAgICAgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsK
KyAgICAgICAgaWYgKG1fc2FtcGxlKQorICAgICAgICAgICAgZ3N0X3NhbXBsZV91bnJlZihtX3Nh
bXBsZSk7CisgICAgICAgIG1fc2FtcGxlID0gZ3N0X3NhbXBsZV9yZWYoc2FtcGxlKTsKICAgICB9
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCkBAIC0zNTcsMTUgKzM2NCwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UgogICAgIGlm
ICghbV9wbGF5ZXItPnZpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR011dGV4TG9j
a2VyPEdNdXRleD4gbG9jayhtX2J1ZmZlck11dGV4KTsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9T
aW5rQ2FwcygpOwotICAgIGlmICghY2FwcykKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2Nr
KG1fc2FtcGxlTXV0ZXgpOworICAgIGlmICghbV9zYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJlZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3Jl
YXRlSW1hZ2UobV9idWZmZXIsIGNhcHMuZ2V0KCkpOworICAgIFJlZlB0cjxJbWFnZUdTdHJlYW1l
cj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9zYW1wbGUpOwogICAg
IGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDA5LDE2ICs0MTIsNiBAQCBN
ZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojptb3ZpZUxvYWRUeXBlKCkgY29ucwogICAgIHJldHVybiBNZWRpYVBsYXllcjo6RG93bmxvYWQ7
CiB9CiAKLUdSZWZQdHI8R3N0Q2Fwcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
Y3VycmVudFZpZGVvU2lua0NhcHMoKSBjb25zdAotewotICAgIGlmICghbV93ZWJraXRWaWRlb1Np
bmspCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgR1JlZlB0cjxHc3RDYXBzPiBjdXJy
ZW50Q2FwczsKLSAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QobV93ZWJraXRWaWRlb1NpbmsuZ2V0
KCkpLCAiY3VycmVudC1jYXBzIiwgJmN1cnJlbnRDYXBzLm91dFB0cigpLCBOVUxMKTsKLSAgICBy
ZXR1cm4gY3VycmVudENhcHM7Ci19Ci0KIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2luaygpCiB7CiAgICAgQVNTRVJUKGluaXRpYWxpemVH
U3RyZWFtZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAppbmRleCA0NjBlODYxLi5lYTg0OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKLXR5cGVkZWYg
c3RydWN0IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFNhbXBsZSBH
c3RTYW1wbGU7CiB0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50OwogdHlwZWRl
ZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTdHJl
YW1Wb2x1bWUgR3N0U3RyZWFtVm9sdW1lOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CiAK
LSAgICB2b2lkIHRyaWdnZXJSZXBhaW50KEdzdEJ1ZmZlciopOworICAgIHZvaWQgdHJpZ2dlclJl
cGFpbnQoR3N0U2FtcGxlKik7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMTAsNyArMTEwLDYgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIq
KTsKICAgICB2aXJ0dWFsIEdzdEVsZW1lbnQqIGNyZWF0ZVZpZGVvU2luaygpOwotICAgIEdSZWZQ
dHI8R3N0Q2Fwcz4gY3VycmVudFZpZGVvU2lua0NhcHMoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
U3RyZWFtVm9sdW1lRWxlbWVudChHc3RTdHJlYW1Wb2x1bWUqKTsKICAgICB2aXJ0dWFsIEdzdEVs
ZW1lbnQqIGNyZWF0ZUF1ZGlvU2luaygpIHsgcmV0dXJuIDA7IH0KQEAgLTEyMyw4ICsxMjIsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwog
ICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgSW50U2l6
ZSBtX3NpemU7Ci0gICAgR011dGV4IG1fYnVmZmVyTXV0ZXg7Ci0gICAgR3N0QnVmZmVyKiBtX2J1
ZmZlcjsKKyAgICBtdXRhYmxlIEdNdXRleCBtX3NhbXBsZU11dGV4OworICAgIEdzdFNhbXBsZSog
bV9zYW1wbGU7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX3ZvbHVtZVRpbWVySGFu
ZGxlcjsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fbXV0ZVRpbWVySGFuZGxlcjsK
ICAgICB1bnNpZ25lZCBsb25nIG1fcmVwYWludEhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwCmluZGV4IDdjYjE5M2UuLjI1NWU3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwCkBAIC02NiwzMCArNjYsMjUgQEAgZW51bSB7CiAgICAgTEFTVF9TSUdO
QUwKIH07CiAKLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX0NBUFMKLX07Ci0KIHN0YXRp
YyBndWludCB3ZWJraXRWaWRlb1NpbmtTaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAog
c3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICBfV2ViS2l0VmlkZW9TaW5rUHJp
dmF0ZSgpCiAgICAgewotICAgICAgICBnX211dGV4X2luaXQoJmJ1ZmZlck11dGV4KTsKKyAgICAg
ICAgZ19tdXRleF9pbml0KCZzYW1wbGVNdXRleCk7CiAgICAgICAgIGdfY29uZF9pbml0KCZkYXRh
Q29uZGl0aW9uKTsKICAgICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CiAgICAgfQog
CiAgICAgfl9XZWJLaXRWaWRlb1NpbmtQcml2YXRlKCkKICAgICB7Ci0gICAgICAgIGdfbXV0ZXhf
Y2xlYXIoJmJ1ZmZlck11dGV4KTsKKyAgICAgICAgZ19tdXRleF9jbGVhcigmc2FtcGxlTXV0ZXgp
OwogICAgICAgICBnX2NvbmRfY2xlYXIoJmRhdGFDb25kaXRpb24pOwogICAgIH0KIAotICAgIEdz
dEJ1ZmZlciogYnVmZmVyOworICAgIEdzdFNhbXBsZSogc2FtcGxlOwogICAgIEdUaHJlYWRTYWZl
TWFpbkxvb3BTb3VyY2UgdGltZW91dFNvdXJjZTsKLSAgICBHTXV0ZXggYnVmZmVyTXV0ZXg7Cisg
ICAgR011dGV4IHNhbXBsZU11dGV4OwogICAgIEdDb25kIGRhdGFDb25kaXRpb247CiAKICAgICBH
c3RWaWRlb0luZm8gaW5mbzsKQEAgLTEwMyw3ICs5OCw3IEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9T
aW5rUHJpdmF0ZSB7CiAgICAgLy8gZXZlcnl0aGluZyBlbHNlIGlzbid0IHJ1bm5pbmcgYW55bW9y
ZS4gVGhpcyB3aWxsIGxlYWQKICAgICAvLyB0byBkZWFkbG9ja3MgYmVjYXVzZSByZW5kZXIoKSBo
b2xkcyB0aGUgc3RyZWFtIGxvY2suCiAgICAgLy8KLSAgICAvLyBQcm90ZWN0ZWQgYnkgdGhlIGJ1
ZmZlciBtdXRleAorICAgIC8vIFByb3RlY3RlZCBieSB0aGUgc2FtcGxlIG11dGV4CiAgICAgYm9v
bCB1bmxvY2tlZDsKIH07CiAKQEAgLTExNCw2ICsxMDksNyBAQCBHX0RFRklORV9UWVBFX1dJVEhf
Q09ERShXZWJLaXRWaWRlb1NpbmssIHdlYmtpdF92aWRlb19zaW5rLCBHU1RfVFlQRV9WSURFT19T
SU5LLAogc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfaW5pdChXZWJLaXRWaWRlb1Npbmsq
IHNpbmspCiB7CiAgICAgc2luay0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShz
aW5rLCBXRUJLSVRfVFlQRV9WSURFT19TSU5LLCBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKTsKKyAg
ICBnX29iamVjdF9zZXQoR1NUX0JBU0VfU0lOSyhzaW5rKSwgImVuYWJsZS1sYXN0LXNhbXBsZSIs
IEZBTFNFLCBOVUxMKTsKICAgICBuZXcgKHNpbmstPnByaXYpIFdlYktpdFZpZGVvU2lua1ByaXZh
dGUoKTsKIH0KIApAQCAtMTIxLDE3ICsxMTcsMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0VmlkZW9T
aW5rVGltZW91dENhbGxiYWNrKFdlYktpdFZpZGVvU2luayogc2luaykKIHsKICAgICBXZWJLaXRW
aWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKIAotICAgIEdNdXRleExvY2tlcjxH
TXV0ZXg+IGxvY2socHJpdi0+YnVmZmVyTXV0ZXgpOwotICAgIEdzdEJ1ZmZlciogYnVmZmVyID0g
cHJpdi0+YnVmZmVyOwotICAgIHByaXYtPmJ1ZmZlciA9IDA7CisgICAgR011dGV4TG9ja2VyPEdN
dXRleD4gbG9jayhwcml2LT5zYW1wbGVNdXRleCk7CisgICAgR3N0U2FtcGxlKiBzYW1wbGUgPSBw
cml2LT5zYW1wbGU7CisgICAgcHJpdi0+c2FtcGxlID0gMDsKIAotICAgIGlmICghYnVmZmVyIHx8
IHByaXYtPnVubG9ja2VkIHx8IFVOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1ZmZlcikpKSB7Cisg
ICAgaWYgKCFzYW1wbGUgfHwgcHJpdi0+dW5sb2NrZWQgfHwgVU5MSUtFTFkoIUdTVF9JU19TQU1Q
TEUoc2FtcGxlKSkpIHsKICAgICAgICAgZ19jb25kX3NpZ25hbCgmcHJpdi0+ZGF0YUNvbmRpdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX3NpZ25hbF9lbWl0KHNpbmssIHdl
YmtpdFZpZGVvU2lua1NpZ25hbHNbUkVQQUlOVF9SRVFVRVNURURdLCAwLCBidWZmZXIpOwotICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICBnX3NpZ25hbF9lbWl0KHNpbmssIHdlYmtp
dFZpZGVvU2lua1NpZ25hbHNbUkVQQUlOVF9SRVFVRVNURURdLCAwLCBzYW1wbGUpOworICAgIGdz
dF9zYW1wbGVfdW5yZWYoc2FtcGxlKTsKICAgICBnX2NvbmRfc2lnbmFsKCZwcml2LT5kYXRhQ29u
ZGl0aW9uKTsKIH0KIApAQCAtMTQwLDE3ICsxMzYsMTcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4g
d2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBi
dWYKICAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2lu
ayk7CiAgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CiAKLSAg
ICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmJ1ZmZlck11dGV4KTsKKyAgICBHTXV0
ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPnNhbXBsZU11dGV4KTsKIAogICAgIGlmIChwcml2
LT51bmxvY2tlZCkKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogCi0gICAgcHJpdi0+YnVm
ZmVyID0gZ3N0X2J1ZmZlcl9yZWYoYnVmZmVyKTsKKyAgICBwcml2LT5zYW1wbGUgPSBnc3Rfc2Ft
cGxlX25ldyhidWZmZXIsIHByaXYtPmN1cnJlbnRDYXBzLCAwLCAwKTsKIAogICAgIC8vIFRoZSB2
aWRlbyBpbmZvIHN0cnVjdHVyZSBpcyB2YWxpZCBvbmx5IGlmIHRoZSBzaW5rIGhhbmRsZWQgYW4g
YWxsb2NhdGlvbiBxdWVyeS4KICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQgPSBHU1RfVklERU9f
SU5GT19GT1JNQVQoJnByaXYtPmluZm8pOwogICAgIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVPX0ZP
Uk1BVF9VTktOT1dOKSB7Ci0gICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICAg
ICAgZ3N0X3NhbXBsZV91bnJlZihwcml2LT5zYW1wbGUpOwogICAgICAgICByZXR1cm4gR1NUX0ZM
T1dfRVJST1I7CiAgICAgfQogCkBAIC0xNzksMTMgKzE3NSwxMiBAQCBzdGF0aWMgR3N0Rmxvd1Jl
dHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZm
ZXIqIGJ1ZgogICAgICAgICBHc3RWaWRlb0ZyYW1lIGRlc3RpbmF0aW9uRnJhbWU7CiAKICAgICAg
ICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZzb3VyY2VGcmFtZSwgJnByaXYtPmluZm8sIGJ1
ZmZlciwgR1NUX01BUF9SRUFEKSkgewotICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZm
ZXIpOworICAgICAgICAgICAgZ3N0X3NhbXBsZV91bnJlZihwcml2LT5zYW1wbGUpOwogICAgICAg
ICAgICAgZ3N0X2J1ZmZlcl91bnJlZihuZXdCdWZmZXIpOwogICAgICAgICAgICAgcmV0dXJuIEdT
VF9GTE9XX0VSUk9SOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21h
cCgmZGVzdGluYXRpb25GcmFtZSwgJnByaXYtPmluZm8sIG5ld0J1ZmZlciwgR1NUX01BUF9XUklU
RSkpIHsKICAgICAgICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmc291cmNlRnJhbWUpOwot
ICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwogICAgICAgICAgICAgZ3N0X2J1
ZmZlcl91bnJlZihuZXdCdWZmZXIpOwogICAgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9S
OwogICAgICAgICB9CkBAIC0yMTUsOCArMjEwLDggQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Vi
a2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYK
IAogICAgICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnNvdXJjZUZyYW1lKTsKICAgICAgICAg
Z3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZkZXN0aW5hdGlvbkZyYW1lKTsKLSAgICAgICAgZ3N0X2J1
ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICBidWZmZXIgPSBwcml2LT5idWZmZXIgPSBuZXdC
dWZmZXI7CisgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYocHJpdi0+c2FtcGxlKTsKKyAgICAgICAg
cHJpdi0+c2FtcGxlID0gZ3N0X3NhbXBsZV9uZXcobmV3QnVmZmVyLCBwcml2LT5jdXJyZW50Q2Fw
cywgMCwgMCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTIyNyw3ICsyMjIsNyBAQCBzdGF0aWMgR3N0
Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBH
c3RCdWZmZXIqIGJ1ZgogICAgIHByaXYtPnRpbWVvdXRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRd
IHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihz
dGQ6OmJpbmQod2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrLCBzaW5rKSksIEdfUFJJT1JJ
VFlfREVGQVVMVCwKICAgICAgICAgW3NpbmtdIHsgZ3N0X29iamVjdF91bnJlZihzaW5rKTsgfSk7
CiAKLSAgICBnX2NvbmRfd2FpdCgmcHJpdi0+ZGF0YUNvbmRpdGlvbiwgJnByaXYtPmJ1ZmZlck11
dGV4KTsKKyAgICBnX2NvbmRfd2FpdCgmcHJpdi0+ZGF0YUNvbmRpdGlvbiwgJnByaXYtPnNhbXBs
ZU11dGV4KTsKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKQEAgLTIzNywzMSArMjMyLDEz
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
ICAgICBHX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQog
Ci1zdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtZXRlclNw
ZWMpCitzdGF0aWMgdm9pZCB1bmxvY2tTYW1wbGVNdXRleChXZWJLaXRWaWRlb1NpbmtQcml2YXRl
KiBwcml2KQogewotICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IFdFQktJVF9WSURFT19TSU5L
KG9iamVjdCk7Ci0gICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7
CisgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5zYW1wbGVNdXRleCk7CiAKLSAg
ICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfQ0FQUzogewotICAgICAgICBH
c3RDYXBzKiBjYXBzID0gcHJpdi0+Y3VycmVudENhcHM7Ci0gICAgICAgIGlmIChjYXBzKQotICAg
ICAgICAgICAgZ3N0X2NhcHNfcmVmKGNhcHMpOwotICAgICAgICBnX3ZhbHVlX3Rha2VfYm94ZWQo
dmFsdWUsIGNhcHMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwg
cGFyYW1ldGVyU3BlYyk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB1bmxvY2tCdWZmZXJNdXRl
eChXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2KQotewotICAgIEdNdXRleExvY2tlcjxHTXV0
ZXg+IGxvY2socHJpdi0+YnVmZmVyTXV0ZXgpOwotCi0gICAgaWYgKHByaXYtPmJ1ZmZlcikgewot
ICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHByaXYtPmJ1ZmZlcik7Ci0gICAgICAgIHByaXYtPmJ1
ZmZlciA9IDA7CisgICAgaWYgKHByaXYtPnNhbXBsZSkgeworICAgICAgICBnc3Rfc2FtcGxlX3Vu
cmVmKHByaXYtPnNhbXBsZSk7CisgICAgICAgIHByaXYtPnNhbXBsZSA9IDA7CiAgICAgfQogCiAg
ICAgcHJpdi0+dW5sb2NrZWQgPSB0cnVlOwpAQCAtMjczLDcgKzI1MCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRWaWRlb1NpbmtVbmxvY2soR3N0QmFzZVNpbmsqIGJhc2VTaW5rKQogewogICAg
IFdlYktpdFZpZGVvU2luayogc2luayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKTsKIAot
ICAgIHVubG9ja0J1ZmZlck11dGV4KHNpbmstPnByaXYpOworICAgIHVubG9ja1NhbXBsZU11dGV4
KHNpbmstPnByaXYpOwogCiAgICAgcmV0dXJuIEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQo
R1NUX0JBU0VfU0lOS19DTEFTUywgdW5sb2NrLCAoYmFzZVNpbmspLCBUUlVFKTsKIH0KQEAgLTI4
Myw3ICsyNjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rVW5sb2NrU3RvcChH
c3RCYXNlU2luayogYmFzZVNpbmspCiAgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKS0+cHJpdjsKIAogICAgIHsKLSAgICAgICAgR011
dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5idWZmZXJNdXRleCk7CisgICAgICAgIEdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+c2FtcGxlTXV0ZXgpOwogICAgICAgICBwcml2LT51
bmxvY2tlZCA9IGZhbHNlOwogICAgIH0KIApAQCAtMjk0LDcgKzI3MSw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRWaWRlb1NpbmtTdG9wKEdzdEJhc2VTaW5rKiBiYXNlU2luaykKIHsKICAgICBX
ZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJREVPX1NJTksoYmFzZVNpbmsp
LT5wcml2OwogCi0gICAgdW5sb2NrQnVmZmVyTXV0ZXgocHJpdik7CisgICAgdW5sb2NrU2FtcGxl
TXV0ZXgocHJpdik7CiAKICAgICBpZiAocHJpdi0+Y3VycmVudENhcHMpIHsKICAgICAgICAgZ3N0
X2NhcHNfdW5yZWYocHJpdi0+Y3VycmVudENhcHMpOwpAQCAtMzA4LDcgKzI4NSw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtTdGFydChHc3RCYXNlU2luayogYmFzZVNpbmspCiB7
CiAgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9WSURFT19TSU5LKGJh
c2VTaW5rKS0+cHJpdjsKIAotICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+YnVm
ZmVyTXV0ZXgpOworICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+c2FtcGxlTXV0
ZXgpOwogICAgIHByaXYtPnVubG9ja2VkID0gZmFsc2U7CiAgICAgcmV0dXJuIFRSVUU7CiB9CkBA
IC0zNjMsNyArMzQwLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5p
dChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSkpOwogCiAgICAgZ29iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFZpZGVvU2lua0ZpbmFsaXplOwotICAgIGdvYmplY3RD
bGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VmlkZW9TaW5rR2V0UHJvcGVydHk7CiAKICAgICBi
YXNlU2lua0NsYXNzLT51bmxvY2sgPSB3ZWJraXRWaWRlb1NpbmtVbmxvY2s7CiAgICAgYmFzZVNp
bmtDbGFzcy0+dW5sb2NrX3N0b3AgPSB3ZWJraXRWaWRlb1NpbmtVbmxvY2tTdG9wOwpAQCAtMzc0
LDkgKzM1MCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2Vi
S2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogICAgIGJhc2VTaW5rQ2xhc3MtPnNldF9jYXBzID0g
d2Via2l0VmlkZW9TaW5rU2V0Q2FwczsKICAgICBiYXNlU2lua0NsYXNzLT5wcm9wb3NlX2FsbG9j
YXRpb24gPSB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbjsKIAotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLCBQUk9QX0NBUFMsCi0gICAgICAg
IGdfcGFyYW1fc3BlY19ib3hlZCgiY3VycmVudC1jYXBzIiwgIkN1cnJlbnQtQ2FwcyIsICJDdXJy
ZW50IGNhcHMiLCBHU1RfVFlQRV9DQVBTLCBHX1BBUkFNX1JFQURBQkxFKSk7Ci0KICAgICB3ZWJr
aXRWaWRlb1NpbmtTaWduYWxzW1JFUEFJTlRfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygicmVw
YWludC1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1NpZ25hbEZsYWdzPihHX1NJR05BTF9SVU5fTEFTVCB8
IEdfU0lHTkFMX0FDVElPTiksCkBAIC0zODYsNyArMzU5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiAgICAg
ICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKICAgICAgICAgICAgIEdfVFlQRV9O
T05FLCAvLyBSZXR1cm4gdHlwZQogICAgICAgICAgICAgMSwgLy8gT25seSBvbmUgcGFyYW1ldGVy
Ci0gICAgICAgICAgICBHU1RfVFlQRV9CVUZGRVIpOworICAgICAgICAgICAgR1NUX1RZUEVfU0FN
UExFKTsKIH0KIAogCi0tIAoyLjEuMA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240486</attachid>
            <date>2014-10-27 10:30:41 -0700</date>
            <delta_ts>2014-10-29 08:50:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>22607</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0NTgzNzFjN2VlNjIzMDQzNTU1NWY0MmQzNzQwYWY3N2QzZjM3MGUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI0IE9jdCAyMDE0IDEyOjEwOjE3ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCA1MSArKysrKysrKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlR1N0cmVhbWVyLmggICB8ICA2ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyQ2Fpcm8uY3BwICAgICB8ICA0ICstCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwICB8IDY3ICsrKysrKysrLS0tLS0tLS0tCiAuLi4vZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCAgICB8ICA5ICstLQogLi4u
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwICAgICAgfCA4NSArKysr
KysrKy0tLS0tLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCAx
MDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcyYjBiN2YuLmEwMWIwMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NCBAQAorMjAxNC0xMC0yNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gVmlkZW8gcmVzb2x1dGlvbiBj
aGFuZ2VzIHRyaWdnZXIgYSBjcmFzaCBpbiB0aGUgVGV4dHVyZU1hcHBlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRvIEdzdFNhbXBsZSBm
b3IgYnVmZmVyK2NhcHMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZQorICAgICAgICB2aWRlbyBz
aW5rIGFuZCB0aGUgcGxheWVyLiBVc2luZyBhIHNpbmdsZSBvYmplY3QgdHlwZSBmb3IgdGhpcwor
ICAgICAgICBhdm9pZCBpc3N1ZXMgd2hlcmUgdGhlIGNhcHMgbWlnaHQgbm90IGNvcnJlY3RseSBk
ZXNjcmliZSB0aGUKKyAgICAgICAgYnVmZmVyIGNvbnRlbnRzIGFueW1vcmUsIGZvciBleGFtcGxl
IHdoZW4gdGhlIHZpZGVvIHJlc29sdXRpb24gaXMKKyAgICAgICAgY2hhbmdlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oOiBVc2UgR3N0
U2FtcGxlCisgICAgICAgIGluc3RlYWQgb2YgR3N0QnVmZmVyK0dzdENhcHMuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcDogRGl0dG8uCisgICAg
ICAgIChJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayk6IFRo
ZSByZXBhaW50IHNpZ25hbAorICAgICAgICBub3cgdXNlcyBhIEdzdFNhbXBsZSBpbnN0ZWFkIG9m
IGEgR3N0QnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIFN0b3Jl
IHRoZSBjdXJyZW50IHNhbXBsZSBpbnN0ZWFkIG9mIGEgYnVmZmVyLiBBbHNvIHJlbmFtZWQgdGhl
CisgICAgICAgIG11dGV4IHByb3RlY3RpbmcgYWNjZXNzIHRvIHRoZSBzYW1wbGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUpOiBSZXR1cm4KKyAgICAgICAgZWFy
bHkgaWYgbm8gc2FtcGxlIGlzIGF2YWlsYWJsZS4gVGhlIGNhcHMgdXNlZCB0byBnZXQgdGhlIHZp
ZGVvCisgICAgICAgIHNpemUgYXJlIHN0b3JlIGluIHRoZSBzYW1wbGUuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKTogVXNl
CisgICAgICAgIEdzdFNhbXBsZSBpbnN0ZWFkIG9mIEdzdEJ1ZmZlci4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6IE5vdyBzdG9yZSBhCisgICAgICAg
IEdzdFNhbXBsZSBpbnRlcm5hbGx5LiBBbHNvIHJlbW92ZWQgdGhlIG5vdyB1c2VsZXNzIGN1cnJl
bnQtY2FwcyBwcm9wZXJ0eS4KKyAgICAgICAgKF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlOjpfV2Vi
S2l0VmlkZW9TaW5rUHJpdmF0ZSk6IFJlbmFtZWQgdGhlCisgICAgICAgIG11dGV4IHByb3RlY3Rp
bmcgYWNjZXNzIHRvIHRoZSBzYW1wbGUuCisgICAgICAgIChfV2ViS2l0VmlkZW9TaW5rUHJpdmF0
ZTo6fl9XZWJLaXRWaWRlb1NpbmtQcml2YXRlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfdmlk
ZW9fc2lua19pbml0KTogRGlzYWJsZSBsYXN0LXNhbXBsZSBpbiBiYXNlc2luayBzaW5jZSB3ZQor
ICAgICAgICBhbHJlYWR5IHN0b3JlIG9uZSBpbiBvdXIgc2luayBhbnl3YXkuCisgICAgICAgICh3
ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2spOiBTd2l0Y2ggdG8gR3N0U2FtcGxlLgorICAg
ICAgICAod2Via2l0VmlkZW9TaW5rUmVuZGVyKTogRGl0dG8uCisgICAgICAgICh1bmxvY2tTYW1w
bGVNdXRleCk6IERpdHRvLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rVW5sb2NrKTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtVbmxvY2tTdG9wKTogRGl0dG8uCisgICAgICAgICh3
ZWJraXRWaWRlb1NpbmtTdG9wKTogRGl0dG8hCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTdGFy
dCk6IERpdHRvLgorICAgICAgICAod2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCk6IERyb3Ag
Y3VycmVudC1jYXBzIHByb3BlcnR5LgorICAgICAgICAod2Via2l0VmlkZW9TaW5rR2V0UHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAodW5sb2NrQnVmZmVyTXV0ZXgpOiBEZWxldGVkLgorCiAy
MDE0LTEwLTI2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBJbWFnZXMgd2l0aCB1c2VtYXAgc2hvdWxkIG5vdCBoYXZlIGEgbGluayBzdGF0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXIuaAppbmRleCBjOWQyZmI0Li4zOTMxYTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3Ry
ZWFtZXIuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUdT
dHJlYW1lciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlR1N0cmVhbWVyPiB7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2Uo
R3N0QnVmZmVyKiBidWZmZXIsIEdzdENhcHMqIGNhcHMpCisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUdTdHJlYW1lcihidWZm
ZXIsIGNhcHMpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFt
ZXIoc2FtcGxlKSk7CiAgICAgICAgIH0KICAgICAgICAgfkltYWdlR1N0cmVhbWVyKCk7CiAKQEAg
LTYwLDcgKzYwLDcgQEAgY2xhc3MgSW1hZ2VHU3RyZWFtZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZUdTdHJlYW1lcj4gewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBJbWFn
ZUdTdHJlYW1lcihHc3RCdWZmZXIqLCBHc3RDYXBzKik7CisgICAgICAgIEltYWdlR1N0cmVhbWVy
KEdzdFNhbXBsZSopOwogICAgICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CiAgICAg
ICAgIEZsb2F0UmVjdCBtX2Nyb3BSZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWly
by5jcHAKaW5kZXggYjE1M2YwOS4uMDZmYWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcApAQCAtMzIsOCArMzIsOSBAQAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1JbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0
QnVmZmVyKiBidWZmZXIsIEdzdENhcHMqIGNhcHMpCitJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3Ry
ZWFtZXIoR3N0U2FtcGxlKiBzYW1wbGUpCiB7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1w
bGVfZ2V0X2NhcHMoc2FtcGxlKTsKICAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOwogICAgIGdz
dF92aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CiAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19m
cm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpCkBAIC00Miw2ICs0Myw3IEBAIEltYWdlR1N0cmVh
bWVyOjpJbWFnZUdTdHJlYW1lcihHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKICAg
ICAvLyBSaWdodCBub3cgdGhlIFRleHR1cmVNYXBwZXIgb25seSBzdXBwb3J0cyBjaHJvbWFzIHdp
dGggb25lIHBsYW5lCiAgICAgQVNTRVJUKEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0lu
Zm8pID09IDEpOwogCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZm
ZXIoc2FtcGxlKTsKICAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAoJm1fdmlkZW9GcmFtZSwg
JnZpZGVvSW5mbywgYnVmZmVyLCBHU1RfTUFQX1JFQUQpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCBkMTc5YmQ0Li40NGRlNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03OSw5ICs3OSw5IEBAIHN0YXRpYyB2b2lk
IG1lZGlhUGxheWVyUHJpdmF0ZU11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCosIEdQYXJhbVNw
ZWMqLCBNZWRpYVBsCiAgICAgcGxheWVyLT5tdXRlQ2hhbmdlZCgpOwogfQogCi1zdGF0aWMgdm9p
ZCBtZWRpYVBsYXllclByaXZhdGVSZXBhaW50Q2FsbGJhY2soV2ViS2l0VmlkZW9TaW5rKiwgR3N0
QnVmZmVyICpidWZmZXIsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllclBy
aXZhdGUpCitzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVSZXBhaW50Q2FsbGJhY2soV2Vi
S2l0VmlkZW9TaW5rKiwgR3N0U2FtcGxlKiBzYW1wbGUsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UqIHBsYXllclByaXZhdGUpCiB7Ci0gICAgcGxheWVyUHJpdmF0ZS0+dHJpZ2dlclJl
cGFpbnQoYnVmZmVyKTsKKyAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2VyUmVwYWludChzYW1wbGUp
OwogfQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC04OSwxMiArODksMTIgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fZnBzU2luaygwKQogICAgICwgbV9yZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKICAgICAsIG1fbmV0d29ya1N0YXRlKE1l
ZGlhUGxheWVyOjpFbXB0eSkKLSAgICAsIG1fYnVmZmVyKDApCisgICAgLCBtX3NhbXBsZSgwKQog
ICAgICwgbV9yZXBhaW50SGFuZGxlcigwKQogICAgICwgbV92b2x1bWVTaWduYWxIYW5kbGVyKDAp
CiAgICAgLCBtX211dGVTaWduYWxIYW5kbGVyKDApCiB7Ci0gICAgZ19tdXRleF9pbml0KCZtX2J1
ZmZlck11dGV4KTsKKyAgICBnX211dGV4X2luaXQoJm1fc2FtcGxlTXV0ZXgpOwogfQogCiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZSgpCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiAgICAgICAgIG1fcmVwYWlu
dEhhbmRsZXIgPSAwOwogICAgIH0KIAotICAgIGdfbXV0ZXhfY2xlYXIoJm1fYnVmZmVyTXV0ZXgp
OworICAgIGdfbXV0ZXhfY2xlYXIoJm1fc2FtcGxlTXV0ZXgpOwogCi0gICAgaWYgKG1fYnVmZmVy
KQotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKG1fYnVmZmVyKTsKLSAgICBtX2J1ZmZlciA9IDA7
CisgICAgaWYgKG1fc2FtcGxlKQorICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKG1fc2FtcGxlKTsK
KyAgICBtX3NhbXBsZSA9IDA7CiAKICAgICBtX3BsYXllciA9IDA7CiAKQEAgLTEzNyw3ICsxMzcs
MTEgQEAgSW50U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6
ZSgpIGNvbnN0CiAgICAgaWYgKCFtX3ZpZGVvU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBtX3ZpZGVvU2l6ZTsKIAotICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGN1cnJlbnRWaWRl
b1NpbmtDYXBzKCk7CisgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4
KTsKKyAgICBpZiAoIW1fc2FtcGxlKQorICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworCisgICAg
R3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOwogICAgIGlmICgh
Y2FwcykKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIApAQCAtMTUyLDcgKzE1Niw3IEBAIElu
dFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUoKSBjb25z
dAogICAgIGludCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IsIHN0cmlkZTsKICAgICBJbnRTaXplIG9yaWdpbmFsU2l6ZTsKICAgICBHc3RWaWRl
b0Zvcm1hdCBmb3JtYXQ7Ci0gICAgaWYgKCFnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2Fwcyhj
YXBzLmdldCgpLCBvcmlnaW5hbFNpemUsIGZvcm1hdCwgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRv
ciwgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBzdHJpZGUpKQorICAgIGlmICghZ2V0Vmlk
ZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoY2Fwcywgb3JpZ2luYWxTaXplLCBmb3JtYXQsIHBpeGVs
QXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgc3RyaWRl
KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIExPR19NRURJQV9NRVNTQUdFKCJP
cmlnaW5hbCB2aWRlbyBzaXplOiAlZHglZCIsIG9yaWdpbmFsU2l6ZS53aWR0aCgpLCBvcmlnaW5h
bFNpemUuaGVpZ2h0KCkpOwpAQCAtMjc1LDI1ICsyNzksMjYgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCgpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7Ci0gICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9j
ayhtX2J1ZmZlck11dGV4KTsKLSAgICBpZiAoIW1fYnVmZmVyKQorICAgIEdNdXRleExvY2tlcjxH
TXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7CisgICAgaWYgKCFtX3NhbXBsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50Vmlk
ZW9TaW5rQ2FwcygpOworICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1f
c2FtcGxlKTsKICAgICBpZiAoIWNhcHMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
R3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKICAgICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0lu
Zm8pOwotICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMu
Z2V0KCkpKQorICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNh
cHMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUgc2l6ZSA9IEludFNp
emUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdI
VCgmdmlkZW9JbmZvKSk7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0ZXh0
dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hB
U19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRt
YXBUZXh0dXJlOjpOb0ZsYWcpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9n
ZXRfYnVmZmVyKG1fc2FtcGxlKTsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApCiAg
ICAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKiBtZXRhOwotICAgIGlmICgobWV0YSA9IGdz
dF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGEobV9idWZmZXIpKSkgewor
ICAgIGlmICgobWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21l
dGEoYnVmZmVyKSkpIHsKICAgICAgICAgaWYgKG1ldGEtPm5fdGV4dHVyZXMgPT0gMSkgeyAvLyBC
Ukd4ICYgQkdSQSBmb3JtYXRzIHVzZSBvbmx5IG9uZSB0ZXh0dXJlLgogICAgICAgICAgICAgY29u
c3QgQml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBU
ZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKTsKICAgICAgICAgICAgIGd1aW50IGlkc1s0XSA9IHsg
dGV4dHVyZUdMLT5pZCgpLCAwLCAwLCAwIH07CkBAIC0zMDgsNyArMzEzLDcgQEAgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVU
ZXh0dXJlKFRleHR1cmUKICAgICBBU1NFUlQoR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVv
SW5mbykgPT0gMSk7CiAKICAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7Ci0gICAgaWYgKCFn
c3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBtX2J1ZmZlciwgR1NU
X01BUF9SRUFEKSkKKyAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2
aWRlb0luZm8sIGJ1ZmZlciwgR1NUX01BUF9SRUFEKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpbnQgc3RyaWRlID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSgmdmlkZW9G
cmFtZSwgMCk7CkBAIC0zMjAsMTMgKzMyNSwxNSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQog
fQogI2VuZGlmCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dl
clJlcGFpbnQoR3N0QnVmZmVyKiBidWZmZXIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBsZSogc2FtcGxlKQogewotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoR1NUX0lTX0JVRkZFUihidWZmZXIpKTsKKyAgICBnX3JldHVybl9pZl9mYWls
KEdTVF9JU19TQU1QTEUoc2FtcGxlKSk7CiAKICAgICB7Ci0gICAgICAgIEdNdXRleExvY2tlcjxH
TXV0ZXg+IGxvY2sobV9idWZmZXJNdXRleCk7Ci0gICAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSgm
bV9idWZmZXIsIGJ1ZmZlcik7CisgICAgICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9z
YW1wbGVNdXRleCk7CisgICAgICAgIGlmIChtX3NhbXBsZSkKKyAgICAgICAgICAgIGdzdF9zYW1w
bGVfdW5yZWYobV9zYW1wbGUpOworICAgICAgICBtX3NhbXBsZSA9IGdzdF9zYW1wbGVfcmVmKHNh
bXBsZSk7CiAgICAgfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpAQCAtMzU3LDE1ICszNjQsMTEgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFIKICAgICBpZiAoIW1fcGxheWVyLT52aXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9idWZmZXJNdXRleCk7Ci0gICAgaWYgKCFt
X2J1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0g
Y3VycmVudFZpZGVvU2lua0NhcHMoKTsKLSAgICBpZiAoIWNhcHMpCisgICAgR011dGV4TG9ja2Vy
PEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBpZiAoIW1fc2FtcGxlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VH
U3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fYnVmZmVyLCBjYXBzLmdldCgpKTsKKyAgICBSZWZQdHI8
SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1f
c2FtcGxlKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTQwOSwx
NiArNDEyLDYgQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6bW92aWVMb2FkVHlwZSgpIGNvbnMKICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OkRvd25sb2FkOwogfQogCi1HUmVmUHRyPEdzdENhcHM+IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmN1cnJlbnRWaWRlb1NpbmtDYXBzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
d2Via2l0VmlkZW9TaW5rKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdSZWZQdHI8
R3N0Q2Fwcz4gY3VycmVudENhcHM7Ci0gICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKG1fd2Via2l0
VmlkZW9TaW5rLmdldCgpKSwgImN1cnJlbnQtY2FwcyIsICZjdXJyZW50Q2Fwcy5vdXRQdHIoKSwg
TlVMTCk7Ci0gICAgcmV0dXJuIGN1cnJlbnRDYXBzOwotfQotCiBHc3RFbGVtZW50KiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmsoKQogewogICAgIEFTU0VS
VChpbml0aWFsaXplR1N0cmVhbWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggNDYwZTg2MS4uZWE4NDk3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRp
ZgogCi10eXBlZGVmIHN0cnVjdCBfR3N0QnVmZmVyIEdzdEJ1ZmZlcjsKK3R5cGVkZWYgc3RydWN0
IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxl
bWVudDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0
cnVjdCBfR3N0U3RyZWFtVm9sdW1lIEdzdFN0cmVhbVZvbHVtZTsKQEAgLTc3LDcgKzc3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBzaXpl
Q2hhbmdlZCgpOwogCi0gICAgdm9pZCB0cmlnZ2VyUmVwYWludChHc3RCdWZmZXIqKTsKKyAgICB2
b2lkIHRyaWdnZXJSZXBhaW50KEdzdFNhbXBsZSopOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTEwLDcgKzExMCw2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCBHc3RFbGVtZW50KiBjcmVhdGVWaWRlb1Npbmso
KTsKLSAgICBHUmVmUHRyPEdzdENhcHM+IGN1cnJlbnRWaWRlb1NpbmtDYXBzKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldFN0cmVhbVZvbHVtZUVsZW1lbnQoR3N0U3RyZWFtVm9sdW1lKik7CiAgICAg
dmlydHVhbCBHc3RFbGVtZW50KiBjcmVhdGVBdWRpb1NpbmsoKSB7IHJldHVybiAwOyB9CkBAIC0x
MjMsOCArMTIyLDggQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1f
cmVhZHlTdGF0ZTsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRl
OwogICAgIEludFNpemUgbV9zaXplOwotICAgIEdNdXRleCBtX2J1ZmZlck11dGV4OwotICAgIEdz
dEJ1ZmZlciogbV9idWZmZXI7CisgICAgbXV0YWJsZSBHTXV0ZXggbV9zYW1wbGVNdXRleDsKKyAg
ICBHc3RTYW1wbGUqIG1fc2FtcGxlOwogICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UgbV92
b2x1bWVUaW1lckhhbmRsZXI7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX211dGVU
aW1lckhhbmRsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3JlcGFpbnRIYW5kbGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCA3Y2IxOTNlLi4yNTVlNzYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5r
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtNjYsMzAgKzY2LDI1IEBAIGVudW0gewog
ICAgIExBU1RfU0lHTkFMCiB9OwogCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9DQVBT
Ci19OwotCiBzdGF0aWMgZ3VpbnQgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tMQVNUX1NJR05BTF0g
PSB7IDAsIH07CiAKIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgX1dlYktp
dFZpZGVvU2lua1ByaXZhdGUoKQogICAgIHsKLSAgICAgICAgZ19tdXRleF9pbml0KCZidWZmZXJN
dXRleCk7CisgICAgICAgIGdfbXV0ZXhfaW5pdCgmc2FtcGxlTXV0ZXgpOwogICAgICAgICBnX2Nv
bmRfaW5pdCgmZGF0YUNvbmRpdGlvbik7CiAgICAgICAgIGdzdF92aWRlb19pbmZvX2luaXQoJmlu
Zm8pOwogICAgIH0KIAogICAgIH5fV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSgpCiAgICAgewotICAg
ICAgICBnX211dGV4X2NsZWFyKCZidWZmZXJNdXRleCk7CisgICAgICAgIGdfbXV0ZXhfY2xlYXIo
JnNhbXBsZU11dGV4KTsKICAgICAgICAgZ19jb25kX2NsZWFyKCZkYXRhQ29uZGl0aW9uKTsKICAg
ICB9CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlcjsKKyAgICBHc3RTYW1wbGUqIHNhbXBsZTsKICAg
ICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIHRpbWVvdXRTb3VyY2U7Ci0gICAgR011dGV4IGJ1
ZmZlck11dGV4OworICAgIEdNdXRleCBzYW1wbGVNdXRleDsKICAgICBHQ29uZCBkYXRhQ29uZGl0
aW9uOwogCiAgICAgR3N0VmlkZW9JbmZvIGluZm87CkBAIC0xMDMsNyArOTgsNyBAQCBzdHJ1Y3Qg
X1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZSBpc24ndCBy
dW5uaW5nIGFueW1vcmUuIFRoaXMgd2lsbCBsZWFkCiAgICAgLy8gdG8gZGVhZGxvY2tzIGJlY2F1
c2UgcmVuZGVyKCkgaG9sZHMgdGhlIHN0cmVhbSBsb2NrLgogICAgIC8vCi0gICAgLy8gUHJvdGVj
dGVkIGJ5IHRoZSBidWZmZXIgbXV0ZXgKKyAgICAvLyBQcm90ZWN0ZWQgYnkgdGhlIHNhbXBsZSBt
dXRleAogICAgIGJvb2wgdW5sb2NrZWQ7CiB9OwogCkBAIC0xMTQsNiArMTA5LDcgQEAgR19ERUZJ
TkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0VmlkZW9TaW5rLCB3ZWJraXRfdmlkZW9fc2luaywgR1NU
X1RZUEVfVklERU9fU0lOSywKIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2luaXQoV2Vi
S2l0VmlkZW9TaW5rKiBzaW5rKQogewogICAgIHNpbmstPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0Vf
R0VUX1BSSVZBVEUoc2luaywgV0VCS0lUX1RZUEVfVklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5r
UHJpdmF0ZSk7CisgICAgZ19vYmplY3Rfc2V0KEdTVF9CQVNFX1NJTksoc2luayksICJlbmFibGUt
bGFzdC1zYW1wbGUiLCBGQUxTRSwgTlVMTCk7CiAgICAgbmV3IChzaW5rLT5wcml2KSBXZWJLaXRW
aWRlb1NpbmtQcml2YXRlKCk7CiB9CiAKQEAgLTEyMSwxNyArMTE3LDE3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiB7
CiAgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CiAKLSAgICBH
TXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmJ1ZmZlck11dGV4KTsKLSAgICBHc3RCdWZm
ZXIqIGJ1ZmZlciA9IHByaXYtPmJ1ZmZlcjsKLSAgICBwcml2LT5idWZmZXIgPSAwOworICAgIEdN
dXRleExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+c2FtcGxlTXV0ZXgpOworICAgIEdzdFNhbXBs
ZSogc2FtcGxlID0gcHJpdi0+c2FtcGxlOworICAgIHByaXYtPnNhbXBsZSA9IDA7CiAKLSAgICBp
ZiAoIWJ1ZmZlciB8fCBwcml2LT51bmxvY2tlZCB8fCBVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihi
dWZmZXIpKSkgeworICAgIGlmICghc2FtcGxlIHx8IHByaXYtPnVubG9ja2VkIHx8IFVOTElLRUxZ
KCFHU1RfSVNfU0FNUExFKHNhbXBsZSkpKSB7CiAgICAgICAgIGdfY29uZF9zaWduYWwoJnByaXYt
PmRhdGFDb25kaXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxf
ZW1pdChzaW5rLCB3ZWJraXRWaWRlb1NpbmtTaWduYWxzW1JFUEFJTlRfUkVRVUVTVEVEXSwgMCwg
YnVmZmVyKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgZ19zaWduYWxfZW1p
dChzaW5rLCB3ZWJraXRWaWRlb1NpbmtTaWduYWxzW1JFUEFJTlRfUkVRVUVTVEVEXSwgMCwgc2Ft
cGxlKTsKKyAgICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBsZSk7CiAgICAgZ19jb25kX3NpZ25hbCgm
cHJpdi0+ZGF0YUNvbmRpdGlvbik7CiB9CiAKQEAgLTE0MCwxNyArMTM2LDE3IEBAIHN0YXRpYyBH
c3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmss
IEdzdEJ1ZmZlciogYnVmCiAgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gV0VCS0lUX1ZJREVP
X1NJTksoYmFzZVNpbmspOwogICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYgPSBzaW5r
LT5wcml2OwogCi0gICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5idWZmZXJNdXRl
eCk7CisgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5zYW1wbGVNdXRleCk7CiAK
ICAgICBpZiAocHJpdi0+dW5sb2NrZWQpCiAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKIAot
ICAgIHByaXYtPmJ1ZmZlciA9IGdzdF9idWZmZXJfcmVmKGJ1ZmZlcik7CisgICAgcHJpdi0+c2Ft
cGxlID0gZ3N0X3NhbXBsZV9uZXcoYnVmZmVyLCBwcml2LT5jdXJyZW50Q2FwcywgMCwgMCk7CiAK
ICAgICAvLyBUaGUgdmlkZW8gaW5mbyBzdHJ1Y3R1cmUgaXMgdmFsaWQgb25seSBpZiB0aGUgc2lu
ayBoYW5kbGVkIGFuIGFsbG9jYXRpb24gcXVlcnkuCiAgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0
ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUKCZwcml2LT5pbmZvKTsKICAgICBpZiAoZm9ybWF0ID09
IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikgewotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1
ZmZlcik7CisgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYocHJpdi0+c2FtcGxlKTsKICAgICAgICAg
cmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICAgIH0KIApAQCAtMTc5LDEzICsxNzUsMTIgQEAgc3Rh
dGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNl
U2luaywgR3N0QnVmZmVyKiBidWYKICAgICAgICAgR3N0VmlkZW9GcmFtZSBkZXN0aW5hdGlvbkZy
YW1lOwogCiAgICAgICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmc291cmNlRnJhbWUsICZw
cml2LT5pbmZvLCBidWZmZXIsIEdTVF9NQVBfUkVBRCkpIHsKLSAgICAgICAgICAgIGdzdF9idWZm
ZXJfdW5yZWYoYnVmZmVyKTsKKyAgICAgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYocHJpdi0+c2Ft
cGxlKTsKICAgICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYobmV3QnVmZmVyKTsKICAgICAgICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdzdF92
aWRlb19mcmFtZV9tYXAoJmRlc3RpbmF0aW9uRnJhbWUsICZwcml2LT5pbmZvLCBuZXdCdWZmZXIs
IEdTVF9NQVBfV1JJVEUpKSB7CiAgICAgICAgICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnNv
dXJjZUZyYW1lKTsKLSAgICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKICAgICAg
ICAgICAgIGdzdF9idWZmZXJfdW5yZWYobmV3QnVmZmVyKTsKICAgICAgICAgICAgIHJldHVybiBH
U1RfRkxPV19FUlJPUjsKICAgICAgICAgfQpAQCAtMjE1LDggKzIxMCw4IEBAIHN0YXRpYyBHc3RG
bG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdz
dEJ1ZmZlciogYnVmCiAKICAgICAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZzb3VyY2VGcmFt
ZSk7CiAgICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmZGVzdGluYXRpb25GcmFtZSk7Ci0g
ICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAgICAgYnVmZmVyID0gcHJpdi0+
YnVmZmVyID0gbmV3QnVmZmVyOworICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKHByaXYtPnNhbXBs
ZSk7CisgICAgICAgIHByaXYtPnNhbXBsZSA9IGdzdF9zYW1wbGVfbmV3KG5ld0J1ZmZlciwgcHJp
di0+Y3VycmVudENhcHMsIDAsIDApOwogICAgIH0KICNlbmRpZgogCkBAIC0yMjcsNyArMjIyLDcg
QEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5r
KiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYKICAgICBwcml2LT50aW1lb3V0U291cmNlLnNjaGVk
dWxlKCJbV2ViS2l0XSB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4oc3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjaywgc2lu
aykpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCiAgICAgICAgIFtzaW5rXSB7IGdzdF9vYmplY3RfdW5y
ZWYoc2luayk7IH0pOwogCi0gICAgZ19jb25kX3dhaXQoJnByaXYtPmRhdGFDb25kaXRpb24sICZw
cml2LT5idWZmZXJNdXRleCk7CisgICAgZ19jb25kX3dhaXQoJnByaXYtPmRhdGFDb25kaXRpb24s
ICZwcml2LT5zYW1wbGVNdXRleCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCkBAIC0y
MzcsMzEgKzIzMiwxMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtGaW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1MocGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0VmlkZW9TaW5rR2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbWV0ZXJTcGVjKQorc3RhdGljIHZvaWQgdW5sb2NrU2FtcGxlTXV0ZXgoV2ViS2l0Vmlk
ZW9TaW5rUHJpdmF0ZSogcHJpdikKIHsKLSAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJL
SVRfVklERU9fU0lOSyhvYmplY3QpOwotICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYg
PSBzaW5rLT5wcml2OworICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+c2FtcGxl
TXV0ZXgpOwogCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0NBUFM6
IHsKLSAgICAgICAgR3N0Q2FwcyogY2FwcyA9IHByaXYtPmN1cnJlbnRDYXBzOwotICAgICAgICBp
ZiAoY2FwcykKLSAgICAgICAgICAgIGdzdF9jYXBzX3JlZihjYXBzKTsKLSAgICAgICAgZ192YWx1
ZV90YWtlX2JveGVkKHZhbHVlLCBjYXBzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BlcnR5SWQsIHBhcmFtZXRlclNwZWMpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdW5s
b2NrQnVmZmVyTXV0ZXgoV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdikKLXsKLSAgICBHTXV0
ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmJ1ZmZlck11dGV4KTsKLQotICAgIGlmIChwcml2
LT5idWZmZXIpIHsKLSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihwcml2LT5idWZmZXIpOwotICAg
ICAgICBwcml2LT5idWZmZXIgPSAwOworICAgIGlmIChwcml2LT5zYW1wbGUpIHsKKyAgICAgICAg
Z3N0X3NhbXBsZV91bnJlZihwcml2LT5zYW1wbGUpOworICAgICAgICBwcml2LT5zYW1wbGUgPSAw
OwogICAgIH0KIAogICAgIHByaXYtPnVubG9ja2VkID0gdHJ1ZTsKQEAgLTI3Myw3ICsyNTAsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rVW5sb2NrKEdzdEJhc2VTaW5rKiBiYXNl
U2luaykKIHsKICAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfVklERU9fU0lOSyhi
YXNlU2luayk7CiAKLSAgICB1bmxvY2tCdWZmZXJNdXRleChzaW5rLT5wcml2KTsKKyAgICB1bmxv
Y2tTYW1wbGVNdXRleChzaW5rLT5wcml2KTsKIAogICAgIHJldHVybiBHU1RfQ0FMTF9QQVJFTlRf
V0lUSF9ERUZBVUxUKEdTVF9CQVNFX1NJTktfQ0xBU1MsIHVubG9jaywgKGJhc2VTaW5rKSwgVFJV
RSk7CiB9CkBAIC0yODMsNyArMjYwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lu
a1VubG9ja1N0b3AoR3N0QmFzZVNpbmsqIGJhc2VTaW5rKQogICAgIFdlYktpdFZpZGVvU2lua1By
aXZhdGUqIHByaXYgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2luayktPnByaXY7CiAKICAgICB7
Ci0gICAgICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+YnVmZmVyTXV0ZXgpOwor
ICAgICAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPnNhbXBsZU11dGV4KTsKICAg
ICAgICAgcHJpdi0+dW5sb2NrZWQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTI5NCw3ICsyNzEsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rU3RvcChHc3RCYXNlU2luayogYmFzZVNp
bmspCiB7CiAgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9WSURFT19T
SU5LKGJhc2VTaW5rKS0+cHJpdjsKIAotICAgIHVubG9ja0J1ZmZlck11dGV4KHByaXYpOworICAg
IHVubG9ja1NhbXBsZU11dGV4KHByaXYpOwogCiAgICAgaWYgKHByaXYtPmN1cnJlbnRDYXBzKSB7
CiAgICAgICAgIGdzdF9jYXBzX3VucmVmKHByaXYtPmN1cnJlbnRDYXBzKTsKQEAgLTMwOCw3ICsy
ODUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rU3RhcnQoR3N0QmFzZVNpbmsq
IGJhc2VTaW5rKQogewogICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYgPSBXRUJLSVRf
VklERU9fU0lOSyhiYXNlU2luayktPnByaXY7CiAKLSAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBs
b2NrKHByaXYtPmJ1ZmZlck11dGV4KTsKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHBy
aXYtPnNhbXBsZU11dGV4KTsKICAgICBwcml2LT51bmxvY2tlZCA9IGZhbHNlOwogICAgIHJldHVy
biBUUlVFOwogfQpAQCAtMzYzLDcgKzM0MCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19z
aW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFZpZGVvU2lua1ByaXZhdGUpKTsK
IAogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRWaWRlb1NpbmtGaW5hbGl6ZTsK
LSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFZpZGVvU2lua0dldFByb3Bl
cnR5OwogCiAgICAgYmFzZVNpbmtDbGFzcy0+dW5sb2NrID0gd2Via2l0VmlkZW9TaW5rVW5sb2Nr
OwogICAgIGJhc2VTaW5rQ2xhc3MtPnVubG9ja19zdG9wID0gd2Via2l0VmlkZW9TaW5rVW5sb2Nr
U3RvcDsKQEAgLTM3NCw5ICszNTAsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19j
bGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICBiYXNlU2lua0NsYXNz
LT5zZXRfY2FwcyA9IHdlYmtpdFZpZGVvU2lua1NldENhcHM7CiAgICAgYmFzZVNpbmtDbGFzcy0+
cHJvcG9zZV9hbGxvY2F0aW9uID0gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb247CiAK
LSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywgUFJPUF9D
QVBTLAotICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoImN1cnJlbnQtY2FwcyIsICJDdXJyZW50
LUNhcHMiLCAiQ3VycmVudCBjYXBzIiwgR1NUX1RZUEVfQ0FQUywgR19QQVJBTV9SRUFEQUJMRSkp
OwotCiAgICAgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tSRVBBSU5UX1JFUVVFU1RFRF0gPSBnX3Np
Z25hbF9uZXcoInJlcGFpbnQtcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKGtsYXNzKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdTaWduYWxGbGFncz4oR19TSUdO
QUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLApAQCAtMzg2LDcgKzM1OSw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3Mq
IGtsYXNzKQogICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX2dlbmVyaWMsCiAgICAgICAg
ICAgICBHX1RZUEVfTk9ORSwgLy8gUmV0dXJuIHR5cGUKICAgICAgICAgICAgIDEsIC8vIE9ubHkg
b25lIHBhcmFtZXRlcgotICAgICAgICAgICAgR1NUX1RZUEVfQlVGRkVSKTsKKyAgICAgICAgICAg
IEdTVF9UWVBFX1NBTVBMRSk7CiB9CiAKIAotLSAKMi4xLjA=
</data>
<flag name="review"
          id="265265"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>