<?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>184406</bug_id>
          
          <creation_ts>2018-04-08 18:38:09 -0700</creation_ts>
          <short_desc>[GTK] WaylandCompositorDisplay leaks its wl_display</short_desc>
          <delta_ts>2018-04-17 04:29:35 -0700</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>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>csaavedra</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>Ms2ger</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1412782</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-08 18:38:09 -0700</bug_when>
    <thetext>WaylandCompositorDisplay leaks its wl_display. It needs to pass NativeDisplayOwned::Yes when initializing its PlatformDisplayWayland base class, because it allocated its wl_display itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412786</commentid>
    <comment_count>1</comment_count>
      <attachid>337475</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-08 19:04:54 -0700</bug_when>
    <thetext>Created attachment 337475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412824</commentid>
    <comment_count>2</comment_count>
      <attachid>337475</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-08 23:47:33 -0700</bug_when>
    <thetext>Comment on attachment 337475
Patch

Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412829</commentid>
    <comment_count>3</comment_count>
      <attachid>337475</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-09 00:14:20 -0700</bug_when>
    <thetext>Comment on attachment 337475
Patch

Clearing flags on attachment: 337475

Committed r230390: &lt;https://trac.webkit.org/changeset/230390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412830</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-09 00:14:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412904</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-09 09:53:26 -0700</bug_when>
    <thetext>Reverted r230390 for reason:

Broke accelerated compositing

Committed r230442: &lt;https://trac.webkit.org/changeset/230442&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413090</commentid>
    <comment_count>6</comment_count>
      <attachid>337562</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-09 17:28:44 -0700</bug_when>
    <thetext>Created attachment 337562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413092</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-09 17:29:56 -0700</bug_when>
    <thetext>Carlos, please review it again. I had some fun with this one....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413097</commentid>
    <comment_count>8</comment_count>
      <attachid>337563</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-09 17:36:54 -0700</bug_when>
    <thetext>Created attachment 337563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413243</commentid>
    <comment_count>9</comment_count>
      <attachid>337563</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-10 02:59:18 -0700</bug_when>
    <thetext>Comment on attachment 337563
Patch

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

Good catch! It seems WPE doesn&apos;t build with this.

&gt; Source/WebCore/ChangeLog:17
&gt; +        Well, this was harder than expected. We really just want to fix a small leak in the WebKit
&gt; +        layer, but that requires a change in how WaylandCompositorDisplay calls the
&gt; +        PlatformDisplayWayland constructor, to pass NativeDisplayOwned::Yes. That means
&gt; +        WaylandCompositorDisplay can no longer use PlatformDisplayWayland&apos;s protected default
&gt; +        constructor. Problem is that the normal PlatformDisplayWayland constructor calls
&gt; +        PlatformDisplayWayland::initialize, which calls PlatformDisplayWayland::registryGlobal,
&gt; +        which is a virtual function. The WaylandCompositorDisplay portion of the object is not
&gt; +        constructed yet at this point, so WaylandCompositorDisplay::registryGlobal will never be
&gt; +        called if we do that. I had to revert the previous version of this fix due to this problem.
&gt; +        It had broken accelerated compositing.

Wow, great analysis.

&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:78
&gt; +    return PlatformDisplayX11::createForNativeDisplay(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()));

I don&apos;t think we need to rename the create() method, the parameter is self-explanatory, create() with no parameter creates a new with connection to the default display, create that receives a native display used that one. If the native display is nullptr it&apos;s &quot;headless&quot;. Note that headless is not really a valid config, I think, because nothing will work, maybe we should just crash there and never allow to create a display with a null native.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413245</commentid>
    <comment_count>10</comment_count>
      <attachid>337563</attachid>
    <who name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</who>
    <bug_when>2018-04-10 03:46:09 -0700</bug_when>
    <thetext>Comment on attachment 337563
Patch

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

&gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:59
&gt; +    auto platformDisplay = std::unique_ptr&lt;PlatformDisplayWayland&gt;(new PlatformDisplayWayland(display, NativeDisplayOwned::Yes));

There&apos;s a number of places where it seems you could use std::make_unique(); why not use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413330</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 11:00:16 -0700</bug_when>
    <thetext>I&apos;ll fix WPE and Windows.

(In reply to Carlos Garcia Campos from comment #9)
&gt; I don&apos;t think we need to rename the create() method, the parameter is
&gt; self-explanatory, create() with no parameter creates a new with connection
&gt; to the default display, create that receives a native display used that one.
&gt; If the native display is nullptr it&apos;s &quot;headless&quot;.

OK, good idea.

(In reply to Carlos Garcia Campos from comment #9) 
&gt; Note that headless is not
&gt; really a valid config, I think, because nothing will work, maybe we should
&gt; just crash there and never allow to create a display with a null native.

I think stuff breaks if we do that, remember the crash when building yelp?

(In reply to Ms2ger from comment #10)
&gt; There&apos;s a number of places where it seems you could use std::make_unique();
&gt; why not use it?

Can&apos;t because the constructor is private. If you&apos;re able to use std::make_unique from a create function, that&apos;s bad because it means you forgot to make the constructor private!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413340</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 11:58:51 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; (In reply to Carlos Garcia Campos from comment #9)
&gt; &gt; I don&apos;t think we need to rename the create() method, the parameter is
&gt; &gt; self-explanatory, create() with no parameter creates a new with connection
&gt; &gt; to the default display, create that receives a native display used that one.
&gt; &gt; If the native display is nullptr it&apos;s &quot;headless&quot;.
&gt; 
&gt; OK, good idea.

Actually this didn&apos;t turn out as well as I&apos;d like. Then we have, for example:

    static std::unique_ptr&lt;PlatformDisplay&gt; create();
    static std::unique_ptr&lt;PlatformDisplay&gt; create(Display*);

where the distinction between calling create with no arguments (&quot;connect to default display&quot;) and calling it with nullptr (headless mode) is really unclear. So I&apos;ll keep the separate createHeadless. But renaming from createForNativeDisplay to create seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413341</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 12:01:34 -0700</bug_when>
    <thetext>Also: it&apos;s true that in the X11 case, createHeadless is exactly the same as calling create with nullptr, but in the Wayland case the code is slightly different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413343</commentid>
    <comment_count>14</comment_count>
      <attachid>337625</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 12:09:40 -0700</bug_when>
    <thetext>Created attachment 337625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413344</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 12:09:56 -0700</bug_when>
    <thetext>Let&apos;s see if this version passes EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413345</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 12:11:51 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; Also: it&apos;s true that in the X11 case, createHeadless is exactly the same as
&gt; calling create with nullptr, but in the Wayland case the code is slightly
&gt; different.

I keep changing my mind on this. I wound up making create safe in case nullptr is passed for the display, but now there&apos;s really no good reason to keep the headless version, so I think I&apos;ll go with your suggestion after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413346</commentid>
    <comment_count>17</comment_count>
      <attachid>337626</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-10 12:18:26 -0700</bug_when>
    <thetext>Created attachment 337626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413720</commentid>
    <comment_count>18</comment_count>
      <attachid>337626</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-11 09:58:28 -0700</bug_when>
    <thetext>Comment on attachment 337626
Patch

Clearing flags on attachment: 337626

Committed r230529: &lt;https://trac.webkit.org/changeset/230529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413721</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-11 09:58:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414251</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-12 17:35:50 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #18)
&gt; Comment on attachment 337626 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 337626
&gt; 
&gt; Committed r230529: &lt;https://trac.webkit.org/changeset/230529&gt;

Seems this has broken Debian stable (still oldstable: jessie) bot build (clang-3.8 with libstdc++-4.9)

Good build (r230528): https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20Debian%20Stable%20%28Build%29/builds/11502
Bad  build (r230529): https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20Debian%20Stable%20%28Build%29/builds/11503</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414354</commentid>
    <comment_count>21</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-04-13 02:54:56 -0700</bug_when>
    <thetext>Michael, please check the debian stable build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414392</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-13 07:28:31 -0700</bug_when>
    <thetext>I don&apos;t think it&apos;s reasonable to be using libstdc++-4.9 on the buildbot, when we dropped support for the 4.9 toolchain over a year ago. The bot could be upgraded to use libstdc++-6 built with --with-default-libstdcxx-abi=gcc4-compatible, but we promised Apple that we would require GCC 6 two weeks from now, so might as well skip ahead and just upgrade the buildbot to Stretch now. Then we can switch it back to using GCC, and we don&apos;t need to do any additional work. The standard library upgrades are half the point of requiring newer GCC, after all.

It&apos;s been a very useful bot, btw. I&apos;m glad we added it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414393</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-13 07:30:34 -0700</bug_when>
    <thetext>BTW, the problem is:

../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:61:12: error: no viable conversion from returned value of type &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland, default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type &apos;unique_ptr&lt;WebCore::PlatformDisplay, default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
    return platformDisplay;
           ^~~~~~~~~~~~~~~

which is a standard library bug, unique_ptr is supposed to support polymorphism, but the GCC 4.9 unique_ptr does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414405</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-13 08:41:40 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #22)
&gt; I don&apos;t think it&apos;s reasonable to be using libstdc++-4.9 on the buildbot,
&gt; when we dropped support for the 4.9 toolchain over a year ago. 

&gt; The bot could
&gt; be upgraded to use libstdc++-6 built with
&gt; --with-default-libstdcxx-abi=gcc4-compatible, 

No. That&apos;s not an option.

Because, its basically impossible to upgrade libstdc++ on a standard linux Distro without dist-upgrading (using the official distro packages).

So what we can do is to upgrade the bot to Debian stretch and give up on the promise of keeping WebKit buildable in the year after the next stable release.

At this point I&apos;m fine with just doing that: we managed to keep the promise of the extra year of support for 9 months, and given the upcoming GCC 6 version raise this seems reasonable.

Being realistic: I don&apos;t think any developer is still running Debian Jessie. And Debian is still not taking our security updates in any case.

But fixing this build failure if its easy to do that&apos;s also a preferred option.

In any case, likely we will have to upgrade this anyway when people start using c++17 features in May after the GCC raise.

&gt; but we promised Apple that we
&gt; would require GCC 6 two weeks from now, so might as well skip ahead and just
&gt; upgrade the buildbot to Stretch now. Then we can switch it back to using
&gt; GCC, and we don&apos;t need to do any additional work. The standard library
&gt; upgrades are half the point of requiring newer GCC, after all.
&gt; 
&gt; It&apos;s been a very useful bot, btw. I&apos;m glad we added it.

Agreed.

I&apos;m OK with upgrading the bot to stretch and switch it back to GCC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414406</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-13 08:51:41 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #24)
&gt; So what we can do is to upgrade the bot to Debian stretch and give up on the
&gt; promise of keeping WebKit buildable in the year after the next stable
&gt; release.

Well, we don&apos;t have to discuss this again until the next time we have this problem. libstdc++ ABI breaks are unusual and it&apos;s possible we won&apos;t have to figure this out again for a long time. So for now, let&apos;s just upgrade the bot, and hopefully we won&apos;t have to deal with this problem again for a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414776</commentid>
    <comment_count>26</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-16 08:17:14 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #23)
&gt; BTW, the problem is:
&gt; 
&gt; ../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:61:
&gt; 12: error: no viable conversion from returned value of type
&gt; &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland,
&gt; default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type
&gt; &apos;unique_ptr&lt;WebCore::PlatformDisplay,
&gt; default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
&gt;     return platformDisplay;
&gt;            ^~~~~~~~~~~~~~~
&gt; 
&gt; which is a standard library bug, unique_ptr is supposed to support
&gt; polymorphism, but the GCC 4.9 unique_ptr does not.

It seems this is no a libstdc++_4.9 bug, but an issue with Clang itself maybe?.

I&apos;m able to reproduce the very same build failure with Clang_3.8 and libstdc++_6.3.0 (Debian stretch).

../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:61:12: error: no viable conversion from returned value of type &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland, default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type &apos;unique_ptr&lt;WebCore::PlatformDisplay, default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
    return platformDisplay;
           ^~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:204:17: note: candidate constructor not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;nullptr_t&apos; for 1st argument
      constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
                ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:209:7: note: candidate constructor not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;std::unique_ptr&lt;WebCore::PlatformDisplay, std::default_delete&lt;WebCore::PlatformDisplay&gt; &gt; &amp;&amp;&apos; for 1st argument
      unique_ptr(unique_ptr&amp;&amp; __u) noexcept
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:223:2: note: candidate constructor [with _Up = WebCore::PlatformDisplayWayland, _Ep = std::default_delete&lt;WebCore::PlatformDisplayWayland&gt;, $2 = void] not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt; &amp;&amp;&apos; for 1st argument
        unique_ptr(unique_ptr&lt;_Up, _Ep&gt;&amp;&amp; __u) noexcept
        ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:359:7: note: candidate constructor not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;const std::unique_ptr&lt;WebCore::PlatformDisplay, std::default_delete&lt;WebCore::PlatformDisplay&gt; &gt; &amp;&apos; for 1st argument
      unique_ptr(const unique_ptr&amp;) = delete;
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:231:2: note: candidate template ignored: could not match &apos;auto_ptr&apos; against &apos;unique_ptr&apos;
        unique_ptr(auto_ptr&lt;_Up&gt;&amp;&amp; __u) noexcept;
        ^
In file included from /home/igalia/clopez/webkit/webkit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource364.cpp:1:
../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:68:12: error: no viable conversion from returned value of type &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland, default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type &apos;unique_ptr&lt;WebCore::PlatformDisplay, default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
    return platformDisplay;
           ^~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:204:17: note: candidate constructor not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;nullptr_t&apos; for 1st argument
      constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
                ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:209:7: note: candidate constructor not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;std::unique_ptr&lt;WebCore::PlatformDisplay, std::default_delete&lt;WebCore::PlatformDisplay&gt; &gt; &amp;&amp;&apos; for 1st argument
      unique_ptr(unique_ptr&amp;&amp; __u) noexcept
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:223:2: note: candidate constructor [with _Up = WebCore::PlatformDisplayWayland, _Ep = std::default_delete&lt;WebCore::PlatformDisplayWayland&gt;, $2 = void] not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt; &amp;&amp;&apos; for 1st argument
        unique_ptr(unique_ptr&lt;_Up, _Ep&gt;&amp;&amp; __u) noexcept
        ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:359:7: note: candidate constructor not viable: no known conversion from &apos;std::unique_ptr&lt;WebCore::PlatformDisplayWayland, std::default_delete&lt;WebCore::PlatformDisplayWayland&gt; &gt;&apos; to &apos;const std::unique_ptr&lt;WebCore::PlatformDisplay, std::default_delete&lt;WebCore::PlatformDisplay&gt; &gt; &amp;&apos; for 1st argument
      unique_ptr(const unique_ptr&amp;) = delete;
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h:231:2: note: candidate template ignored: could not match &apos;auto_ptr&apos; against &apos;unique_ptr&apos;
        unique_ptr(auto_ptr&lt;_Up&gt;&amp;&amp; __u) noexcept;
        ^
2 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414789</commentid>
    <comment_count>27</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-16 08:50:49 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #26)
&gt; (In reply to Michael Catanzaro from comment #23)
&gt; &gt; BTW, the problem is:
&gt; &gt; 
&gt; &gt; ../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:61:
&gt; &gt; 12: error: no viable conversion from returned value of type
&gt; &gt; &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland,
&gt; &gt; default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type
&gt; &gt; &apos;unique_ptr&lt;WebCore::PlatformDisplay,
&gt; &gt; default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
&gt; &gt;     return platformDisplay;
&gt; &gt;            ^~~~~~~~~~~~~~~
&gt; &gt; 
&gt; &gt; which is a standard library bug, unique_ptr is supposed to support
&gt; &gt; polymorphism, but the GCC 4.9 unique_ptr does not.
&gt; 
&gt; It seems this is no a libstdc++_4.9 bug, but an issue with Clang itself
&gt; maybe?.
&gt; 
&gt; I&apos;m able to reproduce the very same build failure with Clang_3.8 and
&gt; libstdc++_6.3.0 (Debian stretch).
&gt; 

With clang_4.0 works, so its something affecting clang &lt; 4.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414790</commentid>
    <comment_count>28</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-16 08:58:30 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #27)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #26)
&gt; &gt; (In reply to Michael Catanzaro from comment #23)
&gt; &gt; &gt; BTW, the problem is:
&gt; &gt; &gt; 
&gt; &gt; &gt; ../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:61:
&gt; &gt; &gt; 12: error: no viable conversion from returned value of type
&gt; &gt; &gt; &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland,
&gt; &gt; &gt; default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type
&gt; &gt; &gt; &apos;unique_ptr&lt;WebCore::PlatformDisplay,
&gt; &gt; &gt; default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
&gt; &gt; &gt;     return platformDisplay;
&gt; &gt; &gt;            ^~~~~~~~~~~~~~~
&gt; &gt; &gt; 
&gt; &gt; &gt; which is a standard library bug, unique_ptr is supposed to support
&gt; &gt; &gt; polymorphism, but the GCC 4.9 unique_ptr does not.
&gt; &gt; 
&gt; &gt; It seems this is no a libstdc++_4.9 bug, but an issue with Clang itself
&gt; &gt; maybe?.
&gt; &gt; 
&gt; &gt; I&apos;m able to reproduce the very same build failure with Clang_3.8 and
&gt; &gt; libstdc++_6.3.0 (Debian stretch).
&gt; &gt; 
&gt; 
&gt; With clang_4.0 works, so its something affecting clang &lt; 4.0

It seems its related to this issue: https://stackoverflow.com/questions/48098327/polymorphic-unique-ptr-copy-elision

So, either we fix this to build with clang-3.8 or we declare a minimum compiler version on clang-4.0 when building with clang. Clang-3.8 was released on 2016/03.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414797</commentid>
    <comment_count>29</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-16 09:20:12 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #28)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #27)
&gt; &gt; (In reply to Carlos Alberto Lopez Perez from comment #26)
&gt; &gt; &gt; (In reply to Michael Catanzaro from comment #23)
&gt; &gt; &gt; &gt; BTW, the problem is:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:61:
&gt; &gt; &gt; &gt; 12: error: no viable conversion from returned value of type
&gt; &gt; &gt; &gt; &apos;unique_ptr&lt;WebCore::PlatformDisplayWayland,
&gt; &gt; &gt; &gt; default_delete&lt;WebCore::PlatformDisplayWayland&gt;&gt;&apos; to function return type
&gt; &gt; &gt; &gt; &apos;unique_ptr&lt;WebCore::PlatformDisplay,
&gt; &gt; &gt; &gt; default_delete&lt;WebCore::PlatformDisplay&gt;&gt;&apos;
&gt; &gt; &gt; &gt;     return platformDisplay;
&gt; &gt; &gt; &gt;            ^~~~~~~~~~~~~~~
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; which is a standard library bug, unique_ptr is supposed to support
&gt; &gt; &gt; &gt; polymorphism, but the GCC 4.9 unique_ptr does not.
&gt; &gt; &gt; 
&gt; &gt; &gt; It seems this is no a libstdc++_4.9 bug, but an issue with Clang itself
&gt; &gt; &gt; maybe?.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m able to reproduce the very same build failure with Clang_3.8 and
&gt; &gt; &gt; libstdc++_6.3.0 (Debian stretch).
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; With clang_4.0 works, so its something affecting clang &lt; 4.0
&gt; 
&gt; It seems its related to this issue:
&gt; https://stackoverflow.com/questions/48098327/polymorphic-unique-ptr-copy-
&gt; elision
&gt; 
&gt; So, either we fix this to build with clang-3.8 or we declare a minimum
&gt; compiler version on clang-4.0 when building with clang. Clang-3.8 was
&gt; released on 2016/03.

This will fix the build:


$ git diff
diff --git a/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp b/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
index 05f92c228fe..d62d054e7d7 100644
--- a/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
+++ b/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
@@ -58,14 +58,14 @@ std::unique_ptr&lt;PlatformDisplay&gt; PlatformDisplayWayland::create()
 
     auto platformDisplay = std::unique_ptr&lt;PlatformDisplayWayland&gt;(new PlatformDisplayWayland(display, NativeDisplayOwned::Yes));
     platformDisplay-&gt;initialize();
-    return platformDisplay;
+    return WTFMove(platformDisplay);
 }
 
 std::unique_ptr&lt;PlatformDisplay&gt; PlatformDisplayWayland::create(struct wl_display* display)
 {
     auto platformDisplay = std::unique_ptr&lt;PlatformDisplayWayland&gt;(new PlatformDisplayWayland(display, NativeDisplayOwned::No));
     platformDisplay-&gt;initialize();
-    return platformDisplay;
+    return WTFMove(platformDisplay);
 }
 
 PlatformDisplayWayland::PlatformDisplayWayland(struct wl_display* display, NativeDisplayOwned displayOwned)




Does it look good to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414843</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-16 11:38:21 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #29)
&gt; Does it look good to you?

OK, that&apos;s not too messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415096</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-17 04:29:35 -0700</bug_when>
    <thetext>Committed r230706: &lt;https://trac.webkit.org/changeset/230706&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337475</attachid>
            <date>2018-04-08 19:04:54 -0700</date>
            <delta_ts>2018-04-09 17:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184406-20180408210453.patch</filename>
            <type>text/plain</type>
            <size>3449</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1ZjdhOTc5MmRiODE2
NDhjZGQxMDFhMjBkOWVjMjVmMGM5NGUyMS4uZjE5ZDE4NjY0YTMyNjgyYTBlMmQyZWNjMDkxYjI0
YTE0Y2YyODllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA0LTA4ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgbGVha3MgaXRzIHdsX2Rpc3BsYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgcHJvdGVjdGVk
IGRlZmF1bHQgY29uc3RydWN0b3IsIGZvciBnb29kIG1lYXN1cmUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaDoKKwogMjAxOC0w
NC0wNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IHRoZSBzeXN0ZW0ncyBsaW5rIGNvbG9yIHdoZW4gc3lzdGVtIGFwcGVhcmFuY2UgaXMgZGVzaXJl
ZCBmb3IgYSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYzljNzRlY2NjZjgyZTM5YzRkMzM3MWE2NmJj
MzIxMWEyOGRhMWQ5Li41NGQxZTVhOGI3NTRkNWQ1NTgzZjgzNjM3YTBlOTMwMTNhOGM5N2EzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA0LTA4ICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXYXlsYW5kQ29tcG9zaXRv
ckRpc3BsYXkgbGVha3MgaXRzIHdsX2Rpc3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5Ojpj
cmVhdGUpOiBGaXggYSBsb2cgbWVzc2FnZSAoZHJpdmUtYnkpLgorICAgICAgICAoV2ViS2l0OjpX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OldheWxhbmRDb21wb3NpdG9yRGlzcGxheSk6IEZpeCB0
aGUgbGVhay4KKwogMjAxOC0wNC0wNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIyMjgzNzEpOiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRl
QWxsQ29va2llcyBkb2Vzbid0IGRlbGV0ZSBzb21lIGNvb2tpZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmgKaW5kZXggZTE3ZGNlMDRhYTczMjQwOGIyZDgzZjQxMWJjMmY1YWRkNjY3
ZDUyMi4uZDE1NzY4N2E4OTdmMjQ5MWY0NWY2MDdlNWYxZjBhYjRlYWFlYjEzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHJpdmF0ZToKICAg
ICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5
cGU6OldheWxhbmQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQo
KSA9IGRlZmF1bHQ7CiAgICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9kaXNwbGF5Kik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0cnlHbG9iYWwoY29uc3QgY2hhciogaW50ZXJmYWNlLCB1
aW50MzJfdCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcAppbmRleCAxNzczNWIxNDdhOWE2YzhiYjll
ZTBlOWM4ZDEwMzU1NGZkZmMzYWUzLi4yZjY0ZjRkYzc2ZDIwOWQ5MGU2N2M5Yjk3NTYzZGU3YjA3
OGEzZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ3RrL1dheWxhbmRD
b21wb3NpdG9yRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9X
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6
Y3JlYXRlKGNvbnN0CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSA9IHdsX2Rpc3Bs
YXlfY29ubmVjdChkaXNwbGF5TmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIWRpc3BsYXkp
IHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIGluaXRpYWxp
emF0aW9uOiBmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgV2F5bGFuZCBkaXNwbGF5OiAlcyIsIGRp
c3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRD
b21wb3NpdG9yRGlzcGxheSBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhl
IFdheWxhbmQgZGlzcGxheTogJXMiLCBkaXNwbGF5TmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02MSw4ICs2MSw4IEBAIHZvaWQgV2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qgd2xfc3VyZmFjZSog
c3VyZmFjZSwgV2ViCiB9CiAKIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6V2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5KHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQorICAgIDogUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZChkaXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6OlllcykKIHsKLSAgICBp
bml0aWFsaXplKGRpc3BsYXkpOwogICAgIFBsYXRmb3JtRGlzcGxheTo6c2V0U2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKCp0aGlzKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337562</attachid>
            <date>2018-04-09 17:28:44 -0700</date>
            <delta_ts>2018-04-09 17:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184406-20180409192844.patch</filename>
            <type>text/plain</type>
            <size>18544</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhhYWQzNGU3YjlmYTkx
ZjAwODBhMDg0NmJjODdhOWVmNDU2NDNjZi4uMGM5MDY3M2I2NjRmNzFmZDM5MzI1ZGNmOTc4N2Qz
NWFiZDQ3NjY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE4LTA0LTA5ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgbGVha3MgaXRzIHdsX2Rpc3BsYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlbGwsIHRoaXMgd2FzIGhhcmRl
ciB0aGFuIGV4cGVjdGVkLiBXZSByZWFsbHkganVzdCB3YW50IHRvIGZpeCBhIHNtYWxsIGxlYWsg
aW4gdGhlIFdlYktpdAorICAgICAgICBsYXllciwgYnV0IHRoYXQgcmVxdWlyZXMgYSBjaGFuZ2Ug
aW4gaG93IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBjYWxscyB0aGUKKyAgICAgICAgUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZCBjb25zdHJ1Y3RvciwgdG8gcGFzcyBOYXRpdmVEaXNwbGF5T3duZWQ6
Olllcy4gVGhhdCBtZWFucworICAgICAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgY2FuIG5v
IGxvbmdlciB1c2UgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCdzIHByb3RlY3RlZCBkZWZhdWx0Cisg
ICAgICAgIGNvbnN0cnVjdG9yLiBQcm9ibGVtIGlzIHRoYXQgdGhlIG5vcm1hbCBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kIGNvbnN0cnVjdG9yIGNhbGxzCisgICAgICAgIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OmluaXRpYWxpemUsIHdoaWNoIGNhbGxzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJl
Z2lzdHJ5R2xvYmFsLAorICAgICAgICB3aGljaCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uIFRoZSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGlzIG5vdAorICAg
ICAgICBjb25zdHJ1Y3RlZCB5ZXQgYXQgdGhpcyBwb2ludCwgc28gV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OjpyZWdpc3RyeUdsb2JhbCB3aWxsIG5ldmVyIGJlCisgICAgICAgIGNhbGxlZCBpZiB3
ZSBkbyB0aGF0LiBJIGhhZCB0byByZXZlcnQgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBm
aXggZHVlIHRvIHRoaXMgcHJvYmxlbS4KKyAgICAgICAgSXQgaGFkIGJyb2tlbiBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZy4KKworICAgICAgICBJJ20gcmVtaW5kZWQgb2YgRWZmZWN0aXZlIEMrKyBp
dGVtICM5OiBOZXZlciBjYWxsIHZpcnR1YWwgZnVuY3Rpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24g
b3IKKyAgICAgICAgZGVzdHJ1Y3Rpb24gKCJiZWNhdXNlIHN1Y2ggY2FsbHMgd2lsbCBuZXZlciBn
byB0byBhIG1vcmUgZGVyaXZlZCBjbGFzcyB0aGFuIHRoYXQgb2YgdGhlCisgICAgICAgIGN1cnJl
bnRseSBleGVjdXRpbmcgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciIpLiBUaGlzIGNvZGUgaXMg
ZnJhZ2lsZSBhbmQgbGlrZWx5IHRvIGJyZWFrCisgICAgICAgIGFnYWluIGluIHRoZSBmdXR1cmUs
IHNvIGxldCdzIHJlZmFjdG9yIGl0IGEgYml0LiBJbnN0ZWFkIG9mIGNhbGxpbmcgaW5pdGlhbGl6
ZSBpbiB0aGUKKyAgICAgICAgY29uc3RydWN0b3IsIHdlJ2xsIGNhbGwgaXQgZnJvbSBjcmVhdGUg
ZnVuY3Rpb25zLiBXZSdsbCBoYXZlIHRvIGFkZCBhIGNvdXBsZSBjcmVhdGUKKyAgICAgICAgZnVu
Y3Rpb25zLCBhbmQgbWFrZSB0aGUgY29uc3RydWN0b3IgcHJvdGVjdGVkIHRvIGVuc3VyZSBpdCdz
IG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgYQorICAgICAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
IHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0LiBGb3IgZ29vZCBwYXJhbGxlbGlzbSwgZG8gdGhlIHNh
bWUgZm9yIHRoZQorICAgICAgICBvdGhlciBQbGF0Zm9ybURpc3BsYXkgY2xhc3Nlcy4KKworICAg
ICAgICBUaGlzIGNvbW1pdCBhZGRpdGlvbmFsbHkgcmVtb3ZlcyBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kJ3MgcHJvdGVjdGVkIGRlZmF1bHQgY29uc3RydWN0b3IsCisgICAgICAgIHNpbmNlIGl0J3Mg
bm90IG5lZWRlZCBhbnltb3JlLgorCisgICAgICAgIFRoZSBOYXRpdmVEaXNwbGF5T3duZWQgYXJn
dW1lbnRzIHRvIHRoZSBQbGF0Zm9ybURpc3BsYXkgY29uc3RydWN0b3JzIGFyZSBub3cgbWFuZGF0
b3J5LAorICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIE5hdGl2ZURpc3BsYXlPd25lZDo6Tm8gYXMg
dGhlIGRlZmF1bHQgdmFsdWUsIHNpbmNlIHRoYXQgd2FzIGRhbmdlcm91c2x5CisgICAgICAgIGNs
b3NlIHRvIGJlaW5nIHRoZSBjYXVzZSBvZiB0aGlzIGxlYWssIGFuZCB0aGUgY29uc3RydWN0b3Jz
IGFyZSBub3cgYWNjZXNzZWQgZnJvbSBwcml2YXRlCisgICAgICAgIGNyZWF0ZSBmdW5jdGlvbnMg
YW55d2F5LiBTb21lIG1vcmUgY2F1dGlvbiB3aGVuIHVzaW5nIGRlZmF1bHQgcGFyYW1ldGVyIHZh
bHVlcyBpcyB3YXJyZW50ZWQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBMYXN0
bHksIHNpbmNlIHdlIGhhdmUgdG8gY2hhbmdlIFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZv
cm1EaXNwbGF5IHRvIHVzZSB0aGUgbmV3IGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMsIHRha2Ug
dGhlIG9wcG9ydHVuaXR5IHRvIG1vdmUgdGhpbmdzIGFyb3VuZCBhIGJpdCBmb3IgY2xhcml0eS4g
VGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvci4gSSB3YXMganVz
dCBkaXNhcHBvaW50ZWQgdGhhdCB0aGUgUGxhdGZvcm1EaXNwbGF5V1BFIGNyZWF0aW9uIHdhcyBh
dCB0aGUKKyAgICAgICAgYm90dG9tIG9mIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgYSBjb21tZW50IGlu
ZGljYXRpbmcgdGhhdCBub3JtYWwgZGlzcGxheSBjcmVhdGlvbiBoYXMgZmFpbGVkLAorICAgICAg
ICB3aGljaCBpcyBub3QgdGhlIGNhc2UgZm9yIFdQRS4KKworICAgICAgICBUaGlzIGFsbCBtaWdo
dCBoYXZlIGJlZW4gYSBiaXQgb3ZlcmtpbGwsIHNpbmNlIHRoZSBsZWFrIGNvdWxkIHByb2JhYmx5
IGhhdmUgYmVlbiBmaXhlZCBieQorICAgICAgICBwYXNzaW5nIG51bGxwdHIgdG8gdGhlIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQgY29uc3RydWN0b3IgZm9yIHRoZSB3bF9kaXNwbGF5IGFuZCBub3QK
KyAgICAgICAgcmVtb3ZpbmcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5J3MgY2FsbCB0byBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjppbml0aWFsaXplLiBCdXQgdGhlCisgICAgICAgIGNvcnJlY3Ru
ZXNzIG9mIHRoYXQgY29kZSB3b3VsZCB0aGVuIHJlbHkgb24gaW1wbGVtZW50YXRpb24gZGV0YWls
cyBvZiBpbml0aWFsaXplLCBzbyB0aGlzCisgICAgICAgIHJlZmFjdG9yIHNlZW1zIGJldHRlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgKnNob3VsZCogYmUgbm8gYmVoYXZp
b3IgY2hhbmdlLiBUaGVuIGFnYWluLCBJJ20gdG91Y2hpbmcKKyAgICAgICAgUGxhdGZvcm1EaXNw
bGF5LCBhbmQgaGlzdG9yeSBzaG93cyB3ZSBkb24ndCBoYXZlIHRoZSBncmVhdGVzdCB0cmFjayBy
ZWNvcmQgb2YgdG91Y2hpbmcgdGhpcworICAgICAgICBjb2RlIHdpdGhvdXQgaW50cm9kdWNpbmcg
cHJvYmxlbXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0Zm9ybURp
c3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlRm9yTmF0
aXZlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpj
cmVhdGVIZWFkbGVzcyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
OjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QbGF0Zm9ybURpc3BsYXlXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93cGUvUGxhdGZvcm1EaXNwbGF5V1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxheVdQRS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5WDExOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5WDExOjpjcmVhdGVGb3JOYXRpdmVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlSGVhZGxlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaDoKKwogMjAx
OC0wNC0wOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDM5MC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWExZWVj
Y2E2ZGZjMzNlYzA1OWJkMDViNmYxYTZkZmNmODM5YzdhMi4uYTUxN2QzOTYzZmQ2Y2Y3YjA0ZjAy
Mzc2NWM5MGExMjM3ZWExZGRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wNC0w
OSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5IGxlYWtzIGl0cyB3bF9kaXNwbGF5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB3ZSBhbGxv
Y2F0ZSBvdXIgb3duIHdsX2Rpc3BsYXkgaGVyZSwgbmVlZCB0byBjaGFpbiB1cCB0byB0aGUgcGFy
ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIHBhc3NpbmcgTmF0aXZlRGlzcGxheU93bmVkOjpZZXMs
IG9yIGl0IHdvbid0IGV2ZXIgYmUgcmVsZWFzZWQuIE1vdmUgdGhlIGluaXRpYWxpemUgY2FsbCB0
bworICAgICAgICB0aGUgY3JlYXRlIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBhZnRl
ciB0aGUgY29uc3RydWN0b3IgY29tcGxldGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5OjpjcmVhdGUpOiBGaXggYSBsb2cgbWVzc2FnZSAoZHJpdmUtYnkpLgor
ICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OldheWxhbmRDb21wb3Np
dG9yRGlzcGxheSk6CisKIDIwMTgtMDQtMDkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFy
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1vdmUgJ3VzaW5nIG5hbWVzcGFj
ZScgYmFjayB0byB0aGUgcmlnaHQgcGxhY2UgYWZ0ZXIgcjIzMDQyOQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggNjMx
NGM0Mjg5NjFhZjIwOGIyMjlhNjUzZmZjZjQ2MDIzMTA5MWYxMS4uM2YzNzgzODNlNTUzZGVhMmVj
NDU3YTE5YTMzNjFjYjQ4OTNhZTQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC03NSwyMCArNzUsMjQgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0
Zm9ybURpc3BsYXkoKQogewogI2lmIFBMQVRGT1JNKEdUSykKICNpZiBkZWZpbmVkKEdUS19BUElf
VkVSU0lPTl8yKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVgx
MT4oR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSkpOworICAg
IHJldHVybiBQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZUZvck5hdGl2ZURpc3BsYXkoR0RLX0RJ
U1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSkpOwogI2Vsc2UKICAgICBH
ZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVsdF9kaXNw
bGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBp
ZiAoR0RLX0lTX1gxMV9ESVNQTEFZKGRpc3BsYXkpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlYMTE+KEdES19ESVNQTEFZX1hESVNQTEFZKGRpc3BsYXkp
KTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlRm9yTmF0aXZlRGlz
cGxheShHREtfRElTUExBWV9YRElTUExBWShkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShXQVlMQU5EKQogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihnZGtf
d2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkpKTsKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUZvck5hdGl2ZURpc3BsYXkoZ2RrX3dheWxh
bmRfZGlzcGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KSk7CiAjZW5kaWYKICNlbmRpZgorI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKKworI2lmIFBMQVRGT1JNKFdQRSkKKyAgICByZXR1cm4gUGxh
dGZvcm1EaXNwbGF5V1BFOjpjcmVhdGUoKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXaW4+KCk7CisgICAgcmV0dXJuIFBs
YXRmb3JtRGlzcGxheVdpbjo6Y3JlYXRlKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCkBAIC0xMDMsMTggKzEwNywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5
PiBQbGF0Zm9ybURpc3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCiAKICAgICAvLyBJZiBh
dCB0aGlzIHBvaW50IHdlIHN0aWxsIGRvbid0IGhhdmUgYSBkaXNwbGF5LCBqdXN0IGNyZWF0ZSBh
IGZha2UgZGlzcGxheSB3aXRoIG5vIG5hdGl2ZS4KICNpZiBQTEFURk9STShXQVlMQU5EKQotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KG51bGxwdHIp
OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oWDExKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtRGlzcGxheVgxMT4obnVsbHB0cik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdQ
RSkKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXUEU+KCk7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNzKCk7CisjZWxp
ZiBQTEFURk9STShYMTEpCisgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlSGVh
ZGxlc3MoKTsKICNlbmRpZgogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogUGxhdGZv
cm1EaXNwbGF5JiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAppbmRleCAyNDhk
YTZjMTQxMmE2M2VhNDVhZjZjYzgwM2JiMzIwMTg0MmRjZDNiLi5kYmY2NjllNDA3ZGMwZTYyNjA4
MmYwZWIxOGQ5ODczZjQxYWI0NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICBlbnVtIGNsYXNzIE5hdGl2ZURpc3BsYXlPd25lZCB7IE5vLCBZZXMg
fTsKLSAgICBleHBsaWNpdCBQbGF0Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVkID0gTmF0
aXZlRGlzcGxheU93bmVkOjpObyk7CisgICAgZXhwbGljaXQgUGxhdGZvcm1EaXNwbGF5KE5hdGl2
ZURpc3BsYXlPd25lZCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTaGFyZWREaXNwbGF5Rm9yQ29t
cG9zaXRpbmcoUGxhdGZvcm1EaXNwbGF5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdh
eWxhbmQuY3BwCmluZGV4IDNiOWIyY2U5M2MzMDk0NDUyZGFiNjRlNWI3MGNjMzJmZGVlYTgyYTIu
LjQ3OTE3YjY2YzM5ODk3MmQ1MjYxMGJiMmU0MzE5NDJhMDNmYmE2NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9Q
bGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcApAQCAtNTYsMTMgKzU2LDI5IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZSgpCiAg
ICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KGRpc3BsYXksIE5hdGl2ZURp
c3BsYXlPd25lZDo6WWVzKTsKKyAgICBhdXRvIHBsYXRmb3JtRGlzcGxheSA9IHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihuZXcgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChk
aXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6OlllcykpOworICAgIHBsYXRmb3JtRGlzcGxheS0+
aW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybURpc3BsYXk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUZv
ck5hdGl2ZURpc3BsYXkoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCit7CisgICAgQVNTRVJU
KGRpc3BsYXkpOworCisgICAgYXV0byBwbGF0Zm9ybURpc3BsYXkgPSBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4obmV3IFBsYXRmb3JtRGlzcGxheVdheWxhbmQoZGlzcGxh
eSwgTmF0aXZlRGlzcGxheU93bmVkOjpObykpOworICAgIHBsYXRmb3JtRGlzcGxheS0+aW5pdGlh
bGl6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybURpc3BsYXk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNz
KCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+
KG5ldyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKG51bGxwdHIsIE5hdGl2ZURpc3BsYXlPd25lZDo6
Tm8pKTsKIH0KIAogUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZChzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkIGRpc3BsYXlP
d25lZCkKICAgICA6IFBsYXRmb3JtRGlzcGxheShkaXNwbGF5T3duZWQpCisgICAgLCBtX2Rpc3Bs
YXkoZGlzcGxheSkKIHsKLSAgICBpbml0aWFsaXplKGRpc3BsYXkpOwogfQogCiBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpCkBAIC03NCwxMSArOTAsOSBA
QCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpCiAgICAg
fQogfQogCi12b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUod2xfZGlzcGxh
eSogZGlzcGxheSkKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6aW5pdGlhbGl6ZSgpCiB7
Ci0gICAgbV9kaXNwbGF5ID0gZGlzcGxheTsKLSAgICBpZiAoIW1fZGlzcGxheSkKLSAgICAgICAg
cmV0dXJuOworICAgIEFTU0VSVChtX2Rpc3BsYXkpOwogCiAgICAgbV9yZWdpc3RyeS5yZXNldCh3
bF9kaXNwbGF5X2dldF9yZWdpc3RyeShtX2Rpc3BsYXkpKTsKICAgICB3bF9yZWdpc3RyeV9hZGRf
bGlzdGVuZXIobV9yZWdpc3RyeS5nZXQoKSwgJnNfcmVnaXN0cnlMaXN0ZW5lciwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRm
b3JtRGlzcGxheVdheWxhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCmluZGV4IGUxN2RjZTA0YWE3MzI0MDhiMmQ4
M2Y0MTFiYzJmNWFkZDY2N2Q1MjIuLmRkNTE4NDBhNjQzNTE2OThkN2ZkYjFkZjQ1MmU5YWQ3OTJk
YTczMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCkBAIC0zNyw3ICszNyw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQgOiBw
dWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlKCk7Ci0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZChzdHJ1Y3Qgd2xfZGlzcGxheSosIE5hdGl2ZURpc3BsYXlPd25lZCA9IE5hdGl2ZURpc3BsYXlP
d25lZDo6Tm8pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBj
cmVhdGVGb3JOYXRpdmVEaXNwbGF5KHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZUhlYWRsZXNzKCk7CisKICAgICB2
aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxh
eSogbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CkBAIC00NywxMSArNDksMTIg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5
X2xpc3RlbmVyIHNfcmVnaXN0cnlMaXN0ZW5lcjsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZDsgfQorICAgIFR5
cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5
bGFuZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpID0gZGVm
YXVsdDsKLSAgICB2b2lkIGluaXRpYWxpemUoc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyAgICBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVk
KTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdHJ5
R2xvYmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3BsYXlX
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3Bs
YXlXaW4uaAppbmRleCBmZDhjZTI4MmM3M2JlYTljMzQ0ZDkxZGZkMjVjMmZkMDlmYzhmOTVlLi41
YWMxZWZiZTM2NjM2ZDk5OTVmOTJiY2RmM2Q1MzlhYjNiMGU5MWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1EaXNwbGF5V2luLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtRGlzcGxheVdp
bi5oCkBAIC0zMyw3ICszMywxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0
Zm9ybURpc3BsYXlXaW4gZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdpbj4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2lu
PihuZXcgUGxhdGZvcm1EaXNwbGF5V2luKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflBsYXRm
b3JtRGlzcGxheVdpbigpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKKyAgICBQbGF0Zm9ybURpc3Bs
YXlXaW4oKSA9IGRlZmF1bHQ7CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldpbmRvd3M7IH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3BsYXlXUEUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxh
eVdQRS5jcHAKaW5kZXggMDU2OGRhZGRlOGY4YTBjNTk4ZmM3NGExYjY3MDcyNTE2NDEyMTk0Zi4u
Njg5OTQ5MmU0ZDQ1MTRmNjk3NTE0ZTZlMmY2ZTkzYWEwM2EyYTYxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxheVdQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxh
eVdQRS5jcHAKQEAgLTM3LDYgKzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdQRT4gY3JlYXRlKCkKK3sKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdQRT4obmV3IFBsYXRmb3JtRGlzcGxheVdQ
RSgpKTsKK30KKwogUGxhdGZvcm1EaXNwbGF5V1BFOjpQbGF0Zm9ybURpc3BsYXlXUEUoKSA9IGRl
ZmF1bHQ7CiAKIFBsYXRmb3JtRGlzcGxheVdQRTo6flBsYXRmb3JtRGlzcGxheVdQRSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1EaXNw
bGF5V1BFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1E
aXNwbGF5V1BFLmgKaW5kZXggMDVlNDQ3YWVmNWQyZWVjZjg3ZmZmOTBlMTBiYTdlZWUxMTUxOWM5
Ni4uMzIxMTkxNTg4OWI2ZTViZjFhNGQ2ZTExMjg3YjhhNDU4MjAwOWYxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxheVdQRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3Bs
YXlXUEUuaApAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBs
YXRmb3JtRGlzcGxheVdQRSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogcHVibGlj
OgotICAgIFBsYXRmb3JtRGlzcGxheVdQRSgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1EaXNwbGF5V1BFPiBjcmVhdGUoKTsKKwogICAgIHZpcnR1YWwgflBsYXRmb3JtRGlz
cGxheVdQRSgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKGludCk7CkBAIC00Myw2ICs0NCw4IEBA
IHB1YmxpYzoKICAgICBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsKiBiYWNrZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZW5kOyB9CiAKIHByaXZhdGU6CisgICAgUGxhdGZvcm1EaXNw
bGF5V1BFKCk7CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0
Zm9ybURpc3BsYXk6OlR5cGU6OldQRTsgfQogCiAgICAgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNr
ZW5kX2VnbCogbV9iYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAppbmRleCA1YWVmZTZkNTFk
ZTYyMGE5MjU5M2UxOThmYjkzNjVkZmM4OWVjZjljLi5iMTlmNzM0OTRmNDIzZGJhM2M0NmNkZDcy
ZmY0YzBlNThjOWYyMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcApAQCAtNDgsNyArNDgsMTcg
QEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5WDExOjpj
cmVhdGUoKQogICAgIGlmICghZGlzcGxheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXksIE5h
dGl2ZURpc3BsYXlPd25lZDo6WWVzKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtRGlzcGxheVgxMT4obmV3IFBsYXRmb3JtRGlzcGxheVgxMShkaXNwbGF5LCBOYXRpdmVEaXNw
bGF5T3duZWQ6OlllcykpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQ
bGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZUZvck5hdGl2ZURpc3BsYXkoRGlzcGxheSogZGlzcGxh
eSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVgxMT4obmV3
IFBsYXRmb3JtRGlzcGxheVgxMShkaXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6Ok5vKSk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVgxMTo6
Y3JlYXRlSGVhZGxlc3MoKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1E
aXNwbGF5WDExPihuZXcgUGxhdGZvcm1EaXNwbGF5WDExKG51bGxwdHIsIE5hdGl2ZURpc3BsYXlP
d25lZDo6Tm8pKTsKIH0KIAogUGxhdGZvcm1EaXNwbGF5WDExOjpQbGF0Zm9ybURpc3BsYXlYMTEo
RGlzcGxheSogZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkIGRpc3BsYXlPd25lZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3Bs
YXlYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURp
c3BsYXlYMTEuaAppbmRleCAzMTE3NDQ1NzZhZWYwMjIwMzkyNGFhNzBlNGMxZTFlNzkzMTEyMDY1
Li43ODlhYWFhZWQxNzU3ZDI2MmEwZTc0NGRlZGU2YjE4YzA4MzhiOWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxh
eVgxMS5oCkBAIC0zOCw3ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsYXRm
b3JtRGlzcGxheVgxMSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBjcmVhdGUoKTsKLSAg
ICBQbGF0Zm9ybURpc3BsYXlYMTEoRGlzcGxheSosIE5hdGl2ZURpc3BsYXlPd25lZCA9IE5hdGl2
ZURpc3BsYXlPd25lZDo6Tm8pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1E
aXNwbGF5PiBjcmVhdGVGb3JOYXRpdmVEaXNwbGF5KERpc3BsYXkqKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlSGVhZGxlc3MoKTsKKwogICAgIHZp
cnR1YWwgflBsYXRmb3JtRGlzcGxheVgxMSgpOwogCiAgICAgRGlzcGxheSogbmF0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CkBAIC00Niw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzWERhbWFnZShzdGQ6Om9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwg
c3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VFcnJvckJhc2UpIGNvbnN0OwogCiBwcml2YXRlOgor
ICAgIFBsYXRmb3JtRGlzcGxheVgxMShEaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVkKTsKKwog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExOyB9CiAKICNpZiBVU0UoRUdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCmluZGV4IDE3NzM1
YjE0N2E5YTZjOGJiOWVlMGU5YzhkMTAzNTU0ZmRmYzNhZTMuLjYxZTZhN2VjOGQ4MGU1MTQyYjhh
ZDNlNjc1YzgzNmUyY2IwNTUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKQEAgLTQ0LDExICs0NCwx
MyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PiBXYXlsYW5kQ29t
cG9zaXRvckRpc3BsYXk6OmNyZWF0ZShjb25zdAogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIGRp
c3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QoZGlzcGxheU5hbWUudXRmOCgpLmRhdGEoKSk7CiAg
ICAgaWYgKCFkaXNwbGF5KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQg
ZGlzcGxheTogJXMiLCBkaXNwbGF5TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0
byBjb25uZWN0IHRvIHRoZSBXYXlsYW5kIGRpc3BsYXk6ICVzIiwgZGlzcGxheU5hbWUudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PihuZXcgV2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5KGRpc3BsYXkpKTsKKyAgICBhdXRvIGNvbXBvc2l0b3JEaXNwbGF5ID0gc3Rk
Ojp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4obmV3IFdheWxhbmRDb21wb3Np
dG9yRGlzcGxheShkaXNwbGF5KSk7CisgICAgY29tcG9zaXRvckRpc3BsYXktPmluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gY29tcG9zaXRvckRpc3BsYXk7CiB9CiAKIHZvaWQgV2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFj
ZSwgV2ViUGFnZSYgcGFnZSkKQEAgLTYxLDggKzYzLDggQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRv
ckRpc3BsYXk6OmJpbmRTdXJmYWNlVG9QYWdlKHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlLCBX
ZWIKIH0KIAogV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpXYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCisgICAgOiBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kKGRpc3BsYXksIE5hdGl2ZURpc3BsYXlPd25lZDo6WWVzKQogewotICAgIGluaXRpYWxpemUo
ZGlzcGxheSk7CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9z
aXRpbmcoKnRoaXMpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337563</attachid>
            <date>2018-04-09 17:36:54 -0700</date>
            <delta_ts>2018-04-10 12:09:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184406-20180409193653.patch</filename>
            <type>text/plain</type>
            <size>18544</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhhYWQzNGU3YjlmYTkx
ZjAwODBhMDg0NmJjODdhOWVmNDU2NDNjZi4uZDYxMTAyMDJlNjE2N2JiYTk1M2NiM2EwNWJkODBh
NTliNzVmMzA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE4LTA0LTA5ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgbGVha3MgaXRzIHdsX2Rpc3BsYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlbGwsIHRoaXMgd2FzIGhhcmRl
ciB0aGFuIGV4cGVjdGVkLiBXZSByZWFsbHkganVzdCB3YW50IHRvIGZpeCBhIHNtYWxsIGxlYWsg
aW4gdGhlIFdlYktpdAorICAgICAgICBsYXllciwgYnV0IHRoYXQgcmVxdWlyZXMgYSBjaGFuZ2Ug
aW4gaG93IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBjYWxscyB0aGUKKyAgICAgICAgUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZCBjb25zdHJ1Y3RvciwgdG8gcGFzcyBOYXRpdmVEaXNwbGF5T3duZWQ6
Olllcy4gVGhhdCBtZWFucworICAgICAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgY2FuIG5v
IGxvbmdlciB1c2UgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCdzIHByb3RlY3RlZCBkZWZhdWx0Cisg
ICAgICAgIGNvbnN0cnVjdG9yLiBQcm9ibGVtIGlzIHRoYXQgdGhlIG5vcm1hbCBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kIGNvbnN0cnVjdG9yIGNhbGxzCisgICAgICAgIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OmluaXRpYWxpemUsIHdoaWNoIGNhbGxzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJl
Z2lzdHJ5R2xvYmFsLAorICAgICAgICB3aGljaCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uIFRoZSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGlzIG5vdAorICAg
ICAgICBjb25zdHJ1Y3RlZCB5ZXQgYXQgdGhpcyBwb2ludCwgc28gV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OjpyZWdpc3RyeUdsb2JhbCB3aWxsIG5ldmVyIGJlCisgICAgICAgIGNhbGxlZCBpZiB3
ZSBkbyB0aGF0LiBJIGhhZCB0byByZXZlcnQgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBm
aXggZHVlIHRvIHRoaXMgcHJvYmxlbS4KKyAgICAgICAgSXQgaGFkIGJyb2tlbiBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZy4KKworICAgICAgICBJJ20gcmVtaW5kZWQgb2YgRWZmZWN0aXZlIEMrKyBp
dGVtICM5OiBOZXZlciBjYWxsIHZpcnR1YWwgZnVuY3Rpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24g
b3IKKyAgICAgICAgZGVzdHJ1Y3Rpb24gKCJiZWNhdXNlIHN1Y2ggY2FsbHMgd2lsbCBuZXZlciBn
byB0byBhIG1vcmUgZGVyaXZlZCBjbGFzcyB0aGFuIHRoYXQgb2YgdGhlCisgICAgICAgIGN1cnJl
bnRseSBleGVjdXRpbmcgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciIpLiBUaGlzIGNvZGUgaXMg
ZnJhZ2lsZSBhbmQgbGlrZWx5IHRvIGJyZWFrCisgICAgICAgIGFnYWluIGluIHRoZSBmdXR1cmUs
IHNvIGxldCdzIHJlZmFjdG9yIGl0IGEgYml0LiBJbnN0ZWFkIG9mIGNhbGxpbmcgaW5pdGlhbGl6
ZSBpbiB0aGUKKyAgICAgICAgY29uc3RydWN0b3IsIHdlJ2xsIGNhbGwgaXQgZnJvbSBjcmVhdGUg
ZnVuY3Rpb25zLiBXZSdsbCBoYXZlIHRvIGFkZCBhIGNvdXBsZSBjcmVhdGUKKyAgICAgICAgZnVu
Y3Rpb25zLCBhbmQgbWFrZSB0aGUgY29uc3RydWN0b3IgcHJvdGVjdGVkIHRvIGVuc3VyZSBpdCdz
IG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgYQorICAgICAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
IHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0LiBGb3IgZ29vZCBwYXJhbGxlbGlzbSwgZG8gdGhlIHNh
bWUgZm9yIHRoZQorICAgICAgICBvdGhlciBQbGF0Zm9ybURpc3BsYXkgY2xhc3Nlcy4KKworICAg
ICAgICBUaGlzIGNvbW1pdCBhZGRpdGlvbmFsbHkgcmVtb3ZlcyBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kJ3MgcHJvdGVjdGVkIGRlZmF1bHQgY29uc3RydWN0b3IsCisgICAgICAgIHNpbmNlIGl0J3Mg
bm90IG5lZWRlZCBhbnltb3JlLgorCisgICAgICAgIFRoZSBOYXRpdmVEaXNwbGF5T3duZWQgYXJn
dW1lbnRzIHRvIHRoZSBQbGF0Zm9ybURpc3BsYXkgY29uc3RydWN0b3JzIGFyZSBub3cgbWFuZGF0
b3J5LAorICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIE5hdGl2ZURpc3BsYXlPd25lZDo6Tm8gYXMg
dGhlIGRlZmF1bHQgdmFsdWUsIHNpbmNlIHRoYXQgd2FzIGRhbmdlcm91c2x5CisgICAgICAgIGNs
b3NlIHRvIGJlaW5nIHRoZSBjYXVzZSBvZiB0aGlzIGxlYWssIGFuZCB0aGUgY29uc3RydWN0b3Jz
IGFyZSBub3cgYWNjZXNzZWQgZnJvbSBwcml2YXRlCisgICAgICAgIGNyZWF0ZSBmdW5jdGlvbnMg
YW55d2F5LiBTb21lIG1vcmUgY2F1dGlvbiB3aGVuIHVzaW5nIGRlZmF1bHQgcGFyYW1ldGVyIHZh
bHVlcyBpcyB3YXJyYW50ZWQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBMYXN0
bHksIHNpbmNlIHdlIGhhdmUgdG8gY2hhbmdlIFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZv
cm1EaXNwbGF5IHRvIHVzZSB0aGUgbmV3IGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMsIHRha2Ug
dGhlIG9wcG9ydHVuaXR5IHRvIG1vdmUgdGhpbmdzIGFyb3VuZCBhIGJpdCBmb3IgY2xhcml0eS4g
VGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvci4gSSB3YXMganVz
dCBkaXNhcHBvaW50ZWQgdGhhdCB0aGUgUGxhdGZvcm1EaXNwbGF5V1BFIGNyZWF0aW9uIHdhcyBh
dCB0aGUKKyAgICAgICAgYm90dG9tIG9mIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgYSBjb21tZW50IGlu
ZGljYXRpbmcgdGhhdCBub3JtYWwgZGlzcGxheSBjcmVhdGlvbiBoYXMgZmFpbGVkLAorICAgICAg
ICB3aGljaCBpcyBub3QgdGhlIGNhc2UgZm9yIFdQRS4KKworICAgICAgICBUaGlzIGFsbCBtaWdo
dCBoYXZlIGJlZW4gYSBiaXQgb3ZlcmtpbGwsIHNpbmNlIHRoZSBsZWFrIGNvdWxkIHByb2JhYmx5
IGhhdmUgYmVlbiBmaXhlZCBieQorICAgICAgICBwYXNzaW5nIG51bGxwdHIgdG8gdGhlIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQgY29uc3RydWN0b3IgZm9yIHRoZSB3bF9kaXNwbGF5IGFuZCBub3QK
KyAgICAgICAgcmVtb3ZpbmcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5J3MgY2FsbCB0byBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjppbml0aWFsaXplLiBCdXQgdGhlCisgICAgICAgIGNvcnJlY3Ru
ZXNzIG9mIHRoYXQgY29kZSB3b3VsZCB0aGVuIHJlbHkgb24gaW1wbGVtZW50YXRpb24gZGV0YWls
cyBvZiBpbml0aWFsaXplLCBzbyB0aGlzCisgICAgICAgIHJlZmFjdG9yIHNlZW1zIGJldHRlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgKnNob3VsZCogYmUgbm8gYmVoYXZp
b3IgY2hhbmdlLiBUaGVuIGFnYWluLCBJJ20gdG91Y2hpbmcKKyAgICAgICAgUGxhdGZvcm1EaXNw
bGF5LCBhbmQgaGlzdG9yeSBzaG93cyB3ZSBkb24ndCBoYXZlIHRoZSBncmVhdGVzdCB0cmFjayBy
ZWNvcmQgb2YgdG91Y2hpbmcgdGhpcworICAgICAgICBjb2RlIHdpdGhvdXQgaW50cm9kdWNpbmcg
cHJvYmxlbXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0Zm9ybURp
c3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlRm9yTmF0
aXZlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpj
cmVhdGVIZWFkbGVzcyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
OjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QbGF0Zm9ybURpc3BsYXlXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93cGUvUGxhdGZvcm1EaXNwbGF5V1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxheVdQRS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5WDExOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5WDExOjpjcmVhdGVGb3JOYXRpdmVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlSGVhZGxlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaDoKKwogMjAx
OC0wNC0wOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDM5MC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWExZWVj
Y2E2ZGZjMzNlYzA1OWJkMDViNmYxYTZkZmNmODM5YzdhMi4uYTUxN2QzOTYzZmQ2Y2Y3YjA0ZjAy
Mzc2NWM5MGExMjM3ZWExZGRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wNC0w
OSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5IGxlYWtzIGl0cyB3bF9kaXNwbGF5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB3ZSBhbGxv
Y2F0ZSBvdXIgb3duIHdsX2Rpc3BsYXkgaGVyZSwgbmVlZCB0byBjaGFpbiB1cCB0byB0aGUgcGFy
ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIHBhc3NpbmcgTmF0aXZlRGlzcGxheU93bmVkOjpZZXMs
IG9yIGl0IHdvbid0IGV2ZXIgYmUgcmVsZWFzZWQuIE1vdmUgdGhlIGluaXRpYWxpemUgY2FsbCB0
bworICAgICAgICB0aGUgY3JlYXRlIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBhZnRl
ciB0aGUgY29uc3RydWN0b3IgY29tcGxldGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5OjpjcmVhdGUpOiBGaXggYSBsb2cgbWVzc2FnZSAoZHJpdmUtYnkpLgor
ICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OldheWxhbmRDb21wb3Np
dG9yRGlzcGxheSk6CisKIDIwMTgtMDQtMDkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFy
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1vdmUgJ3VzaW5nIG5hbWVzcGFj
ZScgYmFjayB0byB0aGUgcmlnaHQgcGxhY2UgYWZ0ZXIgcjIzMDQyOQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggNjMx
NGM0Mjg5NjFhZjIwOGIyMjlhNjUzZmZjZjQ2MDIzMTA5MWYxMS4uM2YzNzgzODNlNTUzZGVhMmVj
NDU3YTE5YTMzNjFjYjQ4OTNhZTQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC03NSwyMCArNzUsMjQgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0
Zm9ybURpc3BsYXkoKQogewogI2lmIFBMQVRGT1JNKEdUSykKICNpZiBkZWZpbmVkKEdUS19BUElf
VkVSU0lPTl8yKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVgx
MT4oR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSkpOworICAg
IHJldHVybiBQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZUZvck5hdGl2ZURpc3BsYXkoR0RLX0RJ
U1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSkpOwogI2Vsc2UKICAgICBH
ZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVsdF9kaXNw
bGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBp
ZiAoR0RLX0lTX1gxMV9ESVNQTEFZKGRpc3BsYXkpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlYMTE+KEdES19ESVNQTEFZX1hESVNQTEFZKGRpc3BsYXkp
KTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlRm9yTmF0aXZlRGlz
cGxheShHREtfRElTUExBWV9YRElTUExBWShkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShXQVlMQU5EKQogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihnZGtf
d2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkpKTsKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUZvck5hdGl2ZURpc3BsYXkoZ2RrX3dheWxh
bmRfZGlzcGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KSk7CiAjZW5kaWYKICNlbmRpZgorI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKKworI2lmIFBMQVRGT1JNKFdQRSkKKyAgICByZXR1cm4gUGxh
dGZvcm1EaXNwbGF5V1BFOjpjcmVhdGUoKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXaW4+KCk7CisgICAgcmV0dXJuIFBs
YXRmb3JtRGlzcGxheVdpbjo6Y3JlYXRlKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCkBAIC0xMDMsMTggKzEwNywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5
PiBQbGF0Zm9ybURpc3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCiAKICAgICAvLyBJZiBh
dCB0aGlzIHBvaW50IHdlIHN0aWxsIGRvbid0IGhhdmUgYSBkaXNwbGF5LCBqdXN0IGNyZWF0ZSBh
IGZha2UgZGlzcGxheSB3aXRoIG5vIG5hdGl2ZS4KICNpZiBQTEFURk9STShXQVlMQU5EKQotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KG51bGxwdHIp
OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oWDExKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtRGlzcGxheVgxMT4obnVsbHB0cik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdQ
RSkKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXUEU+KCk7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNzKCk7CisjZWxp
ZiBQTEFURk9STShYMTEpCisgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlSGVh
ZGxlc3MoKTsKICNlbmRpZgogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogUGxhdGZv
cm1EaXNwbGF5JiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAppbmRleCAyNDhk
YTZjMTQxMmE2M2VhNDVhZjZjYzgwM2JiMzIwMTg0MmRjZDNiLi5kYmY2NjllNDA3ZGMwZTYyNjA4
MmYwZWIxOGQ5ODczZjQxYWI0NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICBlbnVtIGNsYXNzIE5hdGl2ZURpc3BsYXlPd25lZCB7IE5vLCBZZXMg
fTsKLSAgICBleHBsaWNpdCBQbGF0Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVkID0gTmF0
aXZlRGlzcGxheU93bmVkOjpObyk7CisgICAgZXhwbGljaXQgUGxhdGZvcm1EaXNwbGF5KE5hdGl2
ZURpc3BsYXlPd25lZCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTaGFyZWREaXNwbGF5Rm9yQ29t
cG9zaXRpbmcoUGxhdGZvcm1EaXNwbGF5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdh
eWxhbmQuY3BwCmluZGV4IDNiOWIyY2U5M2MzMDk0NDUyZGFiNjRlNWI3MGNjMzJmZGVlYTgyYTIu
LjQ3OTE3YjY2YzM5ODk3MmQ1MjYxMGJiMmU0MzE5NDJhMDNmYmE2NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9Q
bGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcApAQCAtNTYsMTMgKzU2LDI5IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZSgpCiAg
ICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KGRpc3BsYXksIE5hdGl2ZURp
c3BsYXlPd25lZDo6WWVzKTsKKyAgICBhdXRvIHBsYXRmb3JtRGlzcGxheSA9IHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihuZXcgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChk
aXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6OlllcykpOworICAgIHBsYXRmb3JtRGlzcGxheS0+
aW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybURpc3BsYXk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUZv
ck5hdGl2ZURpc3BsYXkoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCit7CisgICAgQVNTRVJU
KGRpc3BsYXkpOworCisgICAgYXV0byBwbGF0Zm9ybURpc3BsYXkgPSBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4obmV3IFBsYXRmb3JtRGlzcGxheVdheWxhbmQoZGlzcGxh
eSwgTmF0aXZlRGlzcGxheU93bmVkOjpObykpOworICAgIHBsYXRmb3JtRGlzcGxheS0+aW5pdGlh
bGl6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybURpc3BsYXk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNz
KCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+
KG5ldyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKG51bGxwdHIsIE5hdGl2ZURpc3BsYXlPd25lZDo6
Tm8pKTsKIH0KIAogUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZChzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkIGRpc3BsYXlP
d25lZCkKICAgICA6IFBsYXRmb3JtRGlzcGxheShkaXNwbGF5T3duZWQpCisgICAgLCBtX2Rpc3Bs
YXkoZGlzcGxheSkKIHsKLSAgICBpbml0aWFsaXplKGRpc3BsYXkpOwogfQogCiBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpCkBAIC03NCwxMSArOTAsOSBA
QCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpCiAgICAg
fQogfQogCi12b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUod2xfZGlzcGxh
eSogZGlzcGxheSkKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6aW5pdGlhbGl6ZSgpCiB7
Ci0gICAgbV9kaXNwbGF5ID0gZGlzcGxheTsKLSAgICBpZiAoIW1fZGlzcGxheSkKLSAgICAgICAg
cmV0dXJuOworICAgIEFTU0VSVChtX2Rpc3BsYXkpOwogCiAgICAgbV9yZWdpc3RyeS5yZXNldCh3
bF9kaXNwbGF5X2dldF9yZWdpc3RyeShtX2Rpc3BsYXkpKTsKICAgICB3bF9yZWdpc3RyeV9hZGRf
bGlzdGVuZXIobV9yZWdpc3RyeS5nZXQoKSwgJnNfcmVnaXN0cnlMaXN0ZW5lciwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRm
b3JtRGlzcGxheVdheWxhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCmluZGV4IGUxN2RjZTA0YWE3MzI0MDhiMmQ4
M2Y0MTFiYzJmNWFkZDY2N2Q1MjIuLmRkNTE4NDBhNjQzNTE2OThkN2ZkYjFkZjQ1MmU5YWQ3OTJk
YTczMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCkBAIC0zNyw3ICszNyw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQgOiBw
dWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlKCk7Ci0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZChzdHJ1Y3Qgd2xfZGlzcGxheSosIE5hdGl2ZURpc3BsYXlPd25lZCA9IE5hdGl2ZURpc3BsYXlP
d25lZDo6Tm8pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBj
cmVhdGVGb3JOYXRpdmVEaXNwbGF5KHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZUhlYWRsZXNzKCk7CisKICAgICB2
aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxh
eSogbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CkBAIC00NywxMSArNDksMTIg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5
X2xpc3RlbmVyIHNfcmVnaXN0cnlMaXN0ZW5lcjsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZDsgfQorICAgIFR5
cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5
bGFuZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpID0gZGVm
YXVsdDsKLSAgICB2b2lkIGluaXRpYWxpemUoc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyAgICBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVk
KTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdHJ5
R2xvYmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3BsYXlX
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3Bs
YXlXaW4uaAppbmRleCBmZDhjZTI4MmM3M2JlYTljMzQ0ZDkxZGZkMjVjMmZkMDlmYzhmOTVlLi41
YWMxZWZiZTM2NjM2ZDk5OTVmOTJiY2RmM2Q1MzlhYjNiMGU5MWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1EaXNwbGF5V2luLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtRGlzcGxheVdp
bi5oCkBAIC0zMyw3ICszMywxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0
Zm9ybURpc3BsYXlXaW4gZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdpbj4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2lu
PihuZXcgUGxhdGZvcm1EaXNwbGF5V2luKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflBsYXRm
b3JtRGlzcGxheVdpbigpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKKyAgICBQbGF0Zm9ybURpc3Bs
YXlXaW4oKSA9IGRlZmF1bHQ7CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldpbmRvd3M7IH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3BsYXlXUEUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxh
eVdQRS5jcHAKaW5kZXggMDU2OGRhZGRlOGY4YTBjNTk4ZmM3NGExYjY3MDcyNTE2NDEyMTk0Zi4u
Njg5OTQ5MmU0ZDQ1MTRmNjk3NTE0ZTZlMmY2ZTkzYWEwM2EyYTYxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxheVdQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxh
eVdQRS5jcHAKQEAgLTM3LDYgKzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdQRT4gY3JlYXRlKCkKK3sKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdQRT4obmV3IFBsYXRmb3JtRGlzcGxheVdQ
RSgpKTsKK30KKwogUGxhdGZvcm1EaXNwbGF5V1BFOjpQbGF0Zm9ybURpc3BsYXlXUEUoKSA9IGRl
ZmF1bHQ7CiAKIFBsYXRmb3JtRGlzcGxheVdQRTo6flBsYXRmb3JtRGlzcGxheVdQRSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1EaXNw
bGF5V1BFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1E
aXNwbGF5V1BFLmgKaW5kZXggMDVlNDQ3YWVmNWQyZWVjZjg3ZmZmOTBlMTBiYTdlZWUxMTUxOWM5
Ni4uMzIxMTkxNTg4OWI2ZTViZjFhNGQ2ZTExMjg3YjhhNDU4MjAwOWYxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3JtRGlzcGxheVdQRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3Bs
YXlXUEUuaApAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBs
YXRmb3JtRGlzcGxheVdQRSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogcHVibGlj
OgotICAgIFBsYXRmb3JtRGlzcGxheVdQRSgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1EaXNwbGF5V1BFPiBjcmVhdGUoKTsKKwogICAgIHZpcnR1YWwgflBsYXRmb3JtRGlz
cGxheVdQRSgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKGludCk7CkBAIC00Myw2ICs0NCw4IEBA
IHB1YmxpYzoKICAgICBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsKiBiYWNrZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZW5kOyB9CiAKIHByaXZhdGU6CisgICAgUGxhdGZvcm1EaXNw
bGF5V1BFKCk7CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0
Zm9ybURpc3BsYXk6OlR5cGU6OldQRTsgfQogCiAgICAgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNr
ZW5kX2VnbCogbV9iYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAppbmRleCA1YWVmZTZkNTFk
ZTYyMGE5MjU5M2UxOThmYjkzNjVkZmM4OWVjZjljLi5iMTlmNzM0OTRmNDIzZGJhM2M0NmNkZDcy
ZmY0YzBlNThjOWYyMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcApAQCAtNDgsNyArNDgsMTcg
QEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5WDExOjpj
cmVhdGUoKQogICAgIGlmICghZGlzcGxheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXksIE5h
dGl2ZURpc3BsYXlPd25lZDo6WWVzKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtRGlzcGxheVgxMT4obmV3IFBsYXRmb3JtRGlzcGxheVgxMShkaXNwbGF5LCBOYXRpdmVEaXNw
bGF5T3duZWQ6OlllcykpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQ
bGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZUZvck5hdGl2ZURpc3BsYXkoRGlzcGxheSogZGlzcGxh
eSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVgxMT4obmV3
IFBsYXRmb3JtRGlzcGxheVgxMShkaXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6Ok5vKSk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVgxMTo6
Y3JlYXRlSGVhZGxlc3MoKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1E
aXNwbGF5WDExPihuZXcgUGxhdGZvcm1EaXNwbGF5WDExKG51bGxwdHIsIE5hdGl2ZURpc3BsYXlP
d25lZDo6Tm8pKTsKIH0KIAogUGxhdGZvcm1EaXNwbGF5WDExOjpQbGF0Zm9ybURpc3BsYXlYMTEo
RGlzcGxheSogZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkIGRpc3BsYXlPd25lZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3Bs
YXlYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURp
c3BsYXlYMTEuaAppbmRleCAzMTE3NDQ1NzZhZWYwMjIwMzkyNGFhNzBlNGMxZTFlNzkzMTEyMDY1
Li43ODlhYWFhZWQxNzU3ZDI2MmEwZTc0NGRlZGU2YjE4YzA4MzhiOWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxh
eVgxMS5oCkBAIC0zOCw3ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsYXRm
b3JtRGlzcGxheVgxMSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBjcmVhdGUoKTsKLSAg
ICBQbGF0Zm9ybURpc3BsYXlYMTEoRGlzcGxheSosIE5hdGl2ZURpc3BsYXlPd25lZCA9IE5hdGl2
ZURpc3BsYXlPd25lZDo6Tm8pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1E
aXNwbGF5PiBjcmVhdGVGb3JOYXRpdmVEaXNwbGF5KERpc3BsYXkqKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlSGVhZGxlc3MoKTsKKwogICAgIHZp
cnR1YWwgflBsYXRmb3JtRGlzcGxheVgxMSgpOwogCiAgICAgRGlzcGxheSogbmF0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CkBAIC00Niw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzWERhbWFnZShzdGQ6Om9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwg
c3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VFcnJvckJhc2UpIGNvbnN0OwogCiBwcml2YXRlOgor
ICAgIFBsYXRmb3JtRGlzcGxheVgxMShEaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVkKTsKKwog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExOyB9CiAKICNpZiBVU0UoRUdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCmluZGV4IDE3NzM1
YjE0N2E5YTZjOGJiOWVlMGU5YzhkMTAzNTU0ZmRmYzNhZTMuLjYxZTZhN2VjOGQ4MGU1MTQyYjhh
ZDNlNjc1YzgzNmUyY2IwNTUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKQEAgLTQ0LDExICs0NCwx
MyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PiBXYXlsYW5kQ29t
cG9zaXRvckRpc3BsYXk6OmNyZWF0ZShjb25zdAogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIGRp
c3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QoZGlzcGxheU5hbWUudXRmOCgpLmRhdGEoKSk7CiAg
ICAgaWYgKCFkaXNwbGF5KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQg
ZGlzcGxheTogJXMiLCBkaXNwbGF5TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0
byBjb25uZWN0IHRvIHRoZSBXYXlsYW5kIGRpc3BsYXk6ICVzIiwgZGlzcGxheU5hbWUudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PihuZXcgV2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5KGRpc3BsYXkpKTsKKyAgICBhdXRvIGNvbXBvc2l0b3JEaXNwbGF5ID0gc3Rk
Ojp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4obmV3IFdheWxhbmRDb21wb3Np
dG9yRGlzcGxheShkaXNwbGF5KSk7CisgICAgY29tcG9zaXRvckRpc3BsYXktPmluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gY29tcG9zaXRvckRpc3BsYXk7CiB9CiAKIHZvaWQgV2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFj
ZSwgV2ViUGFnZSYgcGFnZSkKQEAgLTYxLDggKzYzLDggQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRv
ckRpc3BsYXk6OmJpbmRTdXJmYWNlVG9QYWdlKHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlLCBX
ZWIKIH0KIAogV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpXYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCisgICAgOiBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kKGRpc3BsYXksIE5hdGl2ZURpc3BsYXlPd25lZDo6WWVzKQogewotICAgIGluaXRpYWxpemUo
ZGlzcGxheSk7CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9z
aXRpbmcoKnRoaXMpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337625</attachid>
            <date>2018-04-10 12:09:40 -0700</date>
            <delta_ts>2018-04-10 12:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184406-20180410140939.patch</filename>
            <type>text/plain</type>
            <size>18688</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MzE2MDE4NTdkY2Q3
NWJhMGE3M2FmMjg1MjFkMWZkN2ZlZDljMS4uOWNkOTY5NjgyMDhhZDM2NjY0MjhkYzhjYjQwNzJh
MTE1MDA1MDk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE4LTA0LTEwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgbGVha3MgaXRzIHdsX2Rpc3BsYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlbGwsIHRoaXMgd2FzIGhhcmRl
ciB0aGFuIGV4cGVjdGVkLiBXZSByZWFsbHkganVzdCB3YW50IHRvIGZpeCBhIHNtYWxsIGxlYWsg
aW4gdGhlIFdlYktpdAorICAgICAgICBsYXllciwgYnV0IHRoYXQgcmVxdWlyZXMgYSBjaGFuZ2Ug
aW4gaG93IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBjYWxscyB0aGUKKyAgICAgICAgUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZCBjb25zdHJ1Y3RvciwgdG8gcGFzcyBOYXRpdmVEaXNwbGF5T3duZWQ6
Olllcy4gVGhhdCBtZWFucworICAgICAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgY2FuIG5v
IGxvbmdlciB1c2UgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCdzIHByb3RlY3RlZCBkZWZhdWx0Cisg
ICAgICAgIGNvbnN0cnVjdG9yLiBQcm9ibGVtIGlzIHRoYXQgdGhlIG5vcm1hbCBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kIGNvbnN0cnVjdG9yIGNhbGxzCisgICAgICAgIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OmluaXRpYWxpemUsIHdoaWNoIGNhbGxzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJl
Z2lzdHJ5R2xvYmFsLAorICAgICAgICB3aGljaCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uIFRoZSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGlzIG5vdAorICAg
ICAgICBjb25zdHJ1Y3RlZCB5ZXQgYXQgdGhpcyBwb2ludCwgc28gV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OjpyZWdpc3RyeUdsb2JhbCB3aWxsIG5ldmVyIGJlCisgICAgICAgIGNhbGxlZCBpZiB3
ZSBkbyB0aGF0LiBJIGhhZCB0byByZXZlcnQgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBm
aXggZHVlIHRvIHRoaXMgcHJvYmxlbS4KKyAgICAgICAgSXQgaGFkIGJyb2tlbiBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZy4KKworICAgICAgICBJJ20gcmVtaW5kZWQgb2YgRWZmZWN0aXZlIEMrKyBp
dGVtICM5OiBOZXZlciBjYWxsIHZpcnR1YWwgZnVuY3Rpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24g
b3IKKyAgICAgICAgZGVzdHJ1Y3Rpb24gKCJiZWNhdXNlIHN1Y2ggY2FsbHMgd2lsbCBuZXZlciBn
byB0byBhIG1vcmUgZGVyaXZlZCBjbGFzcyB0aGFuIHRoYXQgb2YgdGhlCisgICAgICAgIGN1cnJl
bnRseSBleGVjdXRpbmcgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciIpLiBUaGlzIGNvZGUgaXMg
ZnJhZ2lsZSBhbmQgbGlrZWx5IHRvIGJyZWFrCisgICAgICAgIGFnYWluIGluIHRoZSBmdXR1cmUs
IHNvIGxldCdzIHJlZmFjdG9yIGl0IGEgYml0LiBJbnN0ZWFkIG9mIGNhbGxpbmcgaW5pdGlhbGl6
ZSBpbiB0aGUKKyAgICAgICAgY29uc3RydWN0b3IsIHdlJ2xsIGNhbGwgaXQgZnJvbSBjcmVhdGUg
ZnVuY3Rpb25zLiBXZSdsbCBoYXZlIHRvIGFkZCBhIGNvdXBsZSBjcmVhdGUKKyAgICAgICAgZnVu
Y3Rpb25zLCBhbmQgbWFrZSB0aGUgY29uc3RydWN0b3IgcHJvdGVjdGVkIHRvIGVuc3VyZSBpdCdz
IG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgYQorICAgICAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
IHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0LiBGb3IgZ29vZCBwYXJhbGxlbGlzbSwgZG8gdGhlIHNh
bWUgZm9yIHRoZQorICAgICAgICBvdGhlciBQbGF0Zm9ybURpc3BsYXkgY2xhc3Nlcy4KKworICAg
ICAgICBUaGlzIGNvbW1pdCBhZGRpdGlvbmFsbHkgcmVtb3ZlcyBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kJ3MgcHJvdGVjdGVkIGRlZmF1bHQgY29uc3RydWN0b3IsCisgICAgICAgIHNpbmNlIGl0J3Mg
bm90IG5lZWRlZCBhbnltb3JlLgorCisgICAgICAgIFRoZSBOYXRpdmVEaXNwbGF5T3duZWQgYXJn
dW1lbnRzIHRvIHRoZSBQbGF0Zm9ybURpc3BsYXkgY29uc3RydWN0b3JzIGFyZSBub3cgbWFuZGF0
b3J5LAorICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIE5hdGl2ZURpc3BsYXlPd25lZDo6Tm8gYXMg
dGhlIGRlZmF1bHQgdmFsdWUsIHNpbmNlIHRoYXQgd2FzIGRhbmdlcm91c2x5CisgICAgICAgIGNs
b3NlIHRvIGJlaW5nIHRoZSBjYXVzZSBvZiB0aGlzIGxlYWssIGFuZCB0aGUgY29uc3RydWN0b3Jz
IGFyZSBub3cgYWNjZXNzZWQgZnJvbSBwcml2YXRlCisgICAgICAgIGNyZWF0ZSBmdW5jdGlvbnMg
YW55d2F5LiBTb21lIG1vcmUgY2F1dGlvbiB3aGVuIHVzaW5nIGRlZmF1bHQgcGFyYW1ldGVyIHZh
bHVlcyBpcyB3YXJyYW50ZWQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBMYXN0
bHksIHNpbmNlIHdlIGhhdmUgdG8gY2hhbmdlIFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZv
cm1EaXNwbGF5IHRvIHVzZSB0aGUgbmV3IGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMsIHRha2Ug
dGhlIG9wcG9ydHVuaXR5IHRvIG1vdmUgdGhpbmdzIGFyb3VuZCBhIGJpdCBmb3IgY2xhcml0eS4g
VGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvci4gSSB3YXMganVz
dCBkaXNhcHBvaW50ZWQgdGhhdCB0aGUgUGxhdGZvcm1EaXNwbGF5V1BFIGNyZWF0aW9uIHdhcyBh
dCB0aGUKKyAgICAgICAgYm90dG9tIG9mIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgYSBjb21tZW50IGlu
ZGljYXRpbmcgdGhhdCBub3JtYWwgZGlzcGxheSBjcmVhdGlvbiBoYXMgZmFpbGVkLAorICAgICAg
ICB3aGljaCBpcyBub3QgdGhlIGNhc2UgZm9yIFdQRS4KKworICAgICAgICBUaGlzIGFsbCBtaWdo
dCBoYXZlIGJlZW4gYSBiaXQgb3ZlcmtpbGwsIHNpbmNlIHRoZSBsZWFrIGNvdWxkIHByb2JhYmx5
IGhhdmUgYmVlbiBmaXhlZCBieQorICAgICAgICBwYXNzaW5nIG51bGxwdHIgdG8gdGhlIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQgY29uc3RydWN0b3IgZm9yIHRoZSB3bF9kaXNwbGF5IGFuZCBub3QK
KyAgICAgICAgcmVtb3ZpbmcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5J3MgY2FsbCB0byBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjppbml0aWFsaXplLiBCdXQgdGhlCisgICAgICAgIGNvcnJlY3Ru
ZXNzIG9mIHRoYXQgY29kZSB3b3VsZCB0aGVuIHJlbHkgb24gaW1wbGVtZW50YXRpb24gZGV0YWls
cyBvZiBpbml0aWFsaXplLCBzbyB0aGlzCisgICAgICAgIHJlZmFjdG9yIHNlZW1zIGJldHRlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgKnNob3VsZCogYmUgbm8gYmVoYXZp
b3IgY2hhbmdlLiBUaGVuIGFnYWluLCBJJ20gdG91Y2hpbmcKKyAgICAgICAgUGxhdGZvcm1EaXNw
bGF5LCBhbmQgaGlzdG9yeSBzaG93cyB3ZSBkb24ndCBoYXZlIHRoZSBncmVhdGVzdCB0cmFjayBy
ZWNvcmQgb2YgdG91Y2hpbmcgdGhpcworICAgICAgICBjb2RlIHdpdGhvdXQgaW50cm9kdWNpbmcg
cHJvYmxlbXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0Zm9ybURp
c3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3Jt
RGlzcGxheVdpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURp
c3BsYXlXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1EaXNwbGF5V1BFLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlYMTE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlY
MTE6OmNyZWF0ZUhlYWRsZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxh
dGZvcm1EaXNwbGF5WDExLmg6CisKIDIwMTgtMDQtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIEV4cGFuZCBXZWJDb3JlIHBvbGljeSBjb25jZXB0IG9mICJz
aG91bGRDb250aW51ZSIgdG8gYWxsb3cgZm9yIG1vcmUgdGhhbiB0cnVlL2ZhbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDgyOTQ1ZGU2ZDlmMGFkMzhjMzQ3MmNlNjk0ZjY0YWJiMTk3YTdhYWQuLmEzMDc4MjBhZjdi
ODBlYTZlNDIyNDlhNzdiM2JmOWRjYTFhY2Q4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTgtMDQtMTAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBsZWFrcyBpdHMgd2xfZGlz
cGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2Ugd2UgYWxsb2NhdGUgb3VyIG93biB3bF9kaXNwbGF5IGhlcmUsIG5lZWQgdG8gY2hhaW4gdXAg
dG8gdGhlIHBhcmVudCBjb25zdHJ1Y3RvcgorICAgICAgICBwYXNzaW5nIE5hdGl2ZURpc3BsYXlP
d25lZDo6WWVzLCBvciBpdCB3b24ndCBldmVyIGJlIHJlbGVhc2VkLiBNb3ZlIHRoZSBpbml0aWFs
aXplIGNhbGwgdG8KKyAgICAgICAgdGhlIGNyZWF0ZSBmdW5jdGlvbiB0byBlbnN1cmUgaXQncyBj
YWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIGNvbXBsZXRlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRlKTogRml4IGEgbG9nIG1lc3NhZ2UgKGRy
aXZlLWJ5KS4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXkpOgorCiAyMDE4LTA0LTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dGFyZ2V0
UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwgaXMgZGlyZWN0bHkgYWNjZXNz
aW5nIE5TU2NyZWVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCA2MzE0YzQyODk2MWFmMjA4YjIyOWE2NTNmZmNmNDYw
MjMxMDkxZjExLi44ODRmNTZmZjQzZDg5MGYyNzg1MTAxNTNjYWUwYTg1NzhjNWI3M2JjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAKQEAgLTc1LDIwICs3NSwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5
PiBQbGF0Zm9ybURpc3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCiB7CiAjaWYgUExBVEZP
Uk0oR1RLKQogI2lmIGRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5WDExPihHREtfRElTUExBWV9YRElTUExBWShnZGtf
ZGlzcGxheV9nZXRfZGVmYXVsdCgpKSk7CisgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVgxMTo6
Y3JlYXRlKEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsK
ICNlbHNlCiAgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0
X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKTsKICNpZiBQTEFURk9S
TShYMTEpCiAgICAgaWYgKEdES19JU19YMTFfRElTUExBWShkaXNwbGF5KSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5WDExPihHREtfRElTUExBWV9YRElT
UExBWShkaXNwbGF5KSk7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0
ZShHREtfRElTUExBWV9YRElTUExBWShkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShX
QVlMQU5EKQogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihnZGtfd2F5
bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkpKTsKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZShnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9k
aXNwbGF5KGRpc3BsYXkpKTsKICNlbmRpZgogI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQorCisjaWYgUExBVEZPUk0oV1BFKQorICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlXUEU6OmNy
ZWF0ZSgpOwogI2VsaWYgUExBVEZPUk0oV0lOKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtRGlzcGxheVdpbj4oKTsKKyAgICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5V2luOjpj
cmVhdGUoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKQEAgLTEwMywxOCArMTA3
LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheTo6
Y3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkKIAogICAgIC8vIElmIGF0IHRoaXMgcG9pbnQgd2Ugc3Rp
bGwgZG9uJ3QgaGF2ZSBhIGRpc3BsYXksIGp1c3QgY3JlYXRlIGEgZmFrZSBkaXNwbGF5IHdpdGgg
bm8gbmF0aXZlLgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4obnVsbHB0cik7Ci0jZW5kaWYKLSNpZiBQTEFU
Rk9STShYMTEpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5WDEx
PihudWxscHRyKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV1BFKQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdQRT4oKTsKKyAgICByZXR1cm4gUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZDo6Y3JlYXRlSGVhZGxlc3MoKTsKKyNlbGlmIFBMQVRGT1JNKFgxMSkKKyAg
ICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5WDExOjpjcmVhdGVIZWFkbGVzcygpOwogI2VuZGlmCiAK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBQbGF0Zm9ybURpc3BsYXkmIFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCmluZGV4IDI0OGRhNmMxNDEyYTYzZWE0NWFmNmNj
ODAzYmIzMjAxODQyZGNkM2IuLmRiZjY2OWU0MDdkYzBlNjI2MDgyZjBlYjE4ZDk4NzNmNDFhYjQ1
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGVu
dW0gY2xhc3MgTmF0aXZlRGlzcGxheU93bmVkIHsgTm8sIFllcyB9OwotICAgIGV4cGxpY2l0IFBs
YXRmb3JtRGlzcGxheShOYXRpdmVEaXNwbGF5T3duZWQgPSBOYXRpdmVEaXNwbGF5T3duZWQ6Ok5v
KTsKKyAgICBleHBsaWNpdCBQbGF0Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVkKTsKIAog
ICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyhQbGF0Zm9ybURp
c3BsYXkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKaW5kZXggM2I5
YjJjZTkzYzMwOTQ0NTJkYWI2NGU1YjcwY2MzMmZkZWVhODJhMi4uNWFlYzYzNTZlZjZlMDBkZGNm
NjVjOWM1MmU4ZDVjNTY0NzVmMjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxh
bmQuY3BwCkBAIC01NiwxMyArNTYsMzAgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxh
eT4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKCkKICAgICBpZiAoIWRpc3BsYXkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZD4oZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkOjpZZXMpOwor
ICAgIGF1dG8gcGxhdGZvcm1EaXNwbGF5ID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ+KG5ldyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKGRpc3BsYXksIE5hdGl2ZURpc3Bs
YXlPd25lZDo6WWVzKSk7CisgICAgcGxhdGZvcm1EaXNwbGF5LT5pbml0aWFsaXplKCk7CisgICAg
cmV0dXJuIHBsYXRmb3JtRGlzcGxheTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlz
cGxheT4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKHN0cnVjdCB3bF9kaXNwbGF5KiBk
aXNwbGF5KQoreworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRGlz
cGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNzKCk7CisKKyAgICBhdXRvIHBsYXRmb3JtRGlzcGxh
eSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihuZXcgUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZChkaXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6Ok5vKSk7CisgICAgcGxh
dGZvcm1EaXNwbGF5LT5pbml0aWFsaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtRGlzcGxheTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6Y3JlYXRlSGVhZGxlc3MoKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZD4obmV3IFBsYXRmb3JtRGlzcGxheVdheWxhbmQobnVsbHB0ciwg
TmF0aXZlRGlzcGxheU93bmVkOjpObykpOwogfQogCiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5LCBOYXRpdmVE
aXNwbGF5T3duZWQgZGlzcGxheU93bmVkKQogICAgIDogUGxhdGZvcm1EaXNwbGF5KGRpc3BsYXlP
d25lZCkKKyAgICAsIG1fZGlzcGxheShkaXNwbGF5KQogewotICAgIGluaXRpYWxpemUoZGlzcGxh
eSk7CiB9CiAKIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5k
KCkKQEAgLTc0LDExICs5MSw5IEBAIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kKCkKICAgICB9CiB9CiAKLXZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6
aW5pdGlhbGl6ZSh3bF9kaXNwbGF5KiBkaXNwbGF5KQordm9pZCBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kOjppbml0aWFsaXplKCkKIHsKLSAgICBtX2Rpc3BsYXkgPSBkaXNwbGF5OwotICAgIGlmICgh
bV9kaXNwbGF5KQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZGlzcGxheSk7CiAKICAg
ICBtX3JlZ2lzdHJ5LnJlc2V0KHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KG1fZGlzcGxheSkpOwog
ICAgIHdsX3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihtX3JlZ2lzdHJ5LmdldCgpLCAmc19yZWdpc3Ry
eUxpc3RlbmVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKaW5kZXgg
ZTE3ZGNlMDRhYTczMjQwOGIyZDgzZjQxMWJjMmY1YWRkNjY3ZDUyMi4uNDZmNTZlYTFkYzFkOGUx
ZTI5YmYyZGZhM2QxYzZkNzk1Y2NlYzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXls
YW5kLmgKQEAgLTM3LDcgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBjcmVhdGUoKTsKLSAgICBQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93
bmVkID0gTmF0aXZlRGlzcGxheU93bmVkOjpObyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBjcmVhdGVIZWFkbGVzcygpOworCiAg
ICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpOwogCiAgICAgc3RydWN0IHdsX2Rp
c3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQpAQCAtNDcsMTEgKzQ5
LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdp
c3RyeV9saXN0ZW5lciBzX3JlZ2lzdHJ5TGlzdGVuZXI7CiAKLSAgICBUeXBlIHR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQ7IH0KKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OldheWxhbmQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQoKSA9
IGRlZmF1bHQ7Ci0gICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAg
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSosIE5hdGl2ZURpc3BsYXlP
d25lZCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RyeUdsb2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IG5hbWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1EaXNw
bGF5V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1E
aXNwbGF5V2luLmgKaW5kZXggZmQ4Y2UyODJjNzNiZWE5YzM0NGQ5MWRmZDI1YzJmZDA5ZmM4Zjk1
ZS4uYTc3YmM2YmI1OWEzYzJlOTFkNGY5NDNjYTY3YWQ0N2ZmMjllZWNmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtRGlzcGxheVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3Bs
YXlXaW4uaApAQCAtMzMsNyArMzMsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UGxhdGZvcm1EaXNwbGF5V2luIGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlzcGxheSB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlXaW4+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxh
eVdpbj4obmV3IFBsYXRmb3JtRGlzcGxheVdpbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybURpc3BsYXlXaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CisgICAgUGxhdGZvcm1E
aXNwbGF5V2luKCkKKyAgICAgICAgOiBQbGF0Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVk
OjpObykKKyAgICB7CisgICAgfQorCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXaW5kb3dzOyB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1EaXNwbGF5V1BF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3Bs
YXlXUEUuY3BwCmluZGV4IDA1NjhkYWRkZThmOGEwYzU5OGZjNzRhMWI2NzA3MjUxNjQxMjE5NGYu
LjBhOTRlZTVjOTZmYjMyZmRhN2IyYjUzYzA0NTc1YjM3NDk2ZDEwM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3BsYXlXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURpc3Bs
YXlXUEUuY3BwCkBAIC0zNyw3ICszNywxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBs
YXRmb3JtRGlzcGxheVdQRTo6UGxhdGZvcm1EaXNwbGF5V1BFKCkgPSBkZWZhdWx0Oworc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdQRT4gUGxhdGZvcm1EaXNwbGF5V1BFOjpjcmVhdGUo
KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V1BFPihuZXcg
UGxhdGZvcm1EaXNwbGF5V1BFKCkpOworfQorCitQbGF0Zm9ybURpc3BsYXlXUEU6OlBsYXRmb3Jt
RGlzcGxheVdQRSgpCisgICAgOiBQbGF0Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVkOjpO
bykKK3sKK30KIAogUGxhdGZvcm1EaXNwbGF5V1BFOjp+UGxhdGZvcm1EaXNwbGF5V1BFKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9y
bURpc3BsYXlXUEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0
Zm9ybURpc3BsYXlXUEUuaAppbmRleCAwNWU0NDdhZWY1ZDJlZWNmODdmZmY5MGUxMGJhN2VlZTEx
NTE5Yzk2Li4zMjExOTE1ODg5YjZlNWJmMWE0ZDZlMTEyODdiOGE0NTgyMDA5ZjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1EaXNwbGF5
V1BFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3BlL1BsYXRmb3Jt
RGlzcGxheVdQRS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUGxhdGZvcm1EaXNwbGF5V1BFIGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlzcGxheSB7CiBw
dWJsaWM6Ci0gICAgUGxhdGZvcm1EaXNwbGF5V1BFKCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXlXUEU+IGNyZWF0ZSgpOworCiAgICAgdmlydHVhbCB+UGxhdGZv
cm1EaXNwbGF5V1BFKCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoaW50KTsKQEAgLTQzLDYgKzQ0
LDggQEAgcHVibGljOgogICAgIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2VuZF9lZ2wqIGJhY2tl
bmQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQ7IH0KIAogcHJpdmF0ZToKKyAgICBQbGF0Zm9y
bURpc3BsYXlXUEUoKTsKKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFOyB9CiAKICAgICBzdHJ1Y3Qgd3BlX3JlbmRlcmVy
X2JhY2tlbmRfZWdsKiBtX2JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCmluZGV4IDVhZWZl
NmQ1MWRlNjIwYTkyNTkzZTE5OGZiOTM2NWRmYzg5ZWNmOWMuLjBmY2M2OWI5Zjc3ZGNjZWMyMmZh
NjYwYmU2ODNhYzc1NjUwZGM1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCkBAIC00OCw3ICs0
OCwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQbGF0Zm9ybURpc3BsYXlY
MTE6OmNyZWF0ZSgpCiAgICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVgxMT4oZGlzcGxh
eSwgTmF0aXZlRGlzcGxheU93bmVkOjpZZXMpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1EaXNwbGF5WDExPihuZXcgUGxhdGZvcm1EaXNwbGF5WDExKGRpc3BsYXksIE5hdGl2
ZURpc3BsYXlPd25lZDo6WWVzKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3Bs
YXk+IFBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlKERpc3BsYXkqIGRpc3BsYXkpCit7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlYMTE+KG5ldyBQbGF0Zm9ybURp
c3BsYXlYMTEoZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkOjpObykpOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZUhlYWRs
ZXNzKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVgxMT4o
bmV3IFBsYXRmb3JtRGlzcGxheVgxMShudWxscHRyLCBOYXRpdmVEaXNwbGF5T3duZWQ6Ok5vKSk7
CiB9CiAKIFBsYXRmb3JtRGlzcGxheVgxMTo6UGxhdGZvcm1EaXNwbGF5WDExKERpc3BsYXkqIGRp
c3BsYXksIE5hdGl2ZURpc3BsYXlPd25lZCBkaXNwbGF5T3duZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgK
aW5kZXggMzExNzQ0NTc2YWVmMDIyMDM5MjRhYTcwZTRjMWUxZTc5MzExMjA2NS4uYzFjYWM3MjYy
NGM0MzUwOGU3ZjNmNWExMGUyOWU4MWI0OTRlMzNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaApAQCAt
MzgsNyArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybURpc3BsYXlY
MTEgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlKCk7Ci0gICAgUGxhdGZvcm1E
aXNwbGF5WDExKERpc3BsYXkqLCBOYXRpdmVEaXNwbGF5T3duZWQgPSBOYXRpdmVEaXNwbGF5T3du
ZWQ6Ok5vKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3Jl
YXRlKERpc3BsYXkqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxh
eT4gY3JlYXRlSGVhZGxlc3MoKTsKKwogICAgIHZpcnR1YWwgflBsYXRmb3JtRGlzcGxheVgxMSgp
OwogCiAgICAgRGlzcGxheSogbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CkBA
IC00Niw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzWERhbWFnZShzdGQ6Om9w
dGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwgc3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VF
cnJvckJhc2UpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIFBsYXRmb3JtRGlzcGxheVgxMShEaXNw
bGF5KiwgTmF0aXZlRGlzcGxheU93bmVkKTsKKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExOyB9CiAKICNpZiBVU0UoRUdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvckRpc3BsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29t
cG9zaXRvckRpc3BsYXkuY3BwCmluZGV4IDE3NzM1YjE0N2E5YTZjOGJiOWVlMGU5YzhkMTAzNTU0
ZmRmYzNhZTMuLjYxZTZhN2VjOGQ4MGU1MTQyYjhhZDNlNjc1YzgzNmUyY2IwNTUzOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yRGlzcGxheS5jcHAKQEAgLTQ0LDExICs0NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5PiBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OmNyZWF0ZShjb25z
dAogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3Qo
ZGlzcGxheU5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXNwbGF5KSB7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFp
bGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgZGlzcGxheTogJXMiLCBkaXNwbGF5TmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvckRp
c3BsYXkgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBXYXlsYW5kIGRp
c3BsYXk6ICVzIiwgZGlzcGxheU5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5PihuZXcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KGRpc3BsYXkpKTsKKyAg
ICBhdXRvIGNvbXBvc2l0b3JEaXNwbGF5ID0gc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3Np
dG9yRGlzcGxheT4obmV3IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheShkaXNwbGF5KSk7CisgICAg
Y29tcG9zaXRvckRpc3BsYXktPmluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gY29tcG9zaXRvckRp
c3BsYXk7CiB9CiAKIHZvaWQgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFjZVRv
UGFnZShzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSwgV2ViUGFnZSYgcGFnZSkKQEAgLTYxLDgg
KzYzLDggQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OmJpbmRTdXJmYWNlVG9QYWdl
KHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlLCBXZWIKIH0KIAogV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OjpXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3Bs
YXkpCisgICAgOiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKGRpc3BsYXksIE5hdGl2ZURpc3BsYXlP
d25lZDo6WWVzKQogewotICAgIGluaXRpYWxpemUoZGlzcGxheSk7CiAgICAgUGxhdGZvcm1EaXNw
bGF5OjpzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKnRoaXMpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337626</attachid>
            <date>2018-04-10 12:18:26 -0700</date>
            <delta_ts>2018-04-11 09:58:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184406-20180410141825.patch</filename>
            <type>text/plain</type>
            <size>17939</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MzE2MDE4NTdkY2Q3
NWJhMGE3M2FmMjg1MjFkMWZkN2ZlZDljMS4uOWNkOTY5NjgyMDhhZDM2NjY0MjhkYzhjYjQwNzJh
MTE1MDA1MDk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE4LTA0LTEwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgbGVha3MgaXRzIHdsX2Rpc3BsYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlbGwsIHRoaXMgd2FzIGhhcmRl
ciB0aGFuIGV4cGVjdGVkLiBXZSByZWFsbHkganVzdCB3YW50IHRvIGZpeCBhIHNtYWxsIGxlYWsg
aW4gdGhlIFdlYktpdAorICAgICAgICBsYXllciwgYnV0IHRoYXQgcmVxdWlyZXMgYSBjaGFuZ2Ug
aW4gaG93IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBjYWxscyB0aGUKKyAgICAgICAgUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZCBjb25zdHJ1Y3RvciwgdG8gcGFzcyBOYXRpdmVEaXNwbGF5T3duZWQ6
Olllcy4gVGhhdCBtZWFucworICAgICAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgY2FuIG5v
IGxvbmdlciB1c2UgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCdzIHByb3RlY3RlZCBkZWZhdWx0Cisg
ICAgICAgIGNvbnN0cnVjdG9yLiBQcm9ibGVtIGlzIHRoYXQgdGhlIG5vcm1hbCBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kIGNvbnN0cnVjdG9yIGNhbGxzCisgICAgICAgIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OmluaXRpYWxpemUsIHdoaWNoIGNhbGxzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJl
Z2lzdHJ5R2xvYmFsLAorICAgICAgICB3aGljaCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uIFRoZSBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGlzIG5vdAorICAg
ICAgICBjb25zdHJ1Y3RlZCB5ZXQgYXQgdGhpcyBwb2ludCwgc28gV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OjpyZWdpc3RyeUdsb2JhbCB3aWxsIG5ldmVyIGJlCisgICAgICAgIGNhbGxlZCBpZiB3
ZSBkbyB0aGF0LiBJIGhhZCB0byByZXZlcnQgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBm
aXggZHVlIHRvIHRoaXMgcHJvYmxlbS4KKyAgICAgICAgSXQgaGFkIGJyb2tlbiBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZy4KKworICAgICAgICBJJ20gcmVtaW5kZWQgb2YgRWZmZWN0aXZlIEMrKyBp
dGVtICM5OiBOZXZlciBjYWxsIHZpcnR1YWwgZnVuY3Rpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24g
b3IKKyAgICAgICAgZGVzdHJ1Y3Rpb24gKCJiZWNhdXNlIHN1Y2ggY2FsbHMgd2lsbCBuZXZlciBn
byB0byBhIG1vcmUgZGVyaXZlZCBjbGFzcyB0aGFuIHRoYXQgb2YgdGhlCisgICAgICAgIGN1cnJl
bnRseSBleGVjdXRpbmcgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciIpLiBUaGlzIGNvZGUgaXMg
ZnJhZ2lsZSBhbmQgbGlrZWx5IHRvIGJyZWFrCisgICAgICAgIGFnYWluIGluIHRoZSBmdXR1cmUs
IHNvIGxldCdzIHJlZmFjdG9yIGl0IGEgYml0LiBJbnN0ZWFkIG9mIGNhbGxpbmcgaW5pdGlhbGl6
ZSBpbiB0aGUKKyAgICAgICAgY29uc3RydWN0b3IsIHdlJ2xsIGNhbGwgaXQgZnJvbSBjcmVhdGUg
ZnVuY3Rpb25zLiBXZSdsbCBoYXZlIHRvIGFkZCBhIGNvdXBsZSBjcmVhdGUKKyAgICAgICAgZnVu
Y3Rpb25zLCBhbmQgbWFrZSB0aGUgY29uc3RydWN0b3IgcHJvdGVjdGVkIHRvIGVuc3VyZSBpdCdz
IG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgYQorICAgICAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
IHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0LiBGb3IgZ29vZCBwYXJhbGxlbGlzbSwgZG8gdGhlIHNh
bWUgZm9yIHRoZQorICAgICAgICBvdGhlciBQbGF0Zm9ybURpc3BsYXkgY2xhc3Nlcy4KKworICAg
ICAgICBUaGlzIGNvbW1pdCBhZGRpdGlvbmFsbHkgcmVtb3ZlcyBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kJ3MgcHJvdGVjdGVkIGRlZmF1bHQgY29uc3RydWN0b3IsCisgICAgICAgIHNpbmNlIGl0J3Mg
bm90IG5lZWRlZCBhbnltb3JlLgorCisgICAgICAgIFRoZSBOYXRpdmVEaXNwbGF5T3duZWQgYXJn
dW1lbnRzIHRvIHRoZSBQbGF0Zm9ybURpc3BsYXkgY29uc3RydWN0b3JzIGFyZSBub3cgbWFuZGF0
b3J5LAorICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIE5hdGl2ZURpc3BsYXlPd25lZDo6Tm8gYXMg
dGhlIGRlZmF1bHQgdmFsdWUsIHNpbmNlIHRoYXQgd2FzIGRhbmdlcm91c2x5CisgICAgICAgIGNs
b3NlIHRvIGJlaW5nIHRoZSBjYXVzZSBvZiB0aGlzIGxlYWssIGFuZCB0aGUgY29uc3RydWN0b3Jz
IGFyZSBub3cgYWNjZXNzZWQgZnJvbSBwcml2YXRlCisgICAgICAgIGNyZWF0ZSBmdW5jdGlvbnMg
YW55d2F5LiBTb21lIG1vcmUgY2F1dGlvbiB3aGVuIHVzaW5nIGRlZmF1bHQgcGFyYW1ldGVyIHZh
bHVlcyBpcyB3YXJyYW50ZWQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBMYXN0
bHksIHNpbmNlIHdlIGhhdmUgdG8gY2hhbmdlIFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZv
cm1EaXNwbGF5IHRvIHVzZSB0aGUgbmV3IGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMsIHRha2Ug
dGhlIG9wcG9ydHVuaXR5IHRvIG1vdmUgdGhpbmdzIGFyb3VuZCBhIGJpdCBmb3IgY2xhcml0eS4g
VGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvci4gSSB3YXMganVz
dCBkaXNhcHBvaW50ZWQgdGhhdCB0aGUgUGxhdGZvcm1EaXNwbGF5V1BFIGNyZWF0aW9uIHdhcyBh
dCB0aGUKKyAgICAgICAgYm90dG9tIG9mIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgYSBjb21tZW50IGlu
ZGljYXRpbmcgdGhhdCBub3JtYWwgZGlzcGxheSBjcmVhdGlvbiBoYXMgZmFpbGVkLAorICAgICAg
ICB3aGljaCBpcyBub3QgdGhlIGNhc2UgZm9yIFdQRS4KKworICAgICAgICBUaGlzIGFsbCBtaWdo
dCBoYXZlIGJlZW4gYSBiaXQgb3ZlcmtpbGwsIHNpbmNlIHRoZSBsZWFrIGNvdWxkIHByb2JhYmx5
IGhhdmUgYmVlbiBmaXhlZCBieQorICAgICAgICBwYXNzaW5nIG51bGxwdHIgdG8gdGhlIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQgY29uc3RydWN0b3IgZm9yIHRoZSB3bF9kaXNwbGF5IGFuZCBub3QK
KyAgICAgICAgcmVtb3ZpbmcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5J3MgY2FsbCB0byBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjppbml0aWFsaXplLiBCdXQgdGhlCisgICAgICAgIGNvcnJlY3Ru
ZXNzIG9mIHRoYXQgY29kZSB3b3VsZCB0aGVuIHJlbHkgb24gaW1wbGVtZW50YXRpb24gZGV0YWls
cyBvZiBpbml0aWFsaXplLCBzbyB0aGlzCisgICAgICAgIHJlZmFjdG9yIHNlZW1zIGJldHRlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgKnNob3VsZCogYmUgbm8gYmVoYXZp
b3IgY2hhbmdlLiBUaGVuIGFnYWluLCBJJ20gdG91Y2hpbmcKKyAgICAgICAgUGxhdGZvcm1EaXNw
bGF5LCBhbmQgaGlzdG9yeSBzaG93cyB3ZSBkb24ndCBoYXZlIHRoZSBncmVhdGVzdCB0cmFjayBy
ZWNvcmQgb2YgdG91Y2hpbmcgdGhpcworICAgICAgICBjb2RlIHdpdGhvdXQgaW50cm9kdWNpbmcg
cHJvYmxlbXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0Zm9ybURp
c3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZUhlYWRsZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3Jt
RGlzcGxheVdpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURp
c3BsYXlXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZvcm1EaXNwbGF5V1BFLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlYMTE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlY
MTE6OmNyZWF0ZUhlYWRsZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxh
dGZvcm1EaXNwbGF5WDExLmg6CisKIDIwMTgtMDQtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIEV4cGFuZCBXZWJDb3JlIHBvbGljeSBjb25jZXB0IG9mICJz
aG91bGRDb250aW51ZSIgdG8gYWxsb3cgZm9yIG1vcmUgdGhhbiB0cnVlL2ZhbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDgyOTQ1ZGU2ZDlmMGFkMzhjMzQ3MmNlNjk0ZjY0YWJiMTk3YTdhYWQuLmEzMDc4MjBhZjdi
ODBlYTZlNDIyNDlhNzdiM2JmOWRjYTFhY2Q4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTgtMDQtMTAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBsZWFrcyBpdHMgd2xfZGlz
cGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2Ugd2UgYWxsb2NhdGUgb3VyIG93biB3bF9kaXNwbGF5IGhlcmUsIG5lZWQgdG8gY2hhaW4gdXAg
dG8gdGhlIHBhcmVudCBjb25zdHJ1Y3RvcgorICAgICAgICBwYXNzaW5nIE5hdGl2ZURpc3BsYXlP
d25lZDo6WWVzLCBvciBpdCB3b24ndCBldmVyIGJlIHJlbGVhc2VkLiBNb3ZlIHRoZSBpbml0aWFs
aXplIGNhbGwgdG8KKyAgICAgICAgdGhlIGNyZWF0ZSBmdW5jdGlvbiB0byBlbnN1cmUgaXQncyBj
YWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIGNvbXBsZXRlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRlKTogRml4IGEgbG9nIG1lc3NhZ2UgKGRy
aXZlLWJ5KS4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXkpOgorCiAyMDE4LTA0LTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dGFyZ2V0
UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwgaXMgZGlyZWN0bHkgYWNjZXNz
aW5nIE5TU2NyZWVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCA2MzE0YzQyODk2MWFmMjA4YjIyOWE2NTNmZmNmNDYw
MjMxMDkxZjExLi41ZjI5YWY4NWE5NDgzZDQ3NjJlOTg3YjMyMDViODBlMTdjM2JiMTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAKQEAgLTc1LDIwICs3NSwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5
PiBQbGF0Zm9ybURpc3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCiB7CiAjaWYgUExBVEZP
Uk0oR1RLKQogI2lmIGRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5WDExPihHREtfRElTUExBWV9YRElTUExBWShnZGtf
ZGlzcGxheV9nZXRfZGVmYXVsdCgpKSk7CisgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVgxMTo6
Y3JlYXRlKEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsK
ICNlbHNlCiAgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0
X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKTsKICNpZiBQTEFURk9S
TShYMTEpCiAgICAgaWYgKEdES19JU19YMTFfRElTUExBWShkaXNwbGF5KSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5WDExPihHREtfRElTUExBWV9YRElT
UExBWShkaXNwbGF5KSk7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0
ZShHREtfRElTUExBWV9YRElTUExBWShkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShX
QVlMQU5EKQogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihnZGtfd2F5
bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkpKTsKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZShnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9k
aXNwbGF5KGRpc3BsYXkpKTsKICNlbmRpZgogI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQorCisjaWYgUExBVEZPUk0oV1BFKQorICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlXUEU6OmNy
ZWF0ZSgpOwogI2VsaWYgUExBVEZPUk0oV0lOKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtRGlzcGxheVdpbj4oKTsKKyAgICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5V2luOjpj
cmVhdGUoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKQEAgLTEwMywxOCArMTA3
LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheTo6
Y3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkKIAogICAgIC8vIElmIGF0IHRoaXMgcG9pbnQgd2Ugc3Rp
bGwgZG9uJ3QgaGF2ZSBhIGRpc3BsYXksIGp1c3QgY3JlYXRlIGEgZmFrZSBkaXNwbGF5IHdpdGgg
bm8gbmF0aXZlLgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4obnVsbHB0cik7Ci0jZW5kaWYKLSNpZiBQTEFU
Rk9STShYMTEpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5WDEx
PihudWxscHRyKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV1BFKQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdQRT4oKTsKKyAgICByZXR1cm4gUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZDo6Y3JlYXRlKG51bGxwdHIpOworI2VsaWYgUExBVEZPUk0oWDExKQorICAg
IHJldHVybiBQbGF0Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZShudWxscHRyKTsKICNlbmRpZgogCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogUGxhdGZvcm1EaXNwbGF5JiBQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAppbmRleCAyNDhkYTZjMTQxMmE2M2VhNDVhZjZjYzgw
M2JiMzIwMTg0MmRjZDNiLi5kYmY2NjllNDA3ZGMwZTYyNjA4MmYwZWIxOGQ5ODczZjQxYWI0NWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBlbnVt
IGNsYXNzIE5hdGl2ZURpc3BsYXlPd25lZCB7IE5vLCBZZXMgfTsKLSAgICBleHBsaWNpdCBQbGF0
Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVkID0gTmF0aXZlRGlzcGxheU93bmVkOjpObyk7
CisgICAgZXhwbGljaXQgUGxhdGZvcm1EaXNwbGF5KE5hdGl2ZURpc3BsYXlPd25lZCk7CiAKICAg
ICBzdGF0aWMgdm9pZCBzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoUGxhdGZvcm1EaXNw
bGF5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCmluZGV4IDNiOWIy
Y2U5M2MzMDk0NDUyZGFiNjRlNWI3MGNjMzJmZGVlYTgyYTIuLjA1ZjkyYzIyOGZlNjZhOGQ0Zjhh
NzNjNjc4NGY1OWI1ZGZhNTY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5k
LmNwcApAQCAtNTYsMTMgKzU2LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZSgpCiAgICAgaWYgKCFkaXNwbGF5KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtRGlzcGxheVdheWxhbmQ+KGRpc3BsYXksIE5hdGl2ZURpc3BsYXlPd25lZDo6WWVzKTsKKyAg
ICBhdXRvIHBsYXRmb3JtRGlzcGxheSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kPihuZXcgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChkaXNwbGF5LCBOYXRpdmVEaXNwbGF5
T3duZWQ6OlllcykpOworICAgIHBsYXRmb3JtRGlzcGxheS0+aW5pdGlhbGl6ZSgpOworICAgIHJl
dHVybiBwbGF0Zm9ybURpc3BsYXk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3Bs
YXk+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlz
cGxheSkKK3sKKyAgICBhdXRvIHBsYXRmb3JtRGlzcGxheSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kPihuZXcgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChkaXNwbGF5LCBO
YXRpdmVEaXNwbGF5T3duZWQ6Ok5vKSk7CisgICAgcGxhdGZvcm1EaXNwbGF5LT5pbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIHBsYXRmb3JtRGlzcGxheTsKIH0KIAogUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSwg
TmF0aXZlRGlzcGxheU93bmVkIGRpc3BsYXlPd25lZCkKICAgICA6IFBsYXRmb3JtRGlzcGxheShk
aXNwbGF5T3duZWQpCisgICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKIHsKLSAgICBpbml0aWFsaXpl
KGRpc3BsYXkpOwogfQogCiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5
V2F5bGFuZCgpCkBAIC03NCw5ICs4Myw4IEBAIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0
Zm9ybURpc3BsYXlXYXlsYW5kKCkKICAgICB9CiB9CiAKLXZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6aW5pdGlhbGl6ZSh3bF9kaXNwbGF5KiBkaXNwbGF5KQordm9pZCBQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kOjppbml0aWFsaXplKCkKIHsKLSAgICBtX2Rpc3BsYXkgPSBkaXNwbGF5OwogICAg
IGlmICghbV9kaXNwbGF5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kLmgKaW5kZXggZTE3ZGNlMDRhYTczMjQwOGIyZDgzZjQxMWJjMmY1YWRkNjY3ZDUy
Mi4uMWEyOTU0MzE1ZmE5MTMxM2ExYTAxYjVlZjU5MWFkOWE2ZmU5Njg3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlX
YXlsYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9Q
bGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCA6IHB1YmxpYyBQbGF0Zm9ybURpc3Bs
YXkgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5
PiBjcmVhdGUoKTsKLSAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5
KiwgTmF0aXZlRGlzcGxheU93bmVkID0gTmF0aXZlRGlzcGxheU93bmVkOjpObyk7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZShzdHJ1Y3Qgd2xfZGlz
cGxheSopOworCiAgICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpOwogCiAgICAg
c3RydWN0IHdsX2Rpc3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQpA
QCAtNDcsMTEgKzQ4LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHN0
cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBzX3JlZ2lzdHJ5TGlzdGVuZXI7CiAKLSAgICBUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Oldh
eWxhbmQ7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OldheWxhbmQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFBsYXRmb3JtRGlzcGxh
eVdheWxhbmQoKSA9IGRlZmF1bHQ7Ci0gICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9kaXNw
bGF5Kik7CisgICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSosIE5h
dGl2ZURpc3BsYXlPd25lZCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RyeUdsb2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IG5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
UGxhdGZvcm1EaXNwbGF5V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1EaXNwbGF5V2luLmgKaW5kZXggZmQ4Y2UyODJjNzNiZWE5YzM0NGQ5MWRmZDI1
YzJmZDA5ZmM4Zjk1ZS4uYTc3YmM2YmI1OWEzYzJlOTFkNGY5NDNjYTY3YWQ0N2ZmMjllZWNmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3Jt
RGlzcGxheVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
bGF0Zm9ybURpc3BsYXlXaW4uaApAQCAtMzMsNyArMzMsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUGxhdGZvcm1EaXNwbGF5V2luIGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlz
cGxheSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3Bs
YXlXaW4+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtRGlzcGxheVdpbj4obmV3IFBsYXRmb3JtRGlzcGxheVdpbigpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlXaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6Cisg
ICAgUGxhdGZvcm1EaXNwbGF5V2luKCkKKyAgICAgICAgOiBQbGF0Zm9ybURpc3BsYXkoTmF0aXZl
RGlzcGxheU93bmVkOjpObykKKyAgICB7CisgICAgfQorCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXaW5kb3dzOyB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxhdGZv
cm1EaXNwbGF5V1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9Q
bGF0Zm9ybURpc3BsYXlXUEUuY3BwCmluZGV4IDA1NjhkYWRkZThmOGEwYzU5OGZjNzRhMWI2NzA3
MjUxNjQxMjE5NGYuLjBhOTRlZTVjOTZmYjMyZmRhN2IyYjUzYzA0NTc1YjM3NDk2ZDEwM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9QbGF0Zm9ybURp
c3BsYXlXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dwZS9Q
bGF0Zm9ybURpc3BsYXlXUEUuY3BwCkBAIC0zNyw3ICszNywxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBsYXRmb3JtRGlzcGxheVdQRTo6UGxhdGZvcm1EaXNwbGF5V1BFKCkgPSBkZWZh
dWx0Oworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdQRT4gUGxhdGZvcm1EaXNwbGF5
V1BFOjpjcmVhdGUoKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNw
bGF5V1BFPihuZXcgUGxhdGZvcm1EaXNwbGF5V1BFKCkpOworfQorCitQbGF0Zm9ybURpc3BsYXlX
UEU6OlBsYXRmb3JtRGlzcGxheVdQRSgpCisgICAgOiBQbGF0Zm9ybURpc3BsYXkoTmF0aXZlRGlz
cGxheU93bmVkOjpObykKK3sKK30KIAogUGxhdGZvcm1EaXNwbGF5V1BFOjp+UGxhdGZvcm1EaXNw
bGF5V1BFKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dwZS9QbGF0Zm9ybURpc3BsYXlXUEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dwZS9QbGF0Zm9ybURpc3BsYXlXUEUuaAppbmRleCAwNWU0NDdhZWY1ZDJlZWNmODdmZmY5
MGUxMGJhN2VlZTExNTE5Yzk2Li4zMjExOTE1ODg5YjZlNWJmMWE0ZDZlMTEyODdiOGE0NTgyMDA5
ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93cGUvUGxh
dGZvcm1EaXNwbGF5V1BFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3BlL1BsYXRmb3JtRGlzcGxheVdQRS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUGxhdGZvcm1EaXNwbGF5V1BFIGZpbmFsIDogcHVibGljIFBsYXRmb3Jt
RGlzcGxheSB7CiBwdWJsaWM6Ci0gICAgUGxhdGZvcm1EaXNwbGF5V1BFKCk7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlXUEU+IGNyZWF0ZSgpOworCiAgICAgdmly
dHVhbCB+UGxhdGZvcm1EaXNwbGF5V1BFKCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoaW50KTsK
QEAgLTQzLDYgKzQ0LDggQEAgcHVibGljOgogICAgIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2Vu
ZF9lZ2wqIGJhY2tlbmQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQ7IH0KIAogcHJpdmF0ZToK
KyAgICBQbGF0Zm9ybURpc3BsYXlXUEUoKTsKKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFOyB9CiAKICAgICBzdHJ1Y3Qg
d3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsKiBtX2JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CmluZGV4IDVhZWZlNmQ1MWRlNjIwYTkyNTkzZTE5OGZiOTM2NWRmYzg5ZWNmOWMuLmYyNjUzNmYx
MTkwYTE5OGI5YjRlYjkyZGVjNmYyZjg5YzQ2ZjEwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CkBAIC00OCw3ICs0OCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQbGF0
Zm9ybURpc3BsYXlYMTE6OmNyZWF0ZSgpCiAgICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxh
eVgxMT4oZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkOjpZZXMpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5WDExPihuZXcgUGxhdGZvcm1EaXNwbGF5WDExKGRp
c3BsYXksIE5hdGl2ZURpc3BsYXlPd25lZDo6WWVzKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheVgxMTo6Y3JlYXRlKERpc3BsYXkqIGRpc3Bs
YXkpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlYMTE+KG5l
dyBQbGF0Zm9ybURpc3BsYXlYMTEoZGlzcGxheSwgTmF0aXZlRGlzcGxheU93bmVkOjpObykpOwog
fQogCiBQbGF0Zm9ybURpc3BsYXlYMTE6OlBsYXRmb3JtRGlzcGxheVgxMShEaXNwbGF5KiBkaXNw
bGF5LCBOYXRpdmVEaXNwbGF5T3duZWQgZGlzcGxheU93bmVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCmlu
ZGV4IDMxMTc0NDU3NmFlZjAyMjAzOTI0YWE3MGU0YzFlMWU3OTMxMTIwNjUuLmU1ZDM4MzI1ZGYx
NGI5MWM0NTZkYjVlMzg5YjVmZmQxMzcxNjYzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKQEAgLTM4
LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZvcm1EaXNwbGF5WDEx
IGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlzcGxheSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZSgpOwotICAgIFBsYXRmb3JtRGlz
cGxheVgxMShEaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVkID0gTmF0aXZlRGlzcGxheU93bmVk
OjpObyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0
ZShEaXNwbGF5Kik7CisKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlYMTEoKTsKIAogICAg
IERpc3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQpAQCAtNDYsNiAr
NDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxp
bnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6b3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNl
KSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBQbGF0Zm9ybURpc3BsYXlYMTEoRGlzcGxheSosIE5h
dGl2ZURpc3BsYXlPd25lZCk7CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsgfQogCiAjaWYgVVNFKEVHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5LmNwcAppbmRleCAxNzczNWIxNDdhOWE2YzhiYjllZTBlOWM4ZDEwMzU1NGZkZmMzYWUz
Li42MWU2YTdlYzhkODBlNTE0MmI4YWQzZTY3NWM4MzZlMmNiMDU1Mzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkuY3BwCkBAIC00NCwxMSArNDQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3Np
dG9yRGlzcGxheT4gV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpjcmVhdGUoY29uc3QKIAogICAg
IHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5ID0gd2xfZGlzcGxheV9jb25uZWN0KGRpc3BsYXlO
YW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICghZGlzcGxheSkgewotICAgICAgICBXVEZMb2dB
bHdheXMoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBj
b25uZWN0IHRvIHRoZSBXYXlsYW5kIGRpc3BsYXk6ICVzIiwgZGlzcGxheU5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5IGlu
aXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgV2F5bGFuZCBkaXNwbGF5OiAl
cyIsIGRpc3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlz
cGxheT4obmV3IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheShkaXNwbGF5KSk7CisgICAgYXV0byBj
b21wb3NpdG9yRGlzcGxheSA9IHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXk+KG5ldyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoZGlzcGxheSkpOworICAgIGNvbXBvc2l0
b3JEaXNwbGF5LT5pbml0aWFsaXplKCk7CisgICAgcmV0dXJuIGNvbXBvc2l0b3JEaXNwbGF5Owog
fQogCiB2b2lkIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6YmluZFN1cmZhY2VUb1BhZ2Uoc3Ry
dWN0IHdsX3N1cmZhY2UqIHN1cmZhY2UsIFdlYlBhZ2UmIHBhZ2UpCkBAIC02MSw4ICs2Myw4IEBA
IHZvaWQgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qg
d2xfc3VyZmFjZSogc3VyZmFjZSwgV2ViCiB9CiAKIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6
V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQorICAg
IDogUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChkaXNwbGF5LCBOYXRpdmVEaXNwbGF5T3duZWQ6Olll
cykKIHsKLSAgICBpbml0aWFsaXplKGRpc3BsYXkpOwogICAgIFBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCp0aGlzKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>