<?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>188598</bug_id>
          
          <creation_ts>2018-08-15 02:55:10 -0700</creation_ts>
          <short_desc>[JSC] Remove gcc warnings on mips and armv7</short_desc>
          <delta_ts>2019-02-27 05:37:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>195049</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>188996</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Guillaume Emont">guijemont</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450256</commentid>
    <comment_count>0</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-15 02:55:10 -0700</bug_when>
    <thetext>This is a follow up from #187803. We still have many warnings on armv7 and mips, mostly -Wcast-align.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450265</commentid>
    <comment_count>1</comment_count>
      <attachid>347156</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-15 03:56:08 -0700</bug_when>
    <thetext>Created attachment 347156
Patch

This patch addresses the warnings. See ChangeLogs and comments for explanations. I left out an alignment warning in Source/ThirdParty/capstone/Source/cs.c as I&apos;m not sure how to address issues in ThirdParty/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450269</commentid>
    <comment_count>2</comment_count>
      <attachid>347156</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-15 05:25:21 -0700</bug_when>
    <thetext>Comment on attachment 347156
Patch

Attachment 347156 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/8866207

New failing tests:
stress/ftl-put-by-id-setter-exception-interesting-live-state.js.ftl-eager-no-cjit
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450282</commentid>
    <comment_count>3</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-15 07:18:12 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #2)
&gt; Comment on attachment 347156 [details]
&gt; Patch
&gt; 
&gt; Attachment 347156 [details] did not pass jsc-ews (mac):
&gt; Output: https://webkit-queues.webkit.org/results/8866207
&gt; 
&gt; New failing tests:
&gt; stress/ftl-put-by-id-setter-exception-interesting-live-state.js.ftl-eager-no-
&gt; cjit
&gt; apiTests

Not sure what platform is jsc-ews, but I suspect it&apos;s neither mips nor armv7. Given the changes in the file, this looks a lot like a false positive here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450364</commentid>
    <comment_count>4</comment_count>
      <attachid>347180</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-15 11:24:55 -0700</bug_when>
    <thetext>Created attachment 347180
Patch

New version that should fix compilation on compilers other than gcc/clang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450678</commentid>
    <comment_count>5</comment_count>
      <attachid>347180</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-16 08:05:24 -0700</bug_when>
    <thetext>Comment on attachment 347180
Patch

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

I&apos;m not qualified to review the uses of this macro, but here are my thoughts on the macro itself:

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1318
&gt; +// offsetOfData() makes sure that its return value is aligned to the size of
&gt; +// Digit, so even though we cast to char* for pointer arithmetics, the cast to
&gt; +// Digit* is properly aligned, though the compiler doesn&apos;t know about it,
&gt; +// therefore we disable this warning.

This should be aligned four spaces to the right.

&gt; Source/WTF/wtf/Compiler.h:400
&gt; +#if !defined(IGNORE_WARNING) &amp;&amp; COMPILER(GCC_OR_CLANG)
&gt; +#define _WEBKIT_IGNORE_WARNING_STRINGIFY(a) #a
&gt; +#define IGNORE_WARNING(warning) do {\
&gt; +    _Pragma(&quot;GCC diagnostic push&quot;) \
&gt; +    _Pragma(_WEBKIT_IGNORE_WARNING_STRINGIFY(GCC diagnostic ignored warning)) \
&gt; +    } while (false)
&gt; +
&gt; +#define IGNORE_WARNING_END do {\
&gt; +    _Pragma(&quot;GCC diagnostic pop&quot;) \
&gt; +    } while (false)
&gt; +#endif

Wow, very nice. You should use this to reduce all the manual use of #pragma GCC diagnostic and #pragma clang diagnostic throughout the project.

Unfortunately, I think you are going to need two separate definitions here for Clang and GCC, IGNORE_WARNING_GCC and IGNORE_WARNING_CLANG, or you&apos;ll just wind up introducing new warnings about unknown pragmas when the wrong compiler is used. At least I&apos;m pretty sure GCC complains if it doesn&apos;t recognize the warning, and it definitely complains if it sees #pragma clang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451071</commentid>
    <comment_count>6</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-17 03:46:32 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; Comment on attachment 347180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=347180&amp;action=review
&gt; 
&gt; I&apos;m not qualified to review the uses of this macro, but here are my thoughts
&gt; on the macro itself:
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1318
&gt; &gt; +// offsetOfData() makes sure that its return value is aligned to the size of
&gt; &gt; +// Digit, so even though we cast to char* for pointer arithmetics, the cast to
&gt; &gt; +// Digit* is properly aligned, though the compiler doesn&apos;t know about it,
&gt; &gt; +// therefore we disable this warning.
&gt; 
&gt; This should be aligned four spaces to the right.
Right, sorry for the oversight.

&gt; 
&gt; &gt; Source/WTF/wtf/Compiler.h:400
&gt; &gt; +#if !defined(IGNORE_WARNING) &amp;&amp; COMPILER(GCC_OR_CLANG)
&gt; &gt; +#define _WEBKIT_IGNORE_WARNING_STRINGIFY(a) #a
&gt; &gt; +#define IGNORE_WARNING(warning) do {\
&gt; &gt; +    _Pragma(&quot;GCC diagnostic push&quot;) \
&gt; &gt; +    _Pragma(_WEBKIT_IGNORE_WARNING_STRINGIFY(GCC diagnostic ignored warning)) \
&gt; &gt; +    } while (false)
&gt; &gt; +
&gt; &gt; +#define IGNORE_WARNING_END do {\
&gt; &gt; +    _Pragma(&quot;GCC diagnostic pop&quot;) \
&gt; &gt; +    } while (false)
&gt; &gt; +#endif
&gt; 
&gt; Wow, very nice. You should use this to reduce all the manual use of #pragma
&gt; GCC diagnostic and #pragma clang diagnostic throughout the project.
I agree. I also think that should be a separate patch, WDYT?

&gt; 
&gt; Unfortunately, I think you are going to need two separate definitions here
&gt; for Clang and GCC, IGNORE_WARNING_GCC and IGNORE_WARNING_CLANG, or you&apos;ll
&gt; just wind up introducing new warnings about unknown pragmas when the wrong
&gt; compiler is used. At least I&apos;m pretty sure GCC complains if it doesn&apos;t
&gt; recognize the warning, and it definitely complains if it sees #pragma clang.

Apparently, clang is OK with at least some gcc-formatted pragma ignores. For proof, the bots are happy with the ones in this patch (though they might not be necessary), there is also older existing code that does that (see e.g. JavaScriptCore/assembler/LinkBuffer.h), so I think it&apos;s not a problem for clang. Yet grepping through the code, there are ignores that are gcc specific or clang specific, so my proposal would be to have:
 - IGNORE_WARNING_GCC / IGNORE_WARNING_GCC_END, with same definition as IGNORE_WARNING(_END) in my patch but only defined for GCC.
 - IGNORE_WARNING_CLANG / IGNORE_WARNING_CLANG_END, with clang pragmas, only defined for clang
 - IGNORE_WARNING_GCC_OR_CLANG / IGNORE_WARNING_GCC_OR_CLANG_END with same definition as IGNORE_WARNING(_END), defined for both clang and GCC

We might be able to live without the third one if we can prove that clang doesn&apos;t get confused if we use both the GCC and CLANG macros together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451076</commentid>
    <comment_count>7</comment_count>
      <attachid>347180</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-08-17 04:33:45 -0700</bug_when>
    <thetext>Comment on attachment 347180
Patch

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

This is a nice patch, and I like it that you have added comments documenting
why it&apos;s safe to disable the compiler warning for the tricky cases. (Informal r+!)

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +        Exception * cast to a JSObject *. It is therefore safe to cast it back

Probabl your editor has messed a bit here with the star signs “*” used
as bullets and it may have reflowed the text without removing them, and
now there&apos;s too many inline stars in this paragraph.

Please remove the excess stars :-)

&gt;&gt;&gt; Source/WTF/wtf/Compiler.h:400
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; Wow, very nice. You should use this to reduce all the manual use of #pragma GCC diagnostic and #pragma clang diagnostic throughout the project.
&gt;&gt; 
&gt;&gt; Unfortunately, I think you are going to need two separate definitions here for Clang and GCC, IGNORE_WARNING_GCC and IGNORE_WARNING_CLANG, or you&apos;ll just wind up introducing new warnings about unknown pragmas when the wrong compiler is used. At least I&apos;m pretty sure GCC complains if it doesn&apos;t recognize the warning, and it definitely complains if it sees #pragma clang.
&gt; 
&gt; I agree. I also think that should be a separate patch, WDYT?

I would be fine with this being solved in a follow-up patch, just don&apos;t
forget about it ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451095</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 06:26:53 -0700</bug_when>
    <thetext>I agree with splitting the macros out to a separate patch, since that&apos;s of general interest to many WebKit developers. I would try to get more feedback on it too, e.g. on webkit-dev@.

Remember clang will accept GCC pragmas, but not vice-versa.

I think clang will warn if it sees a GCC-specific warning (not positive) or a warning specific to an older version of clang (also not positive).

GCC will definitely warn if it sees a clang pragma, or a clang-specific warning, or even a warning specific to older versions of GCC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451097</commentid>
    <comment_count>9</comment_count>
      <attachid>347180</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-17 06:29:39 -0700</bug_when>
    <thetext>Comment on attachment 347180
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:28
&gt;&gt; +        Exception * cast to a JSObject *. It is therefore safe to cast it back
&gt; 
&gt; Probabl your editor has messed a bit here with the star signs “*” used
&gt; as bullets and it may have reflowed the text without removing them, and
&gt; now there&apos;s too many inline stars in this paragraph.
&gt; 
&gt; Please remove the excess stars :-)

These stars are here on purpose and have a meaning as I am talking about pointer types &quot;Exception *&quot; and &quot;JSObject *&quot;.

These are not the excess stars you are looking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451100</commentid>
    <comment_count>10</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-08-17 06:46:54 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; I agree with splitting the macros out to a separate patch, since that&apos;s of
&gt; general interest to many WebKit developers. I would try to get more feedback
&gt; on it too, e.g. on webkit-dev@.
&gt; 
&gt; Remember clang will accept GCC pragmas, but not vice-versa.

Sure.

&gt; 
&gt; I think clang will warn if it sees a GCC-specific warning (not positive) or
&gt; a warning specific to an older version of clang (also not positive).
&gt; 
&gt; GCC will definitely warn if it sees a clang pragma, or a clang-specific
&gt; warning, or even a warning specific to older versions of GCC.


Do you have a specific change to my proposal to recommend in the light of your two assertions?

In spite of this, nobody seems to be complaining about the existing pragmas in the code, so I think the cases where these complain are either rare or remaining outside of our current use, or the complaints are with versions nobody cares about maybe? Anyway, if I add the macros I proposed previously and replace the manual warning disables in the code, that should be a no-op. Then it&apos;s up to future users to use the macro carefully, just as when you use pragmas directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451108</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 07:18:23 -0700</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #10) 
&gt; Do you have a specific change to my proposal to recommend in the light of
&gt; your two assertions?

Nope.

&gt; In spite of this, nobody seems to be complaining about the existing pragmas
&gt; in the code, so I think the cases where these complain are either rare or
&gt; remaining outside of our current use, or the complaints are with versions
&gt; nobody cares about maybe? Anyway, if I add the macros I proposed previously
&gt; and replace the manual warning disables in the code, that should be a no-op.
&gt; Then it&apos;s up to future users to use the macro carefully, just as when you
&gt; use pragmas directly.

Yes, if your macros can replace the existing #pragma usage without introducing warnings, then they&apos;re good IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451201</commentid>
    <comment_count>12</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-08-17 13:11:53 -0700</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #9)
&gt; Comment on attachment 347180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=347180&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:28
&gt; &gt;&gt; +        Exception * cast to a JSObject *. It is therefore safe to cast it back
&gt; &gt; 
&gt; &gt; Probabl your editor has messed a bit here with the star signs “*” used
&gt; &gt; as bullets and it may have reflowed the text without removing them, and
&gt; &gt; now there&apos;s too many inline stars in this paragraph.
&gt; &gt; 
&gt; &gt; Please remove the excess stars :-)
&gt; 
&gt; These stars are here on purpose and have a meaning as I am talking about
&gt; pointer types &quot;Exception *&quot; and &quot;JSObject *&quot;.
&gt; 
&gt; These are not the excess stars you are looking for.

Wow, now that you mention it… you&apos;re right, but it&apos;s terribly hard to
read. I would either write “Exception* cast to a JSObject*” (no spaces
after the type name, so the star is part of the type name — same as it
is written in the code), or even “This is a Exception pointer cast to
a JSObject pointer“.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456720</commentid>
    <comment_count>13</comment_count>
      <attachid>348927</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-05 08:54:55 -0700</bug_when>
    <thetext>Created attachment 348927
Patch

New version of the patch making use of the macros introduced in the patch for #188996. Won&apos;t work without that patch previously applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456733</commentid>
    <comment_count>14</comment_count>
      <attachid>348927</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-09-05 09:32:56 -0700</bug_when>
    <thetext>Comment on attachment 348927
Patch

Please fix all the build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456735</commentid>
    <comment_count>15</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-05 09:39:28 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #14)
&gt; Comment on attachment 348927 [details]
&gt; Patch
&gt; 
&gt; Please fix all the build failures.

As said in my previous comment, the patch depends on the patch of #188996 being applied (I&apos;m actually surprised the patch applies on ToT at all), though I am providing it to allow for early discussion. I&apos;ll provide a rebased patch once the fix of #188996 is landed, or an alternative if for some reason we don&apos;t want the approach proposed there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456736</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-09-05 09:41:05 -0700</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #15)
&gt; (In reply to Mark Lam from comment #14)
&gt; &gt; Comment on attachment 348927 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Please fix all the build failures.
&gt; 
&gt; As said in my previous comment, the patch depends on the patch of #188996
&gt; being applied (I&apos;m actually surprised the patch applies on ToT at all),
&gt; though I am providing it to allow for early discussion. I&apos;ll provide a
&gt; rebased patch once the fix of #188996 is landed, or an alternative if for
&gt; some reason we don&apos;t want the approach proposed there.

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459015</commentid>
    <comment_count>17</comment_count>
      <attachid>349562</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-12 11:13:53 -0700</bug_when>
    <thetext>Created attachment 349562
Patch

New version rebased after landing #188996.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459720</commentid>
    <comment_count>18</comment_count>
      <attachid>349756</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-14 05:02:37 -0700</bug_when>
    <thetext>Created attachment 349756
Patch

New version fixing bmalloc/ChangeLog entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459778</commentid>
    <comment_count>19</comment_count>
      <attachid>349756</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-09-14 10:13:19 -0700</bug_when>
    <thetext>Comment on attachment 349756
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerPrinter.cpp:140
&gt; +        // assuming memory is not malformed, it originately pointed to a value

/originately/originally/

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:814
&gt; +        IGNORE_CAST_ALIGN_WARNINGS_BEGIN
&gt;          EXCEPTION_ASSERT(throwScope.exception() == reinterpret_cast&lt;Exception*&gt;(error));
&gt; +        IGNORE_CAST_ALIGN_WARNINGS_END

Instead of doing this, can you just change prepareForExecution() to return a std::optional&lt;Exception*&gt;?  That should make the code cleaner and better document what will actually be returned.  That also removes the need for all these reinterpret_casts.  I think the JSObject* return value is a holdover from ancient times.

&gt; Source/bmalloc/bmalloc/IsoPageInlines.h:197
&gt; +        // the cast below is safe on these platforms as long as
&gt; +        // both Config::objectSize and the alignment of this are multiples of
&gt; +        // the required alignment of FreeCell
&gt; +        static_assert(!(Config::objectSize % alignof(FreeCell)), &quot;Config::objectSize should respect alignment of FreeCell&quot;);
&gt; +        static_assert(!(alignof(IsoPage&lt;Config&gt;) % alignof(FreeCell)), &quot;Alignment of IsoPage&lt;Config&gt; should match that of FreeCell&quot;);

Shouldn&apos;t these be always true?  I think we can get rid of the #if CPU(ARM) || CPU(MIPS) here and below.  You can also remove the comment.  The assertions are sufficient to document the invariant / requirement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460131</commentid>
    <comment_count>20</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-17 03:59:23 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #19)
&gt; Comment on attachment 349756 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=349756&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerPrinter.cpp:140
&gt; &gt; +        // assuming memory is not malformed, it originately pointed to a value
&gt; 
&gt; /originately/originally/

Sorry, I don&apos;t know why, I keep on convincing myself that this is a word ;).

&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:814
&gt; &gt; +        IGNORE_CAST_ALIGN_WARNINGS_BEGIN
&gt; &gt;          EXCEPTION_ASSERT(throwScope.exception() == reinterpret_cast&lt;Exception*&gt;(error));
&gt; &gt; +        IGNORE_CAST_ALIGN_WARNINGS_END
&gt; 
&gt; Instead of doing this, can you just change prepareForExecution() to return a
&gt; std::optional&lt;Exception*&gt;?  That should make the code cleaner and better
&gt; document what will actually be returned.  That also removes the need for all
&gt; these reinterpret_casts.  I think the JSObject* return value is a holdover
&gt; from ancient times.

I&apos;d be happy to do so. I did not do it *originally* because I assumed (wrongly I guess, from your request) that there was a reason-I-don&apos;t-understand for prepareForExecution() to be that way and didn&apos;t want to risk breaking something.

&gt; 
&gt; &gt; Source/bmalloc/bmalloc/IsoPageInlines.h:197
&gt; &gt; +        // the cast below is safe on these platforms as long as
&gt; &gt; +        // both Config::objectSize and the alignment of this are multiples of
&gt; &gt; +        // the required alignment of FreeCell
&gt; &gt; +        static_assert(!(Config::objectSize % alignof(FreeCell)), &quot;Config::objectSize should respect alignment of FreeCell&quot;);
&gt; &gt; +        static_assert(!(alignof(IsoPage&lt;Config&gt;) % alignof(FreeCell)), &quot;Alignment of IsoPage&lt;Config&gt; should match that of FreeCell&quot;);
&gt; 
&gt; Shouldn&apos;t these be always true?  I think we can get rid of the #if CPU(ARM)
&gt; || CPU(MIPS) here and below.  You can also remove the comment.  The
&gt; assertions are sufficient to document the invariant / requirement.

Right. I will do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460909</commentid>
    <comment_count>21</comment_count>
      <attachid>350104</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-19 03:48:25 -0700</bug_when>
    <thetext>Created attachment 350104
Patch

New version addressing Mark&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460910</commentid>
    <comment_count>22</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-19 03:52:35 -0700</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #21)
&gt; Created attachment 350104 [details]
&gt; Patch
&gt; 
&gt; New version addressing Mark&apos;s comments.

One thing of which I&apos;m not entirely certain is whether I should just change prepareForExecution(), which I did because it felt like the minimal change; or whether we should make prepareForExecutionImpl() return an std::optional&lt;Exception*&gt; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463538</commentid>
    <comment_count>23</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-26 02:00:41 -0700</bug_when>
    <thetext>Ping reviewer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463549</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-26 03:07:20 -0700</bug_when>
    <thetext>Why not using bitwise_cast&lt;&gt; instead of reinterpret_cast&lt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465049</commentid>
    <comment_count>25</comment_count>
      <attachid>350104</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 09:50:15 -0700</bug_when>
    <thetext>Comment on attachment 350104
Patch

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

Looks good but let&apos;s fix the ScriptExecutable::prepareForExecutionImpl() part as well.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerPrinter.cpp:141
&gt; +        // of the required size, which should be properly aligned on platforms

nit: I would say &quot;which should already be&quot;

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:1064
&gt; +    JSObject* exception = prepareForExecutionImpl(vm, function, scope, kind, resultCodeBlock);
&gt; +    if (exception) {
&gt; +        IGNORE_CAST_ALIGN_WARNINGS_BEGIN
&gt; +        return std::optional&lt;Exception *&gt;(reinterpret_cast&lt;Exception*&gt;(exception));
&gt; +        IGNORE_CAST_ALIGN_WARNINGS_END
&gt; +    } else
&gt; +        return std::nullopt;

Let&apos;s just make ScriptExecutable::prepareForExecutionImpl() return a std::optional&lt;Exception*&gt; as well.  I don&apos;t see a good reason for doing this half way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465155</commentid>
    <comment_count>26</comment_count>
      <attachid>351282</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-10-01 11:55:36 -0700</bug_when>
    <thetext>Created attachment 351282
Patch

New version: change return type of prepareForExecutionImpl() as well, use bitwise_cast in it, and address the comment in MacroAssemblerPrinter.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465163</commentid>
    <comment_count>27</comment_count>
      <attachid>351282</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 12:24:57 -0700</bug_when>
    <thetext>Comment on attachment 351282
Patch

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

r=me.  The patch looks correct though I think it would be better if we use static_casts in instead of bitwise_casts.

&gt; Source/JavaScriptCore/runtime/ScriptExecutable.cpp:349
&gt; -        return throwException(&amp;state, throwScope, createError(&amp;state, &quot;Forced Failure&quot;_s));
&gt; +        return std::optional&lt;Exception *&gt;(bitwise_cast&lt;Exception*&gt;(throwException(&amp;state, throwScope, createError(&amp;state, &quot;Forced Failure&quot;_s))));

I actually disagree with using bitwise_cast here because we&apos;re casting from a pointer to a pointer.  Hence, they are guaranteed to be of the same bit length.  In fact, I think a static cast would be more meaningful because it enforces that there&apos;s a &quot;is a&quot; relationship between the source (JSObject*) and the result (Exception*).  The times when we should use bitwise_cast are when casting between the bit value of non-pointer types (e.g. integers) and pointers.

Are you sure that this is where Yusuke is asking to apply the bitwise_cast?

&gt; Source/JavaScriptCore/runtime/ScriptExecutable.cpp:357
&gt; +        return std::optional&lt;Exception *&gt;(bitwise_cast&lt;Exception*&gt;(exception));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465177</commentid>
    <comment_count>28</comment_count>
      <attachid>351282</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 12:40:19 -0700</bug_when>
    <thetext>Comment on attachment 351282
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerPrinter.cpp:145
&gt;              auto p = reinterpret_cast&lt;int16_t*&gt;(ptr);

I think this is the place that Yusuke is suggesting that the bitwise_cast be used.  In so doing, I think you can do away with the IGNORE_CAST_ALIGN_WARNINGS_BEGIN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465192</commentid>
    <comment_count>29</comment_count>
      <attachid>351289</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-10-01 13:06:46 -0700</bug_when>
    <thetext>Created attachment 351289
Patch

Use bitwise_cast in printMemory() and static_cast in prepareForExecutionImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465193</commentid>
    <comment_count>30</comment_count>
      <attachid>351289</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 13:12:53 -0700</bug_when>
    <thetext>Comment on attachment 351289
Patch

r- for now.  This patch cane be improved i.e. there&apos;s no need for the IGNORE_CAST_ALIGN_WARNINGS macros at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465198</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 13:22:03 -0700</bug_when>
    <thetext>@Guillaume, I want you to understand why bitwise_cast was suggested as an alternative to IGNORE_CAST_ALIGN_WARNINGS: using bitwise_cast means we want the code to just treat the pointer bits as the new type, and that the author already knows that the bits will work correctly as the new type.  This is why we don&apos;t need to disable the warnings.

However, you will find that bmalloc (which sits below WTF) will have no knowledge of bitwise_cast yet (which is defined in WTF).  bmalloc needs its own copy of bitwise_cast.  I suggest copying the bitwise_cast template to bamlloc&apos;s Algorithm.h and then using it in the code instead of the IGNORE_CAST_ALIGN_WARNINGS macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467768</commentid>
    <comment_count>32</comment_count>
      <attachid>351974</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-10-10 11:22:28 -0700</bug_when>
    <thetext>Created attachment 351974
Patch

Patch reworked without using IGNORE_CAST_ALIGN_WARNINGS.* and instead focusing on using the appropriate cast in each case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467770</commentid>
    <comment_count>33</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-10 11:25:44 -0700</bug_when>
    <thetext>Attachment 351974 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Algorithm.h:189:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467786</commentid>
    <comment_count>34</comment_count>
      <attachid>351974</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-10 11:56:17 -0700</bug_when>
    <thetext>Comment on attachment 351974
Patch

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

r=me if EWS bots are green.

&gt; Source/bmalloc/bmalloc/Algorithm.h:186
&gt; + * Copied from WTF/wtf/StdLibExtras.h

No need to use C style comments.  Can you switch this to a C++ comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468305</commentid>
    <comment_count>35</comment_count>
      <attachid>352124</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-10-11 19:09:33 -0700</bug_when>
    <thetext>Created attachment 352124
Patch

Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468307</commentid>
    <comment_count>36</comment_count>
      <attachid>352124</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-11 19:12:16 -0700</bug_when>
    <thetext>Comment on attachment 352124
Patch

Rejecting attachment 352124 from commit-queue.

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

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

Full output: https://webkit-queues.webkit.org/results/9545323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468308</commentid>
    <comment_count>37</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-11 19:12:25 -0700</bug_when>
    <thetext>Attachment 352124 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Algorithm.h:187:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468309</commentid>
    <comment_count>38</comment_count>
      <attachid>352124</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-11 19:14:03 -0700</bug_when>
    <thetext>Comment on attachment 352124
Patch

Next time, when landing after a review, you should fill in the name of the reviewer manually before cq+ing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468310</commentid>
    <comment_count>39</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-11 19:15:01 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #38)
&gt; Comment on attachment 352124 [details]
&gt; Patch
&gt; 
&gt; Next time, when landing after a review, you should fill in the name of the
&gt; reviewer manually before cq+ing.

I mean if the patch doesn&apos;t have a r+ from a reviewer.  I took care of it for you this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468316</commentid>
    <comment_count>40</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-10-11 19:38:12 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #38)
&gt; Comment on attachment 352124 [details]
&gt; Patch
&gt; 
&gt; Next time, when landing after a review, you should fill in the name of the
&gt; reviewer manually before cq+ing.

Oops. Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468325</commentid>
    <comment_count>41</comment_count>
      <attachid>352124</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-11 19:51:53 -0700</bug_when>
    <thetext>Comment on attachment 352124
Patch

Clearing flags on attachment: 352124

Committed r237063: &lt;https://trac.webkit.org/changeset/237063&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468326</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-11 19:51:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468327</commentid>
    <comment_count>43</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-11 19:52:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/45215159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468568</commentid>
    <comment_count>44</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-10-12 14:19:49 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #41)
&gt; Committed r237063: &lt;https://trac.webkit.org/changeset/237063&gt;

This change appears to have caused layout test fast/dom/Window/window-postmessage-clone-deep-array.html to fail on macOS Debug WK1:

--- /Volumes/Data/slave/sierra-debug-tests-wk1/build/layout-test-results/fast/dom/Window/window-postmessage-clone-deep-array-expected.txt
+++ /Volumes/Data/slave/sierra-debug-tests-wk1/build/layout-test-results/fast/dom/Window/window-postmessage-clone-deep-array-actual.txt
@@ -1,5 +1,5 @@
+CONSOLE MESSAGE: line 34: RangeError: Maximum call stack size exceeded.
 Tests that we support cloning deep(ish) arrays.
 
-PASS: eventData is [object Array](default toString threw RangeError: Maximum call stack size exceeded.) of type object
 PASS: eventData is done of type string
 

https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK1%20(Tests)/r237063%20(9929)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468571</commentid>
    <comment_count>45</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-10-12 14:23:38 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #44)
&gt; (In reply to WebKit Commit Bot from comment #41)
&gt; &gt; Committed r237063: &lt;https://trac.webkit.org/changeset/237063&gt;
&gt; 
&gt; This change appears to have caused layout test
&gt; fast/dom/Window/window-postmessage-clone-deep-array.html to fail on macOS
&gt; Debug WK1

Correction: It also affects macOS and iOS Debug WK2 configurations.

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=fast%2Fdom%2FWindow%2Fwindow-postmessage-clone-deep-array.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468604</commentid>
    <comment_count>46</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-10-12 14:42:30 -0700</bug_when>
    <thetext>Reverted r237063 for reason:

Caused layout test fast/dom/Window/window-postmessage-clone-deep-array.html to fail on macOS and iOS Debug bots.

Committed r237080: &lt;https://trac.webkit.org/changeset/237080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510420</commentid>
    <comment_count>47</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-02-27 05:37:35 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 195049 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347156</attachid>
            <date>2018-08-15 03:56:08 -0700</date>
            <delta_ts>2018-08-15 11:24:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20180815125607.patch</filename>
            <type>text/plain</type>
            <size>17067</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmVhMjg1N2Q2YzMzMGIyMzJiZDVkNmNlZDk4MWUzNGU5NGQ2MzIyLi4xZWE5YjFlOTYxZDliYWVi
ZmFkODYwYmI2ZmEzNmYxODNjZDU2OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wOC0xNSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOiBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZQorICAgICAgICBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YgdGhlIHNhbWUgc2l6ZSBhbmQgY2FuIGlnbm9yZSB0
aGUKKyAgICAgICAgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6IG1hcmtlZCBhcyBwb3Rl
bnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQKKyAgICAgICAgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6IG1vZGlmaWVk
RmxhZ3MgaXMgbm90IHVzZWQgb24KKyAgICAgICAgbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICBUaGUgcHJlcGFyZUZvckV4ZWN1
dGlvbigpIG1ldGhvZCBlaXRoZXIgcmV0dXJucyBudWxscHRyIG9yIGFuCisgICAgICAgIEV4Y2Vw
dGlvbiAqIGNhc3QgdG8gYSBKU09iamVjdCAqLiBJdCBpcyB0aGVyZWZvcmUgc2FmZSB0byBjYXN0
IGl0IGJhY2sKKyAgICAgICAgdG8gRXhjZXB0aW9uICogZXZlbiB0aG91Z2ggaXQgaGFzIHN0cmlj
dGVyIGFsaWdubWVudCByZXF1aXJlbWVudHMuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICBTYW1lIGFzIGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVu
dGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6
CisgICAgICAgIFBvaW50ZXIgYXJpdGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9l
c24ndCB1bmRlcnN0YW5kIHRoaXMsCisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24K
KyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6Y29kZUJsb2Nr
RnJvbUFyZyk6CisgICAgICAgIEFmdGVyIHRoZSBjYXN0LCBhIGNoZWNrIGlzIGRvbmUgdG8gbWFr
ZSBzdXJlIHRoYXQgdGhlIHBvaW50ZXIgaXMgdG8gYQorICAgICAgICBrbm93biBDb2RlQmxvY2sg
YmVmb3JlIHVzaW5nIGl0LCBzbyBpZiB0aGUgcmVzdWx0IGlzIGJhZGx5IGFsaWduZWQgaXQKKyAg
ICAgICAgd29uJ3QgYmUgdXNlZCBhbnl3YXlzLgorCiAyMDE4LTA4LTEyICBLYXJvIEd5b2tlciAg
PGthcm9neW9rZXIyK3dlYmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgRGlzYWJsZSBKSVQgb24g
SUEtMzIgd2l0aG91dCBTU0UyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwOGQ4MDRkYTk1YmUzZmYxODViOWJkMTJhZTkxN2U3
MTQ2OWY1ODAuLmEyNTg0MGYyMzVlNjczMmQxMWYwMmVmMjFlNWFlZjM2YmRiZmJjZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTgtMDgtMTUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBh
bmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIElHTk9SRV9XQVJOSU5HKCkgYW5kIElHTk9SRV9XQVJOSU5HX0VORCgpIG1hY3JvcyB0
byBiZSBhYmxlIHRvCisgICAgICAgIHNpbXBseSBpZ25vcmUgYSBjZXJ0YWluIGdjYy9jbGFuZyB3
YXJuaW5nIGZvciBhIHdlbGwgZGVmaW5lZCBjb2RlCisgICAgICAgIHN1YnNldC4KKworICAgICAg
ICAqIHd0Zi9Db21waWxlci5oOgorCiAyMDE4LTA4LTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFttYWNPU10gTXVsdGlwbGUgdGhpcmQgcGFydHkgYXBwcyBj
cmFzaCBkdWUgdG8gdGhlIHRocmVhZCBzYWZldHkgY2hlY2sgaW4gVGltZXJCYXNlOjpzZXROZXh0
RmlyZVRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwppbmRleCA4MWNjYmVlNzdkZjUyMjlhMGJmM2Y0Mzc0YjRhMmFmYTdh
MWMzZDNjLi4xZmUxMmM4NTUxZDBkMDkwYWRhMGU0OWRhNGNhMDA1MWU1ODkyMzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDgtMTUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWpl
bW9udEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24g
bWlwcyBhbmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBJR05PUkVfV0FSTklORy9JR05PUkVfV0FSTklOR19FTkQgdG8gYWxsb3cgc29t
ZSBjYXN0cyBhZnRlcgorICAgICAgICBwb2ludGVyIGNhbGN1bGF0aW9ucyB3aXRob3V0IHRyaWdn
ZXJpbmcgYWxpZ25tZW50IHdhcm5pbmdzIG9uIG1pcHMgYW5kCisgICAgICAgIGFybXY3LgorCisg
ICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oOgorICAgICAgICAoYm1h
bGxvYzo6SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKToKKyAgICAgICAgKiBibWFs
bG9jL0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46
OnN0YXJ0QWxsb2NhdGluZyk6CisKIDIwMTgtMDctMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEluaXRpYWxpemUgYm1hbGxvYzo6RGVidWdIZWFwOjptX3BhZ2VT
aXplIGZvciBub24tRGFyd2luIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAppbmRleCAzZWQ2NGI5
MGJhNWZiYzkzYjJjOTkyYjQwZWMyMWYwNzEwZDE1ZGQ3Li40ZjQ0NjIzOTI5MjAzM2ViYjkzOGE4
ZGU1ZTdlOWMyNmNhZDQxMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCkBAIC0xMzcsNiArMTM3LDEw
IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwMnggJWQ+IiwgcCwgKnAsICpwKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAvLyBhc3N1bWluZyBtZW1vcnkg
aXMgbm90IG1hbGZvcm1lZCwgaXQgb3JpZ2luYXRlbHkgcG9pbnRlZCB0byBhIHZhbHVlCisgICAg
ICAgIC8vIG9mIHRoZSByZXF1aXJlZCBzaXplLCB3aGljaCBzaG91bGQgYmUgcHJvcGVybHkgYWxp
Z25lZCBvbiBwbGF0Zm9ybXMKKyAgICAgICAgLy8gdGhhdCByZXF1aXJlIGl0LgorICAgICAgICBJ
R05PUkVfV0FSTklORygiLVdjYXN0LWFsaWduIik7CiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0
ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7CiAgICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJl
dF9jYXN0PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0
eCAlZD4iLCBwLCAqcCwgKnApOwpAQCAtMTUyLDYgKzE1Niw3IEBAIHZvaWQgcHJpbnRNZW1vcnko
UHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVwOjwweCUwMTYiIFBSSXg2NCAiICUiIFBSSWQ2NCAiPiIsIHAsICpwLCAqcCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOwog
ICAgICAgICAvLyBFbHNlLCB1bmtub3duIHdvcmQgc2l6ZS4gRmFsbCB0aHJ1IGFuZCBkdW1wIGlu
IHRoZSBnZW5lcmljIHdheS4KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci90ZXN0bWFzbS5jcHAKaW5kZXggN2ZlZjJkYmUwZTJiMGM5YmE1Y2NiODAxNzE5YWE4YjQ4
YjZmOWZmMS4uNTI0YTE5YTY0MWNkNTJhYThiZjY4NTMyOTllZGVmYmUzZWI2OWYyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTI0Niw3ICsy
NDYsNyBAQCBzdGF0aWMgVmVjdG9yPGRvdWJsZT4gZG91YmxlT3BlcmFuZHMoKQogfQogCiAKLXN0
YXRpYyBWZWN0b3I8ZmxvYXQ+IGZsb2F0T3BlcmFuZHMoKQorc3RhdGljIFZlY3RvcjxmbG9hdD4g
VU5VU0VEX0ZVTkNUSU9OIGZsb2F0T3BlcmFuZHMoKQogewogICAgIHJldHVybiBWZWN0b3I8Zmxv
YXQ+IHsKICAgICAgICAgMCwKQEAgLTc0Nyw3ICs3NDcsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tWYWx1ZXMoKQogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CiAgICAgdm9pZCog
b3JpZ2luYWxTUCB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBuZXdTUCB7IG51bGxwdHIgfTsKKyNp
ZiAhKENQVShNSVBTKSkKICAgICB1aW50cHRyX3QgbW9kaWZpZWRGbGFncyB7IDAgfTsKKyNlbmRp
ZgogICAgIHNpemVfdCBudW1iZXJPZkV4dHJhRW50cmllc1RvV3JpdGUgeyAxMCB9OyAvLyBBUk02
NCByZXF1aXJlcyB0aGF0IHRoaXMgYmUgMiB3b3JkIGFsaWduZWQuCiAKICNpZiBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggZThlMGI1MGEzOTE2NzRhNjFlNjBhYThlMzFkNGYzOWI0OTEz
NWYxMS4uNjBlOTk3ZDU3Yzk1OWJjYTJlOTc2YzJlZTVlOWNkMDMyY2E4ZTBmYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC05
MzksNyArOTM5LDkgQEAgZmFpbGVkSlNPTlA6CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRl
bXBDb2RlQmxvY2s7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVG
b3JFeGVjdXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZv
ckNhbGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBJR05PUkVfV0FSTklORygiLVdjYXN0LWFs
aWduIik7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9
PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9X
QVJOSU5HX0VORDsKICAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKGVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PFBy
b2dyYW1Db2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKQEAgLTk5Nyw3ICs5OTksOSBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBDYWxsVAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21w
aWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9y
Q2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1XY2FzdC1hbGln
biIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0g
cmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgSUdO
T1JFX1dBUk5JTkdfRU5EOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQog
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKIApAQCAtMTA2
NCw3ICsxMDY4LDkgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogY29uc3RydWMKICAgICBpZiAoaXNKU0NvbnN0
cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0
KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7
CisgICAgICAgIElHTk9SRV9XQVJOSU5HKCItV2Nhc3QtYWxpZ24iKTsKICAgICAgICAgRVhDRVBU
SU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhj
ZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAgIElHTk9SRV9XQVJOSU5HX0VORDsKICAg
ICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAKQEAgLTExMTIsNyArMTExOCw5IEBAIENhbGxG
cmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgIENvZGVC
bG9jayogbmV3Q29kZUJsb2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlv
biwgc2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgIElHTk9SRV9XQVJOSU5H
KCItV2Nhc3QtYWxpZ24iKTsKICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgIElHTk9S
RV9XQVJOSU5HX0VORDsKICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lQ2xvc3VyZSgpOwogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQgPSBmYWxzZTsKQEAgLTExNzAsNyArMTE3OCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Zh
bHVlCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7CiAgICAgICAgIEpT
T2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2YWxFeGVj
dXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsK
KyAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1XY2FzdC1hbGlnbiIpOwogICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2
YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKQEAgLTEyOTMsNyArMTMwMyw5IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBDCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxv
Y2s7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJl
Rm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUs
IENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1X
Y2FzdC1hbGlnbiIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAg
ICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxl
RXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsK
ICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1w
Q29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDIyNmMyMGUyZTRlY2ZmNWJiYTgxMDYyMDY4NGIwMTE1NjQ3MTM1NTIuLmJjMmFkOGI2
NjY0MTVkNGJhZGUyY2UxZDkyODY5MTY2NDBkZjhkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTA4Miw3ICsxMDgyLDkgQEAgU2xvd1BhdGhS
ZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBleGVj
Q2FsbGVlLCBDYWxsTGkKIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhl
Y0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFi
bGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBJ
R05PUkVfV0FSTklORygiLVdjYXN0LWFsaWduIik7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
dGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVy
cm9yKSk7CisgICAgICAgIElHTk9SRV9XQVJOSU5HX0VORDsKICAgICAgICAgaWYgKGVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVRocm93RXhjZXB0aW9uKCk7CiAgICAgICAgIGNvZGVC
bG9jayA9ICpjb2RlQmxvY2tTbG90OwpAQCAtMTEzOCw3ICsxMTQwLDkgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJ
bmZvKiBjYWxsTGkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdCk7CiAgICAgICAgIAogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigq
dm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9XQVJO
SU5HKCItV2Nhc3QtYWxpZ24iKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQodGhy
b3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2Vw
dGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9XQVJOSU5HX0VORDsKICAgICAgICAgaWYg
KGVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0
YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwpAQCAtMTE4OCw3ICsx
MTkyLDkgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KAogCiAgICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRy
ZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5j
dGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgSUdOT1JFX1dBUk5J
TkcoIi1XY2FzdC1hbGlnbiIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAg
ICAgICBJR05PUkVfV0FSTklOR19FTkQ7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0
aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0Vu
dHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggYmEzNTViZDc0M2EzZTg3NjQ4MDlhOGYyN2QzOWVl
YTRiNjllNmEzZi4uYmMzY2Y0NGM2ZWEzYzhhZWI5NGQ5N2Y0MjFmNDRmOWJlZWVhYWMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTMxMiw3ICsx
MzEyLDEzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsCiAKIGlubGluZSBKU0JpZ0ludDo6RGln
aXQqIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgpCiB7CisvLyBvZmZzZXRPZkRhdGEoKSBtYWtlcyBz
dXJlIHRoYXQgaXRzIHJldHVybiB2YWx1ZSBpcyBhbGlnbmVkIHRvIHRoZSBzaXplIG9mCisvLyBE
aWdpdCwgc28gZXZlbiB0aG91Z2ggd2UgY2FzdCB0byBjaGFyKiBmb3IgcG9pbnRlciBhcml0aG1l
dGljcywgdGhlIGNhc3QgdG8KKy8vIERpZ2l0KiBpcyBwcm9wZXJseSBhbGlnbmVkLCB0aG91Z2gg
dGhlIGNvbXBpbGVyIGRvZXNuJ3Qga25vdyBhYm91dCBpdCwKKy8vIHRoZXJlZm9yZSB3ZSBkaXNh
YmxlIHRoaXMgd2FybmluZy4KKyAgICBJR05PUkVfV0FSTklORygiLVdjYXN0LWFsaWduIik7CiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJldF9jYXN0PGNoYXIq
Pih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICBJR05PUkVfV0FSTklOR19FTkQ7CiB9CiAK
IGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggZGRlMzEwOTExYzBk
YzQzYzFiNjdjMzUyOTJkMTA4Njc3ZmJkMjI5NS4uOTFiMDA4YWJhYjMxNzQ1Y2E4NDI0YWQ1YTI5
YzJmNDVlYjc0NDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcApAQCAtMTM4Miw4ICsxMzgyLDE2IEBAIHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zy
b21BcmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9j
ayA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FuZGlkYXRl
Q29kZUJsb2NrID0gZnVuYy0+anNFeGVjdXRhYmxlKCktPmVpdGhlckNvZGVCbG9jaygpOwotICAg
ICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhlcmUgaXQncyBP
SyB0byBpZ25vcmUgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgc2luY2UKKyAgICAgICAgICAg
IC8vIGNhbmRpZGF0ZUNvZGVCbG9jayB3aWxsIG9ubHkgYmUgYWNjZXNzZWQgaWYKKyAgICAgICAg
ICAgIC8vIFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKCkgcmV0dXJucyB0cnVlLCB3aGlj
aCBvbmx5IGhhcHBlbnMKKyAgICAgICAgICAgIC8vIGlmIHRoZSBhZGRyZXNzIGlzIHRoYXQgb2Yg
YSBrbm93biBleGlzdGluZywgcHJvcGVybHkgYWxpZ25lZAorICAgICAgICAgICAgLy8gY29kZUJs
b2NrLgorICAgICAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1XY2FzdC1hbGlnbiIpOwogICAgICAg
ICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnByZXRfY2FzdDxDb2RlQmxvY2sqPih2
YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBJR05PUkVfV0FSTklOR19FTkQ7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjpp
c1ZhbGlkQ29kZUJsb2NrKGV4ZWMsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRl
eCA3OThjMzA5MGM5YjFjMTg1ODBhM2E2YmU2ZmFiNjViZGFjZTZmZmFhLi5iYTIzMDg0YzM2MGFi
YWQzZWNhMTZkZjE0OTY2ZTdmYjZiNTA3M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4NSw0ICszODUs
MjMgQEAKICNkZWZpbmUgX19oYXNfaW5jbHVkZShwYXRoKSAwCiAjZW5kaWYKIAorLyogSUdOT1JF
X1dBUk5JTkcgKi8KKworI2lmICFkZWZpbmVkKElHTk9SRV9XQVJOSU5HKSAmJiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCisjZGVmaW5lIF9XRUJLSVRfSUdOT1JFX1dBUk5JTkdfU1RSSU5HSUZZKGEp
ICNhCisjZGVmaW5lIElHTk9SRV9XQVJOSU5HKHdhcm5pbmcpIGRvIHtcCisgICAgX1ByYWdtYSgi
R0NDIGRpYWdub3N0aWMgcHVzaCIpIFwKKyAgICBfUHJhZ21hKF9XRUJLSVRfSUdOT1JFX1dBUk5J
TkdfU1RSSU5HSUZZKEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgd2FybmluZykpIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBJR05PUkVfV0FSTklOR19FTkQgZG8ge1wKKyAgICBfUHJh
Z21hKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKSBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYK
KworI2lmICFkZWZpbmVkKElHTk9SRV9XQVJOSU5HKQorI2RlZmluZSBJR05PUkVfV0FSTklORyBk
byB7IH0gd2hpbGUgKGZhbHNlKQorI2RlZmluZSBJR05PUkVfV0FSTklOR19FTkQgZG8geyB9IHdo
aWxlIChmYWxzZSkKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX0NvbXBpbGVyX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaAppbmRleCBh
MTQ5ZTEwOGQxMzdjOTQxZTkwMGI1NzNlOThmZDM1ZTFiMDE0Yjk4Li4xMDU2ODliZTBhZmI4NjAw
NDcwOGI1N2UzODcxMDM3NDMzZDdhN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCkBAIC0zOSw4ICszOSwxMyBAQCBJc29EaXJlY3Rv
cnlQYWdlPENvbmZpZz46Oklzb0RpcmVjdG9yeVBhZ2UoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVh
cCwgdW5zaWduZWQgaQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNvRGlyZWN0b3J5UGFn
ZTxDb25maWc+KiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoSXNvRGlyZWN0b3J5
PENvbmZpZywgbnVtUGFnZXM+KiBwYXlsb2FkKQogeworICAgIC8vIHRoZSBjaGFyICogY2FzdCBp
cyBvbmx5IHVzZWQgdG8gZG8gYSBwb2ludGVyIGNhbGN1bGF0aW9uLCBhbmQgc2FpZAorICAgIC8v
IGNhbGN1bGF0aW9uIHJlc3VsdHMgaW4gYSBwb2ludGVyIHRvIGFuIGV4aXN0aW5nLCBjb3JyZWN0
bHkgYWxpZ25lZAorICAgIC8vIElzb0RpcmVjdG9yeVBhZ2UuCisgICAgSUdOT1JFX1dBUk5JTkco
Ii1XY2FzdC1hbGlnbiIpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElzb0RpcmVjdG9y
eVBhZ2U8Q29uZmlnPio+KAogICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihwYXlsb2Fk
KSAtIEJPRkZTRVRPRihJc29EaXJlY3RvcnlQYWdlLCBwYXlsb2FkKSk7CisgICAgSUdOT1JFX1dB
Uk5JTkdfRU5EOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggMGM0Nzg2NGM3YjQ5YTBlZWM4YTI2MTBjZWY2N2Zh
MzI4YTRlZjRjNC4uYzNlMWVkY2U1ZGRhYjlhZTM2YTZjNGY4NDdkMGQwM2EwMTgyOTIwNSAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaApAQCAtMTg4LDcgKzE4OCwyMCBA
QCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZygpCiAgICAgICAgIGNo
YXIqIGNlbGxCeXRlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBpbmRleCAqIENv
bmZpZzo6b2JqZWN0U2l6ZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiVwOiBwdXR0aW5nICVwIG9uIGZyZWUgbGlzdC5cbiIsIHRoaXMsIGNlbGxC
eXRlKTsKKworI2lmIENQVShBUk0pIHx8IENQVShNSVBTKQorICAgICAgICAvLyB0aGUgY2FzdCBi
ZWxvdyBpcyBzYWZlIG9uIHRoZXNlIHBsYXRmb3JtcyBhcyBsb25nIGFzCisgICAgICAgIC8vIGJv
dGggQ29uZmlnOjpvYmplY3RTaXplIGFuZCB0aGUgYWxpZ25tZW50IG9mIHRoaXMgYXJlIG11bHRp
cGxlcyBvZgorICAgICAgICAvLyB0aGUgcmVxdWlyZWQgYWxpZ25tZW50IG9mIEZyZWVDZWxsCisg
ICAgICAgIHN0YXRpY19hc3NlcnQoIShDb25maWc6Om9iamVjdFNpemUgJSBhbGlnbm9mKEZyZWVD
ZWxsKSksICJDb25maWc6Om9iamVjdFNpemUgc2hvdWxkIHJlc3BlY3QgYWxpZ25tZW50IG9mIEZy
ZWVDZWxsIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShhbGlnbm9mKElzb1BhZ2U8Q29uZmln
PikgJSBhbGlnbm9mKEZyZWVDZWxsKSksICJBbGlnbm1lbnQgb2YgSXNvUGFnZTxDb25maWc+IHNo
b3VsZCBtYXRjaCB0aGF0IG9mIEZyZWVDZWxsIik7CisKKyAgICAgICAgSUdOT1JFX1dBUk5JTkco
Ii1XY2FzdC1hbGlnbiIpOworI2VuZGlmCiAgICAgICAgIEZyZWVDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdDxGcmVlQ2VsbCo+KGNlbGxCeXRlKTsKKyNpZiBDUFUoQVJNKSB8fCBDUFUoTUlQ
UykKKyAgICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOworI2VuZGlmCiAgICAgICAgIGNlbGwtPnNl
dE5leHQoaGVhZCwgc2VjcmV0KTsKICAgICAgICAgaGVhZCA9IGNlbGw7CiAgICAgICAgIGJ5dGVz
ICs9IENvbmZpZzo6b2JqZWN0U2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347180</attachid>
            <date>2018-08-15 11:24:55 -0700</date>
            <delta_ts>2018-09-05 08:54:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20180815202454.patch</filename>
            <type>text/plain</type>
            <size>17070</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmVhMjg1N2Q2YzMzMGIyMzJiZDVkNmNlZDk4MWUzNGU5NGQ2MzIyLi4xZWE5YjFlOTYxZDliYWVi
ZmFkODYwYmI2ZmEzNmYxODNjZDU2OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wOC0xNSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOiBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZQorICAgICAgICBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YgdGhlIHNhbWUgc2l6ZSBhbmQgY2FuIGlnbm9yZSB0
aGUKKyAgICAgICAgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6IG1hcmtlZCBhcyBwb3Rl
bnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQKKyAgICAgICAgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6IG1vZGlmaWVk
RmxhZ3MgaXMgbm90IHVzZWQgb24KKyAgICAgICAgbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICBUaGUgcHJlcGFyZUZvckV4ZWN1
dGlvbigpIG1ldGhvZCBlaXRoZXIgcmV0dXJucyBudWxscHRyIG9yIGFuCisgICAgICAgIEV4Y2Vw
dGlvbiAqIGNhc3QgdG8gYSBKU09iamVjdCAqLiBJdCBpcyB0aGVyZWZvcmUgc2FmZSB0byBjYXN0
IGl0IGJhY2sKKyAgICAgICAgdG8gRXhjZXB0aW9uICogZXZlbiB0aG91Z2ggaXQgaGFzIHN0cmlj
dGVyIGFsaWdubWVudCByZXF1aXJlbWVudHMuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICBTYW1lIGFzIGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVu
dGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6
CisgICAgICAgIFBvaW50ZXIgYXJpdGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9l
c24ndCB1bmRlcnN0YW5kIHRoaXMsCisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24K
KyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6Y29kZUJsb2Nr
RnJvbUFyZyk6CisgICAgICAgIEFmdGVyIHRoZSBjYXN0LCBhIGNoZWNrIGlzIGRvbmUgdG8gbWFr
ZSBzdXJlIHRoYXQgdGhlIHBvaW50ZXIgaXMgdG8gYQorICAgICAgICBrbm93biBDb2RlQmxvY2sg
YmVmb3JlIHVzaW5nIGl0LCBzbyBpZiB0aGUgcmVzdWx0IGlzIGJhZGx5IGFsaWduZWQgaXQKKyAg
ICAgICAgd29uJ3QgYmUgdXNlZCBhbnl3YXlzLgorCiAyMDE4LTA4LTEyICBLYXJvIEd5b2tlciAg
PGthcm9neW9rZXIyK3dlYmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgRGlzYWJsZSBKSVQgb24g
SUEtMzIgd2l0aG91dCBTU0UyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwOGQ4MDRkYTk1YmUzZmYxODViOWJkMTJhZTkxN2U3
MTQ2OWY1ODAuLmEyNTg0MGYyMzVlNjczMmQxMWYwMmVmMjFlNWFlZjM2YmRiZmJjZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTgtMDgtMTUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBh
bmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIElHTk9SRV9XQVJOSU5HKCkgYW5kIElHTk9SRV9XQVJOSU5HX0VORCgpIG1hY3JvcyB0
byBiZSBhYmxlIHRvCisgICAgICAgIHNpbXBseSBpZ25vcmUgYSBjZXJ0YWluIGdjYy9jbGFuZyB3
YXJuaW5nIGZvciBhIHdlbGwgZGVmaW5lZCBjb2RlCisgICAgICAgIHN1YnNldC4KKworICAgICAg
ICAqIHd0Zi9Db21waWxlci5oOgorCiAyMDE4LTA4LTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFttYWNPU10gTXVsdGlwbGUgdGhpcmQgcGFydHkgYXBwcyBj
cmFzaCBkdWUgdG8gdGhlIHRocmVhZCBzYWZldHkgY2hlY2sgaW4gVGltZXJCYXNlOjpzZXROZXh0
RmlyZVRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwppbmRleCA4MWNjYmVlNzdkZjUyMjlhMGJmM2Y0Mzc0YjRhMmFmYTdh
MWMzZDNjLi4xZmUxMmM4NTUxZDBkMDkwYWRhMGU0OWRhNGNhMDA1MWU1ODkyMzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDgtMTUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWpl
bW9udEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24g
bWlwcyBhbmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBJR05PUkVfV0FSTklORy9JR05PUkVfV0FSTklOR19FTkQgdG8gYWxsb3cgc29t
ZSBjYXN0cyBhZnRlcgorICAgICAgICBwb2ludGVyIGNhbGN1bGF0aW9ucyB3aXRob3V0IHRyaWdn
ZXJpbmcgYWxpZ25tZW50IHdhcm5pbmdzIG9uIG1pcHMgYW5kCisgICAgICAgIGFybXY3LgorCisg
ICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oOgorICAgICAgICAoYm1h
bGxvYzo6SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKToKKyAgICAgICAgKiBibWFs
bG9jL0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46
OnN0YXJ0QWxsb2NhdGluZyk6CisKIDIwMTgtMDctMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEluaXRpYWxpemUgYm1hbGxvYzo6RGVidWdIZWFwOjptX3BhZ2VT
aXplIGZvciBub24tRGFyd2luIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAppbmRleCAzZWQ2NGI5
MGJhNWZiYzkzYjJjOTkyYjQwZWMyMWYwNzEwZDE1ZGQ3Li40ZjQ0NjIzOTI5MjAzM2ViYjkzOGE4
ZGU1ZTdlOWMyNmNhZDQxMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCkBAIC0xMzcsNiArMTM3LDEw
IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwMnggJWQ+IiwgcCwgKnAsICpwKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAvLyBhc3N1bWluZyBtZW1vcnkg
aXMgbm90IG1hbGZvcm1lZCwgaXQgb3JpZ2luYXRlbHkgcG9pbnRlZCB0byBhIHZhbHVlCisgICAg
ICAgIC8vIG9mIHRoZSByZXF1aXJlZCBzaXplLCB3aGljaCBzaG91bGQgYmUgcHJvcGVybHkgYWxp
Z25lZCBvbiBwbGF0Zm9ybXMKKyAgICAgICAgLy8gdGhhdCByZXF1aXJlIGl0LgorICAgICAgICBJ
R05PUkVfV0FSTklORygiLVdjYXN0LWFsaWduIik7CiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0
ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7CiAgICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJl
dF9jYXN0PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0
eCAlZD4iLCBwLCAqcCwgKnApOwpAQCAtMTUyLDYgKzE1Niw3IEBAIHZvaWQgcHJpbnRNZW1vcnko
UHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVwOjwweCUwMTYiIFBSSXg2NCAiICUiIFBSSWQ2NCAiPiIsIHAsICpwLCAqcCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOwog
ICAgICAgICAvLyBFbHNlLCB1bmtub3duIHdvcmQgc2l6ZS4gRmFsbCB0aHJ1IGFuZCBkdW1wIGlu
IHRoZSBnZW5lcmljIHdheS4KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci90ZXN0bWFzbS5jcHAKaW5kZXggN2ZlZjJkYmUwZTJiMGM5YmE1Y2NiODAxNzE5YWE4YjQ4
YjZmOWZmMS4uNTI0YTE5YTY0MWNkNTJhYThiZjY4NTMyOTllZGVmYmUzZWI2OWYyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTI0Niw3ICsy
NDYsNyBAQCBzdGF0aWMgVmVjdG9yPGRvdWJsZT4gZG91YmxlT3BlcmFuZHMoKQogfQogCiAKLXN0
YXRpYyBWZWN0b3I8ZmxvYXQ+IGZsb2F0T3BlcmFuZHMoKQorc3RhdGljIFZlY3RvcjxmbG9hdD4g
VU5VU0VEX0ZVTkNUSU9OIGZsb2F0T3BlcmFuZHMoKQogewogICAgIHJldHVybiBWZWN0b3I8Zmxv
YXQ+IHsKICAgICAgICAgMCwKQEAgLTc0Nyw3ICs3NDcsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tWYWx1ZXMoKQogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CiAgICAgdm9pZCog
b3JpZ2luYWxTUCB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBuZXdTUCB7IG51bGxwdHIgfTsKKyNp
ZiAhKENQVShNSVBTKSkKICAgICB1aW50cHRyX3QgbW9kaWZpZWRGbGFncyB7IDAgfTsKKyNlbmRp
ZgogICAgIHNpemVfdCBudW1iZXJPZkV4dHJhRW50cmllc1RvV3JpdGUgeyAxMCB9OyAvLyBBUk02
NCByZXF1aXJlcyB0aGF0IHRoaXMgYmUgMiB3b3JkIGFsaWduZWQuCiAKICNpZiBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggZThlMGI1MGEzOTE2NzRhNjFlNjBhYThlMzFkNGYzOWI0OTEz
NWYxMS4uNjBlOTk3ZDU3Yzk1OWJjYTJlOTc2YzJlZTVlOWNkMDMyY2E4ZTBmYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC05
MzksNyArOTM5LDkgQEAgZmFpbGVkSlNPTlA6CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRl
bXBDb2RlQmxvY2s7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVG
b3JFeGVjdXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZv
ckNhbGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBJR05PUkVfV0FSTklORygiLVdjYXN0LWFs
aWduIik7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9
PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9X
QVJOSU5HX0VORDsKICAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKGVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PFBy
b2dyYW1Db2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKQEAgLTk5Nyw3ICs5OTksOSBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBDYWxsVAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21w
aWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9y
Q2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1XY2FzdC1hbGln
biIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0g
cmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgSUdO
T1JFX1dBUk5JTkdfRU5EOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQog
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKIApAQCAtMTA2
NCw3ICsxMDY4LDkgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogY29uc3RydWMKICAgICBpZiAoaXNKU0NvbnN0
cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0
KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7
CisgICAgICAgIElHTk9SRV9XQVJOSU5HKCItV2Nhc3QtYWxpZ24iKTsKICAgICAgICAgRVhDRVBU
SU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhj
ZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAgIElHTk9SRV9XQVJOSU5HX0VORDsKICAg
ICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAKQEAgLTExMTIsNyArMTExOCw5IEBAIENhbGxG
cmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgIENvZGVC
bG9jayogbmV3Q29kZUJsb2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlv
biwgc2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgIElHTk9SRV9XQVJOSU5H
KCItV2Nhc3QtYWxpZ24iKTsKICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgIElHTk9S
RV9XQVJOSU5HX0VORDsKICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lQ2xvc3VyZSgpOwogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQgPSBmYWxzZTsKQEAgLTExNzAsNyArMTE3OCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Zh
bHVlCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7CiAgICAgICAgIEpT
T2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2YWxFeGVj
dXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsK
KyAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1XY2FzdC1hbGlnbiIpOwogICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2
YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKQEAgLTEyOTMsNyArMTMwMyw5IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBDCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxv
Y2s7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJl
Rm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUs
IENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1X
Y2FzdC1hbGlnbiIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAg
ICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxl
RXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsK
ICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1w
Q29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDIyNmMyMGUyZTRlY2ZmNWJiYTgxMDYyMDY4NGIwMTE1NjQ3MTM1NTIuLmJjMmFkOGI2
NjY0MTVkNGJhZGUyY2UxZDkyODY5MTY2NDBkZjhkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTA4Miw3ICsxMDgyLDkgQEAgU2xvd1BhdGhS
ZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBleGVj
Q2FsbGVlLCBDYWxsTGkKIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhl
Y0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFi
bGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBJ
R05PUkVfV0FSTklORygiLVdjYXN0LWFsaWduIik7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
dGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVy
cm9yKSk7CisgICAgICAgIElHTk9SRV9XQVJOSU5HX0VORDsKICAgICAgICAgaWYgKGVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVRocm93RXhjZXB0aW9uKCk7CiAgICAgICAgIGNvZGVC
bG9jayA9ICpjb2RlQmxvY2tTbG90OwpAQCAtMTEzOCw3ICsxMTQwLDkgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJ
bmZvKiBjYWxsTGkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdCk7CiAgICAgICAgIAogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigq
dm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9XQVJO
SU5HKCItV2Nhc3QtYWxpZ24iKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQodGhy
b3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2Vw
dGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9XQVJOSU5HX0VORDsKICAgICAgICAgaWYg
KGVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0
YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwpAQCAtMTE4OCw3ICsx
MTkyLDkgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KAogCiAgICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRy
ZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5j
dGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgSUdOT1JFX1dBUk5J
TkcoIi1XY2FzdC1hbGlnbiIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAg
ICAgICBJR05PUkVfV0FSTklOR19FTkQ7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0
aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0Vu
dHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggYmEzNTViZDc0M2EzZTg3NjQ4MDlhOGYyN2QzOWVl
YTRiNjllNmEzZi4uYmMzY2Y0NGM2ZWEzYzhhZWI5NGQ5N2Y0MjFmNDRmOWJlZWVhYWMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTMxMiw3ICsx
MzEyLDEzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsCiAKIGlubGluZSBKU0JpZ0ludDo6RGln
aXQqIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgpCiB7CisvLyBvZmZzZXRPZkRhdGEoKSBtYWtlcyBz
dXJlIHRoYXQgaXRzIHJldHVybiB2YWx1ZSBpcyBhbGlnbmVkIHRvIHRoZSBzaXplIG9mCisvLyBE
aWdpdCwgc28gZXZlbiB0aG91Z2ggd2UgY2FzdCB0byBjaGFyKiBmb3IgcG9pbnRlciBhcml0aG1l
dGljcywgdGhlIGNhc3QgdG8KKy8vIERpZ2l0KiBpcyBwcm9wZXJseSBhbGlnbmVkLCB0aG91Z2gg
dGhlIGNvbXBpbGVyIGRvZXNuJ3Qga25vdyBhYm91dCBpdCwKKy8vIHRoZXJlZm9yZSB3ZSBkaXNh
YmxlIHRoaXMgd2FybmluZy4KKyAgICBJR05PUkVfV0FSTklORygiLVdjYXN0LWFsaWduIik7CiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJldF9jYXN0PGNoYXIq
Pih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICBJR05PUkVfV0FSTklOR19FTkQ7CiB9CiAK
IGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggZGRlMzEwOTExYzBk
YzQzYzFiNjdjMzUyOTJkMTA4Njc3ZmJkMjI5NS4uOTFiMDA4YWJhYjMxNzQ1Y2E4NDI0YWQ1YTI5
YzJmNDVlYjc0NDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcApAQCAtMTM4Miw4ICsxMzgyLDE2IEBAIHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zy
b21BcmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9j
ayA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FuZGlkYXRl
Q29kZUJsb2NrID0gZnVuYy0+anNFeGVjdXRhYmxlKCktPmVpdGhlckNvZGVCbG9jaygpOwotICAg
ICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhlcmUgaXQncyBP
SyB0byBpZ25vcmUgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgc2luY2UKKyAgICAgICAgICAg
IC8vIGNhbmRpZGF0ZUNvZGVCbG9jayB3aWxsIG9ubHkgYmUgYWNjZXNzZWQgaWYKKyAgICAgICAg
ICAgIC8vIFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKCkgcmV0dXJucyB0cnVlLCB3aGlj
aCBvbmx5IGhhcHBlbnMKKyAgICAgICAgICAgIC8vIGlmIHRoZSBhZGRyZXNzIGlzIHRoYXQgb2Yg
YSBrbm93biBleGlzdGluZywgcHJvcGVybHkgYWxpZ25lZAorICAgICAgICAgICAgLy8gY29kZUJs
b2NrLgorICAgICAgICAgICAgSUdOT1JFX1dBUk5JTkcoIi1XY2FzdC1hbGlnbiIpOwogICAgICAg
ICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnByZXRfY2FzdDxDb2RlQmxvY2sqPih2
YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBJR05PUkVfV0FSTklOR19FTkQ7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjpp
c1ZhbGlkQ29kZUJsb2NrKGV4ZWMsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRl
eCA3OThjMzA5MGM5YjFjMTg1ODBhM2E2YmU2ZmFiNjViZGFjZTZmZmFhLi42NzlhNmZjNDhlMjdj
Yzc5YmFiNTg1OTQyODIyNGY2MTMxMmJmMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4NSw0ICszODUs
MjMgQEAKICNkZWZpbmUgX19oYXNfaW5jbHVkZShwYXRoKSAwCiAjZW5kaWYKIAorLyogSUdOT1JF
X1dBUk5JTkcgKi8KKworI2lmICFkZWZpbmVkKElHTk9SRV9XQVJOSU5HKSAmJiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCisjZGVmaW5lIF9XRUJLSVRfSUdOT1JFX1dBUk5JTkdfU1RSSU5HSUZZKGEp
ICNhCisjZGVmaW5lIElHTk9SRV9XQVJOSU5HKHdhcm5pbmcpIGRvIHtcCisgICAgX1ByYWdtYSgi
R0NDIGRpYWdub3N0aWMgcHVzaCIpIFwKKyAgICBfUHJhZ21hKF9XRUJLSVRfSUdOT1JFX1dBUk5J
TkdfU1RSSU5HSUZZKEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgd2FybmluZykpIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBJR05PUkVfV0FSTklOR19FTkQgZG8ge1wKKyAgICBfUHJh
Z21hKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKSBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYK
KworI2lmICFkZWZpbmVkKElHTk9SRV9XQVJOSU5HKQorI2RlZmluZSBJR05PUkVfV0FSTklORyh4
KSBkbyB7IH0gd2hpbGUgKGZhbHNlKQorI2RlZmluZSBJR05PUkVfV0FSTklOR19FTkQgZG8geyB9
IHdoaWxlIChmYWxzZSkKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX0NvbXBpbGVyX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMu
aCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaAppbmRl
eCBhMTQ5ZTEwOGQxMzdjOTQxZTkwMGI1NzNlOThmZDM1ZTFiMDE0Yjk4Li4xMDU2ODliZTBhZmI4
NjAwNDcwOGI1N2UzODcxMDM3NDMzZDdhN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCkBAIC0zOSw4ICszOSwxMyBAQCBJc29EaXJl
Y3RvcnlQYWdlPENvbmZpZz46Oklzb0RpcmVjdG9yeVBhZ2UoSXNvSGVhcEltcGw8Q29uZmlnPiYg
aGVhcCwgdW5zaWduZWQgaQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNvRGlyZWN0b3J5
UGFnZTxDb25maWc+KiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoSXNvRGlyZWN0
b3J5PENvbmZpZywgbnVtUGFnZXM+KiBwYXlsb2FkKQogeworICAgIC8vIHRoZSBjaGFyICogY2Fz
dCBpcyBvbmx5IHVzZWQgdG8gZG8gYSBwb2ludGVyIGNhbGN1bGF0aW9uLCBhbmQgc2FpZAorICAg
IC8vIGNhbGN1bGF0aW9uIHJlc3VsdHMgaW4gYSBwb2ludGVyIHRvIGFuIGV4aXN0aW5nLCBjb3Jy
ZWN0bHkgYWxpZ25lZAorICAgIC8vIElzb0RpcmVjdG9yeVBhZ2UuCisgICAgSUdOT1JFX1dBUk5J
TkcoIi1XY2FzdC1hbGlnbiIpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElzb0RpcmVj
dG9yeVBhZ2U8Q29uZmlnPio+KAogICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihwYXls
b2FkKSAtIEJPRkZTRVRPRihJc29EaXJlY3RvcnlQYWdlLCBwYXlsb2FkKSk7CisgICAgSUdOT1JF
X1dBUk5JTkdfRU5EOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggMGM0Nzg2NGM3YjQ5YTBlZWM4YTI2MTBjZWY2
N2ZhMzI4YTRlZjRjNC4uYzNlMWVkY2U1ZGRhYjlhZTM2YTZjNGY4NDdkMGQwM2EwMTgyOTIwNSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaApAQCAtMTg4LDcgKzE4OCwy
MCBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZygpCiAgICAgICAg
IGNoYXIqIGNlbGxCeXRlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBpbmRleCAq
IENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBwdXR0aW5nICVwIG9uIGZyZWUgbGlzdC5cbiIsIHRoaXMsIGNl
bGxCeXRlKTsKKworI2lmIENQVShBUk0pIHx8IENQVShNSVBTKQorICAgICAgICAvLyB0aGUgY2Fz
dCBiZWxvdyBpcyBzYWZlIG9uIHRoZXNlIHBsYXRmb3JtcyBhcyBsb25nIGFzCisgICAgICAgIC8v
IGJvdGggQ29uZmlnOjpvYmplY3RTaXplIGFuZCB0aGUgYWxpZ25tZW50IG9mIHRoaXMgYXJlIG11
bHRpcGxlcyBvZgorICAgICAgICAvLyB0aGUgcmVxdWlyZWQgYWxpZ25tZW50IG9mIEZyZWVDZWxs
CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShDb25maWc6Om9iamVjdFNpemUgJSBhbGlnbm9mKEZy
ZWVDZWxsKSksICJDb25maWc6Om9iamVjdFNpemUgc2hvdWxkIHJlc3BlY3QgYWxpZ25tZW50IG9m
IEZyZWVDZWxsIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShhbGlnbm9mKElzb1BhZ2U8Q29u
ZmlnPikgJSBhbGlnbm9mKEZyZWVDZWxsKSksICJBbGlnbm1lbnQgb2YgSXNvUGFnZTxDb25maWc+
IHNob3VsZCBtYXRjaCB0aGF0IG9mIEZyZWVDZWxsIik7CisKKyAgICAgICAgSUdOT1JFX1dBUk5J
TkcoIi1XY2FzdC1hbGlnbiIpOworI2VuZGlmCiAgICAgICAgIEZyZWVDZWxsKiBjZWxsID0gcmVp
bnRlcnByZXRfY2FzdDxGcmVlQ2VsbCo+KGNlbGxCeXRlKTsKKyNpZiBDUFUoQVJNKSB8fCBDUFUo
TUlQUykKKyAgICAgICAgSUdOT1JFX1dBUk5JTkdfRU5EOworI2VuZGlmCiAgICAgICAgIGNlbGwt
PnNldE5leHQoaGVhZCwgc2VjcmV0KTsKICAgICAgICAgaGVhZCA9IGNlbGw7CiAgICAgICAgIGJ5
dGVzICs9IENvbmZpZzo6b2JqZWN0U2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348927</attachid>
            <date>2018-09-05 08:54:55 -0700</date>
            <delta_ts>2018-09-12 11:13:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20180905175453.patch</filename>
            <type>text/plain</type>
            <size>16551</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Mjc0NzU2ZTc2ODI1NmUyYTA1NGM1MTMyM2NhODNkMTE4YTA1ODIxLi42NDczN2NkOWRlMzhlZmQ1
MmU0YjZkMWIxZTFkNWNkYTFiN2YzYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wOS0wNSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOiBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZQorICAgICAgICBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YgdGhlIHNhbWUgc2l6ZSBhbmQgY2FuIGlnbm9yZSB0
aGUKKyAgICAgICAgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6IG1hcmtlZCBhcyBwb3Rl
bnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQKKyAgICAgICAgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6IG1vZGlmaWVk
RmxhZ3MgaXMgbm90IHVzZWQgb24KKyAgICAgICAgbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICBUaGUgcHJlcGFyZUZvckV4ZWN1
dGlvbigpIG1ldGhvZCBlaXRoZXIgcmV0dXJucyBudWxscHRyIG9yIGFuCisgICAgICAgIEV4Y2Vw
dGlvbiogY2FzdCB0byBhIEpTT2JqZWN0Ki4gSXQgaXMgdGhlcmVmb3JlIHNhZmUgdG8gY2FzdCBp
dCBiYWNrCisgICAgICAgIHRvIEV4Y2VwdGlvbiogZXZlbiB0aG91Z2ggaXQgaGFzIHN0cmljdGVy
IGFsaWdubWVudCByZXF1aXJlbWVudHMuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICBTYW1lIGFzIGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6Cisg
ICAgICAgIFBvaW50ZXIgYXJpdGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9lc24n
dCB1bmRlcnN0YW5kIHRoaXMsCisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24KKyAg
ICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6Y29kZUJsb2NrRnJv
bUFyZyk6CisgICAgICAgIEFmdGVyIHRoZSBjYXN0LCBhIGNoZWNrIGlzIGRvbmUgdG8gbWFrZSBz
dXJlIHRoYXQgdGhlIHBvaW50ZXIgaXMgdG8gYQorICAgICAgICBrbm93biBDb2RlQmxvY2sgYmVm
b3JlIHVzaW5nIGl0LCBzbyBpZiB0aGUgcmVzdWx0IGlzIGJhZGx5IGFsaWduZWQgaXQKKyAgICAg
ICAgd29uJ3QgYmUgdXNlZCBhbnl3YXlzLgorCiAyMDE4LTA4LTI3ICBHdWlsbGF1bWUgRW1vbnQg
IDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgSUdOT1JFX1dBUk5JTkdfLiog
bWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGU2ZDJkZGJkMDkzY2FiZGM0MTAyNjU5ZTRmYzk1OTM2ZDg4NWM0M2EuLjg5
MmVlOTY5MDg3Mzg3OWU3NGYzZjIyN2Y4Yjk2NjRiNmE1ZmZiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTgtMDktMDUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIElHTk9S
RV9DQVNUX0FMSUdOX0JFR0lOL19FTkQgbWFjcm9zIHRvIGJlIGFibGUgdG8KKyAgICAgICAgc2lt
cGx5IGlnbm9yZSB3YXJuaW5ncyBvbiBub24tcmVzcGVjdCBvZiBhbGlnbm1lbnQgaW4gY2FzdHMg
Zm9yIGEgd2VsbAorICAgICAgICBkZWZpbmVkIGNvZGUgc3Vic2V0LgorCisgICAgICAgICogd3Rm
L0NvbXBpbGVyLmg6CisKIDIwMTgtMDgtMjcgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBJR05PUkVfV0FSTklOR18uKiBtYWNyb3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZwppbmRleCBkNDY5MDQwZGRlM2Y5ODllZjQ1MzEyM2Y5MzRkMzI5YzZjODNjNTljLi43MzJhMTM0
NGRmMjJiYjJmNGFiYmY1ZmE3NzYyM2Q4ZmRjMWQ5YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTgtMDktMDUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBJR05P
UkVfQ0FTVF9BTElHTl9CRUdJTi9FTkQgdG8gYWxsb3cgc29tZSBjYXN0cyBhZnRlciBwb2ludGVy
CisgICAgICAgIGNhbGN1bGF0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYWxpZ25tZW50IHdhcm5p
bmdzIG9uIG1pcHMgYW5kIGFybXY3LgorCisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnlQ
YWdlSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
OjpwYWdlRm9yKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAg
IChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZyk6CisKIDIwMTgtMDgt
MjcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgYnVpbGQgZml4IC0tIGRpc2FibGUgTFRPIGZvciBwcm9kdWN0aW9uIGJ1aWxkcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclBy
aW50ZXIuY3BwCmluZGV4IDNlZDY0YjkwYmE1ZmJjOTNiMmM5OTJiNDBlYzIxZjA3MTBkMTVkZDcu
LmI0YTRiZjlmNjA3MmU4YjdkMzhlMDg4YThhOTU3MjU5ZjA3ZWExMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRl
ci5jcHAKQEAgLTEzNyw2ICsxMzcsMTAgQEAgdm9pZCBwcmludE1lbW9yeShQcmludFN0cmVhbSYg
b3V0LCBDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTAy
eCAlZD4iLCBwLCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgIC8vIGFzc3VtaW5nIG1lbW9yeSBpcyBub3QgbWFsZm9ybWVkLCBpdCBvcmlnaW5hdGVseSBw
b2ludGVkIHRvIGEgdmFsdWUKKyAgICAgICAgLy8gb2YgdGhlIHJlcXVpcmVkIHNpemUsIHdoaWNo
IHNob3VsZCBiZSBwcm9wZXJseSBhbGlnbmVkIG9uIHBsYXRmb3JtcworICAgICAgICAvLyB0aGF0
IHJlcXVpcmUgaXQuCisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX0JFR0lOCiAgICAgICAgIGlm
IChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7CiAgICAgICAgICAgICBhdXRv
IHAgPSByZWludGVycHJldF9jYXN0PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXA6PDB4JTA0eCAlZD4iLCBwLCAqcCwgKnApOwpAQCAtMTUyLDYgKzE1Niw3IEBAIHZv
aWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkKICAgICAg
ICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwMTYiIFBSSXg2NCAiICUiIFBSSWQ2NCAiPiIsIHAs
ICpwLCAqcCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgSUdOT1JF
X0NBU1RfQUxJR05fRU5ECiAgICAgICAgIC8vIEVsc2UsIHVua25vd24gd29yZCBzaXplLiBGYWxs
IHRocnUgYW5kIGR1bXAgaW4gdGhlIGdlbmVyaWMgd2F5LgogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5
YzFiZTEyODAwYzk0MTlhYTcxYTZhZWJkLi40YzU0YzVhMjNkNGJjNWI0NmJlMDQ5ZTRiZTQ3MmYx
ZDJlMzZkYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBWZWN0b3I8ZG91YmxlPiBkb3VibGVPcGVy
YW5kcygpCiB9CiAKIAotc3RhdGljIFZlY3RvcjxmbG9hdD4gZmxvYXRPcGVyYW5kcygpCitzdGF0
aWMgVmVjdG9yPGZsb2F0PiBVTlVTRURfRlVOQ1RJT04gZmxvYXRPcGVyYW5kcygpCiB7CiAgICAg
cmV0dXJuIFZlY3RvcjxmbG9hdD4gewogICAgICAgICAwLApAQCAtNzQ3LDcgKzc0Nyw5IEBAIHZv
aWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxT
dGF0ZTsKICAgICB2b2lkKiBvcmlnaW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQ
IHsgbnVsbHB0ciB9OworI2lmICEoQ1BVKE1JUFMpKQogICAgIHVpbnRwdHJfdCBtb2RpZmllZEZs
YWdzIHsgMCB9OworI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0
ZSB7IDEwIH07IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4K
IAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA3MTI2ZDAyOWY2MjIzYjJlYTIw
MDI2YTkyNjVkZDk1MmViNDA1MjU1Li5jYmU3ZTdhYjQxZGExMDhhNTdjYzRhZDY3NzZiYjYxZThk
OTg2N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTgwOSw3ICs4MDksOSBAQCBmYWlsZWRKU09OUDoKICAgICB7CiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0g
cHJvZ3JhbS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxw
dHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9D
QVNUX0FMSUdOX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNl
cHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAg
IElHTk9SRV9DQVNUX0FMSUdOX0VORAogICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sg
PSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpAQCAtODY3LDcgKzg2
OSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUCiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAg
ICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJv
ciA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxG
dW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwgc2Nv
cGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBJR05PUkVfQ0FTVF9BTElH
Tl9CRUdJTgogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkg
PT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAg
SUdOT1JFX0NBU1RfQUxJR05fRU5ECiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJv
cikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogCkBA
IC05MzQsNyArOTM4LDkgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogY29uc3RydWMKICAgICBpZiAoaXNKU0Nv
bnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2Jq
ZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5j
dGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9j
ayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9B
U1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlv
bio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9FTkQKICAgICAg
ICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAKQEAgLTk4Miw3ICs5ODgsOSBAQCBDYWxsRnJhbWVD
bG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRQogICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICBDb2RlQmxvY2sq
IG5ld0NvZGVCbG9jazsKICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUt
PnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNj
b3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICBJR05PUkVfQ0FTVF9BTElHTl9C
RUdJTgogICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWlu
dGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgSUdOT1JFX0NBU1RfQUxJR05f
RU5ECiAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNs
b3N1cmUoKTsKICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFs
c2U7CkBAIC0xMDQwLDcgKzEwNDgsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHsK
ICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29t
cGlsZUVycm9yID0gZXZhbC0+cHJlcGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4odm0s
IG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIElH
Tk9SRV9DQVNUX0FMSUdOX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29w
ZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJv
cikpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9FTkQKICAgICAgICAgaWYgKFVOTElLRUxZ
KCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBp
bGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxFdmFsQ29kZUJsb2NrKj4odGVt
cENvZGVCbG9jayk7CkBAIC0xMTYzLDcgKzExNzMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
QwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09i
amVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVt
cENvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX0JFR0lOCiAgICAgICAgIEVY
Q0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0
PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9F
TkQKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiMmViNDE4Y2ZmODlkNTIz
MDIyYTYxYWRiMGI4YmU0ZjY4ODAyZTYyLi4yNjBkNzMyOTY5ZGJiZjc0N2NlMzM0YWE5NTZlNDM0
MGQxMDIyMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTEwNDUsNyArMTA0NSw5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAKICAgICAg
ICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVC
bG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUs
IGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fQkVHSU4K
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50
ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJ
R05fRU5ECiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJv
d0V4Y2VwdGlvbigpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKQEAgLTEx
MDEsNyArMTEwMyw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyogY2FsbExpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzQ2FsbChraW5kKSB8fCBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxp
dHkoKSAhPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpOwogICAgICAgICAKICAg
ICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2Rl
QmxvY2spOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9CRUdJTgogICAgICAgICBFWENFUFRJ
T05fQVNTRVJUX1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJl
aW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgSUdOT1JFX0NBU1Rf
QUxJR05fRU5ECiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdW5zaWduZWQgYXJndW1lbnRTdGFja1Nsb3RzID0gY2FsbExpbmtJbmZvLT5tYXhOdW1Bcmd1
bWVudHMoKTsKQEAgLTExNTEsNyArMTE1NSw5IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
dmlydHVhbEZvcldpdGhGdW5jdGlvbigKIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tT
bG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KCp2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7
CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NF
UlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+
KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX0VORAogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAg
dm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IGJhMzU1YmQ3NDNhM2U4
NzY0ODA5YThmMjdkMzllZWE0YjY5ZTZhM2YuLjcwMGJmZDBlOGQ2MzcxMDQ2Mzk3ZmU3OGM2NzI3
NmNmNmExYjkzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAKQEAgLTEzMTIsNyArMTMxMiwxMyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbAogCiBpbmxp
bmUgSlNCaWdJbnQ6OkRpZ2l0KiBKU0JpZ0ludDo6ZGF0YVN0b3JhZ2UoKQogeworICAgIC8vIG9m
ZnNldE9mRGF0YSgpIG1ha2VzIHN1cmUgdGhhdCBpdHMgcmV0dXJuIHZhbHVlIGlzIGFsaWduZWQg
dG8gdGhlIHNpemUgb2YKKyAgICAvLyBEaWdpdCwgc28gZXZlbiB0aG91Z2ggd2UgY2FzdCB0byBj
aGFyKiBmb3IgcG9pbnRlciBhcml0aG1ldGljcywgdGhlIGNhc3QgdG8KKyAgICAvLyBEaWdpdCog
aXMgcHJvcGVybHkgYWxpZ25lZCwgdGhvdWdoIHRoZSBjb21waWxlciBkb2Vzbid0IGtub3cgYWJv
dXQgaXQsCisgICAgLy8gdGhlcmVmb3JlIHdlIGRpc2FibGUgdGhpcyB3YXJuaW5nLgorICAgIElH
Tk9SRV9DQVNUX0FMSUdOX0JFR0lOCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQq
PihyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICBJ
R05PUkVfQ0FTVF9BTElHTl9FTkQKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0lu
dDo6ZGlnaXQodW5zaWduZWQgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcAppbmRleCA4YTQ2MWU3NmVjODAxMWE5YjIzNzhkNmQ0Mjc1ZDMxYWMxMjExMDljLi5k
YjE0ZmEwZTVjN2VkNTNjYjcwMzI1YzkwNDk2ZGNkZjViODJmYWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0xNDYzLDggKzE0NjMsMTYgQEAgc3Rh
dGljIENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjYW5kaWRhdGVDb2RlQmxvY2sgPSBmdW5jLT5qc0V4ZWN1dGFibGUo
KS0+ZWl0aGVyQ29kZUJsb2NrKCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gSGVyZSBpdCdzIE9LIHRvIGlnbm9yZSB0aGUgYWxpZ25tZW50IHJlcXVp
cmVtZW50cyBzaW5jZQorICAgICAgICAgICAgLy8gY2FuZGlkYXRlQ29kZUJsb2NrIHdpbGwgb25s
eSBiZSBhY2Nlc3NlZCBpZgorICAgICAgICAgICAgLy8gVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2Rl
QmxvY2soKSByZXR1cm5zIHRydWUsIHdoaWNoIG9ubHkgaGFwcGVucworICAgICAgICAgICAgLy8g
aWYgdGhlIGFkZHJlc3MgaXMgdGhhdCBvZiBhIGtub3duIGV4aXN0aW5nLCBwcm9wZXJseSBhbGln
bmVkCisgICAgICAgICAgICAvLyBjb2RlQmxvY2suCisgICAgICAgICAgICBJR05PUkVfQ0FTVF9B
TElHTl9CRUdJTgogICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnByZXRf
Y2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBJR05PUkVfQ0FT
VF9BTElHTl9FTkQKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjYW5kaWRhdGVDb2RlQmxv
Y2sgJiYgVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxvY2soZXhlYywgY2FuZGlkYXRlQ29kZUJs
b2NrKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Db21waWxlci5oCmluZGV4IDM3OWUzMmNhZjI3NjU4YjFhYTRkZDVhNGMwOGI5ZjU1ZGM5
MmM0MDguLjQ2NjZlZDBkNWM0NmFkNjE2NDZjZGU1MzIxYmY0YTViODgwN2FlNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGls
ZXIuaApAQCAtNDc2LDQgKzQ3NiwxMCBAQAogI2RlZmluZSBBTExPV19OVUxMX0FSR1VNRU5UX0VO
RCBJR05PUkVfV0FSTklOR19FTkQKICNlbmRpZgogCisjaWYgIWRlZmluZWQoSUdOT1JFX0NBU1Rf
QUxJR05fQkVHSU4pCisjZGVmaW5lIElHTk9SRV9DQVNUX0FMSUdOX0JFR0lOIElHTk9SRV9XQVJO
SU5HX0JFR0lOKCItV2Nhc3QtYWxpZ24iKQorI2RlZmluZSBJR05PUkVfQ0FTVF9BTElHTl9FTkQg
SUdOT1JFX1dBUk5JTkdfRU5ECisjZW5kaWYKKworCiAjZW5kaWYgLyogV1RGX0NvbXBpbGVyX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlu
bGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMu
aAppbmRleCBhMTQ5ZTEwOGQxMzdjOTQxZTkwMGI1NzNlOThmZDM1ZTFiMDE0Yjk4Li43ZjZjYTI0
YTE0MzlkMTg1Yzg3NmFmN2EzMmQ4ZTM4OTE0NmEzOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCkBAIC0zOSw4ICszOSwxMyBAQCBJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz46Oklzb0RpcmVjdG9yeVBhZ2UoSXNvSGVhcEltcGw8Q29u
ZmlnPiYgaGVhcCwgdW5zaWduZWQgaQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNvRGly
ZWN0b3J5UGFnZTxDb25maWc+KiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoSXNv
RGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXM+KiBwYXlsb2FkKQogeworICAgIC8vIHRoZSBjaGFy
ICogY2FzdCBpcyBvbmx5IHVzZWQgdG8gZG8gYSBwb2ludGVyIGNhbGN1bGF0aW9uLCBhbmQgc2Fp
ZAorICAgIC8vIGNhbGN1bGF0aW9uIHJlc3VsdHMgaW4gYSBwb2ludGVyIHRvIGFuIGV4aXN0aW5n
LCBjb3JyZWN0bHkgYWxpZ25lZAorICAgIC8vIElzb0RpcmVjdG9yeVBhZ2UuCisgICAgSUdOT1JF
X0NBU1RfQUxJR05fQkVHSU4KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJc29EaXJlY3Rv
cnlQYWdlPENvbmZpZz4qPigKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGF5bG9h
ZCkgLSBCT0ZGU0VUT0YoSXNvRGlyZWN0b3J5UGFnZSwgcGF5bG9hZCkpOworICAgIElHTk9SRV9D
QVNUX0FMSUdOX0VORAogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggMGM0Nzg2NGM3YjQ5YTBlZWM4YTI2MTBjZWY2
N2ZhMzI4YTRlZjRjNC4uZTdjZTQ1MThiNWI4ZGZkY2RjMmJiMmVlYzk4ZjM3NTk2OTkzMDY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaApAQCAtMTg4LDcgKzE4OCwy
MCBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZygpCiAgICAgICAg
IGNoYXIqIGNlbGxCeXRlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBpbmRleCAq
IENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBwdXR0aW5nICVwIG9uIGZyZWUgbGlzdC5cbiIsIHRoaXMsIGNl
bGxCeXRlKTsKKworI2lmIENQVShBUk0pIHx8IENQVShNSVBTKQorICAgICAgICAvLyB0aGUgY2Fz
dCBiZWxvdyBpcyBzYWZlIG9uIHRoZXNlIHBsYXRmb3JtcyBhcyBsb25nIGFzCisgICAgICAgIC8v
IGJvdGggQ29uZmlnOjpvYmplY3RTaXplIGFuZCB0aGUgYWxpZ25tZW50IG9mIHRoaXMgYXJlIG11
bHRpcGxlcyBvZgorICAgICAgICAvLyB0aGUgcmVxdWlyZWQgYWxpZ25tZW50IG9mIEZyZWVDZWxs
CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShDb25maWc6Om9iamVjdFNpemUgJSBhbGlnbm9mKEZy
ZWVDZWxsKSksICJDb25maWc6Om9iamVjdFNpemUgc2hvdWxkIHJlc3BlY3QgYWxpZ25tZW50IG9m
IEZyZWVDZWxsIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShhbGlnbm9mKElzb1BhZ2U8Q29u
ZmlnPikgJSBhbGlnbm9mKEZyZWVDZWxsKSksICJBbGlnbm1lbnQgb2YgSXNvUGFnZTxDb25maWc+
IHNob3VsZCBtYXRjaCB0aGF0IG9mIEZyZWVDZWxsIik7CisKKyAgICAgICAgSUdOT1JFX0NBU1Rf
QUxJR05fQkVHSU4KKyNlbmRpZgogICAgICAgICBGcmVlQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RnJlZUNlbGwqPihjZWxsQnl0ZSk7CisjaWYgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCisg
ICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX0VORAorI2VuZGlmCiAgICAgICAgIGNlbGwtPnNldE5l
eHQoaGVhZCwgc2VjcmV0KTsKICAgICAgICAgaGVhZCA9IGNlbGw7CiAgICAgICAgIGJ5dGVzICs9
IENvbmZpZzo6b2JqZWN0U2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349562</attachid>
            <date>2018-09-12 11:13:53 -0700</date>
            <delta_ts>2018-09-14 05:02:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20180912201351.patch</filename>
            <type>text/plain</type>
            <size>16857</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGM2ZTY3MDI5ODNiOGMyODFiNzFmYjlkNGFiMmI2YTE0YjIwYWQ1Li5jMzE0NTdhZGRkMjgwZmEw
YWI1MmU2OTA5ZGI0M2VhZDE5NTkwMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wOS0wNSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOiBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZQorICAgICAgICBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YgdGhlIHNhbWUgc2l6ZSBhbmQgY2FuIGlnbm9yZSB0
aGUKKyAgICAgICAgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6IG1hcmtlZCBhcyBwb3Rl
bnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQKKyAgICAgICAgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6IG1vZGlmaWVk
RmxhZ3MgaXMgbm90IHVzZWQgb24KKyAgICAgICAgbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICBUaGUgcHJlcGFyZUZvckV4ZWN1
dGlvbigpIG1ldGhvZCBlaXRoZXIgcmV0dXJucyBudWxscHRyIG9yIGFuCisgICAgICAgIEV4Y2Vw
dGlvbiogY2FzdCB0byBhIEpTT2JqZWN0Ki4gSXQgaXMgdGhlcmVmb3JlIHNhZmUgdG8gY2FzdCBp
dCBiYWNrCisgICAgICAgIHRvIEV4Y2VwdGlvbiogZXZlbiB0aG91Z2ggaXQgaGFzIHN0cmljdGVy
IGFsaWdubWVudCByZXF1aXJlbWVudHMuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICBTYW1lIGFzIGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6Cisg
ICAgICAgIFBvaW50ZXIgYXJpdGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9lc24n
dCB1bmRlcnN0YW5kIHRoaXMsCisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24KKyAg
ICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6Y29kZUJsb2NrRnJv
bUFyZyk6CisgICAgICAgIEFmdGVyIHRoZSBjYXN0LCBhIGNoZWNrIGlzIGRvbmUgdG8gbWFrZSBz
dXJlIHRoYXQgdGhlIHBvaW50ZXIgaXMgdG8gYQorICAgICAgICBrbm93biBDb2RlQmxvY2sgYmVm
b3JlIHVzaW5nIGl0LCBzbyBpZiB0aGUgcmVzdWx0IGlzIGJhZGx5IGFsaWduZWQgaXQKKyAgICAg
ICAgd29uJ3QgYmUgdXNlZCBhbnl3YXlzLgorCiAyMDE4LTA5LTEyICBHdWlsbGF1bWUgRW1vbnQg
IDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgSUdOT1JFX1dBUk5JTkdfLiog
bWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDYwNWFhN2RjZTM1NzczYmFmNTc1YzMxNGY3ZjFkY2NkOTg2YjlkN2IuLmM4
NjA0YmU1YzRiMjBiY2NjOGFlNDZhZTYwMDdjYWQzZDFkM2NmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTgtMDktMDUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIElHTk9S
RV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOL19FTkQgbWFjcm9zIHRvIGJlIGFibGUgdG8KKyAg
ICAgICAgc2ltcGx5IGlnbm9yZSB3YXJuaW5ncyBvbiBub24tcmVzcGVjdCBvZiBhbGlnbm1lbnQg
aW4gY2FzdHMgZm9yIGEgd2VsbAorICAgICAgICBkZWZpbmVkIGNvZGUgc3Vic2V0LgorCisgICAg
ICAgICogd3RmL0NvbXBpbGVyLmg6CisKIDIwMTgtMDktMTIgIEd1aWxsYXVtZSBFbW9udCAgPGd1
aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBJR05PUkVfV0FSTklOR18uKiBtYWNy
b3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9j
L0NoYW5nZUxvZwppbmRleCBkNDY5MDQwZGRlM2Y5ODllZjQ1MzEyM2Y5MzRkMzI5YzZjODNjNTlj
Li43MzJhMTM0NGRmMjJiYjJmNGFiYmY1ZmE3NzYyM2Q4ZmRjMWQ5YmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMDktMDUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBh
bmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBJR05PUkVfQ0FTVF9BTElHTl9CRUdJTi9FTkQgdG8gYWxsb3cgc29tZSBjYXN0cyBhZnRl
ciBwb2ludGVyCisgICAgICAgIGNhbGN1bGF0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYWxpZ25t
ZW50IHdhcm5pbmdzIG9uIG1pcHMgYW5kIGFybXY3LgorCisgICAgICAgICogYm1hbGxvYy9Jc29E
aXJlY3RvcnlQYWdlSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvRGlyZWN0b3J5UGFn
ZTxDb25maWc+OjpwYWdlRm9yKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6
CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZyk6CisK
IDIwMTgtMDgtMjcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgYnVpbGQgZml4IC0tIGRpc2FibGUgTFRPIGZvciBwcm9kdWN0aW9uIGJ1aWxk
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlclByaW50ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclByaW50ZXIuY3BwCmluZGV4IDNlZDY0YjkwYmE1ZmJjOTNiMmM5OTJiNDBlYzIxZjA3
MTBkMTVkZDcuLjdmMzZhYmZiODM0MDFmYWQxNDk3YWI3ODI1YmI1ZmU3YzZhNGU5NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyUHJpbnRlci5jcHAKQEAgLTEzNyw2ICsxMzcsMTAgQEAgdm9pZCBwcmludE1lbW9yeShQcmlu
dFN0cmVhbSYgb3V0LCBDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXA6PDB4JTAyeCAlZD4iLCBwLCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisgICAgICAgIC8vIGFzc3VtaW5nIG1lbW9yeSBpcyBub3QgbWFsZm9ybWVkLCBpdCBvcmln
aW5hdGVseSBwb2ludGVkIHRvIGEgdmFsdWUKKyAgICAgICAgLy8gb2YgdGhlIHJlcXVpcmVkIHNp
emUsIHdoaWNoIHNob3VsZCBiZSBwcm9wZXJseSBhbGlnbmVkIG9uIHBsYXRmb3JtcworICAgICAg
ICAvLyB0aGF0IHJlcXVpcmUgaXQuCisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdT
X0JFR0lOCiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7
CiAgICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJldF9jYXN0PGludDE2X3QqPihwdHIpOwog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0eCAlZD4iLCBwLCAqcCwgKnApOwpAQCAt
MTUyLDYgKzE1Niw3IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4
dCYgY29udGV4dCkKICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwMTYiIFBSSXg2NCAi
ICUiIFBSSWQ2NCAiPiIsIHAsICpwLCAqcCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgICAgIC8vIEVs
c2UsIHVua25vd24gd29yZCBzaXplLiBGYWxsIHRocnUgYW5kIGR1bXAgaW4gdGhlIGdlbmVyaWMg
d2F5LgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5YzFiZTEyODAwYzk0MTlhYTcxYTZhZWJkLi40YzU0
YzVhMjNkNGJjNWI0NmJlMDQ5ZTRiZTQ3MmYxZDJlMzZkYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRp
YyBWZWN0b3I8ZG91YmxlPiBkb3VibGVPcGVyYW5kcygpCiB9CiAKIAotc3RhdGljIFZlY3Rvcjxm
bG9hdD4gZmxvYXRPcGVyYW5kcygpCitzdGF0aWMgVmVjdG9yPGZsb2F0PiBVTlVTRURfRlVOQ1RJ
T04gZmxvYXRPcGVyYW5kcygpCiB7CiAgICAgcmV0dXJuIFZlY3RvcjxmbG9hdD4gewogICAgICAg
ICAwLApAQCAtNzQ3LDcgKzc0Nyw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVl
cygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKICAgICB2b2lkKiBvcmlnaW5hbFNQIHsg
bnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVsbHB0ciB9OworI2lmICEoQ1BVKE1JUFMp
KQogICAgIHVpbnRwdHJfdCBtb2RpZmllZEZsYWdzIHsgMCB9OworI2VuZGlmCiAgICAgc2l6ZV90
IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSB7IDEwIH07IC8vIEFSTTY0IHJlcXVpcmVzIHRo
YXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4KIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAppbmRleCA3MTI2ZDAyOWY2MjIzYjJlYTIwMDI2YTkyNjVkZDk1MmViNDA1MjU1Li40MWZmMjA4
MjkyOWVkY2VkMGU5YzVlZTEyMTZhYjU5ZjNhNWU3MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTgwOSw3ICs4MDksOSBA
QCBmYWlsZWRKU09OUDoKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsK
ICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxQ
cm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENv
ZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJl
dF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dB
Uk5JTkdTX0VORAogICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4oZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJv
Z3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpAQCAtODY3LDcgKzg2OSw5IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVj
dCogZnVuY3Rpb24sIENhbGxUCiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAgIC8vIENvbXBp
bGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGNhbGxEYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwgc2NvcGUsIENvZGVGb3JD
YWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19C
RUdJTgogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0g
cmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgSUdO
T1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBp
bGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3Ip
OwogCkBAIC05MzQsNyArOTM4LDkgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29u
c3RydWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogY29uc3RydWMKICAgICBpZiAo
aXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAg
IEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0Nv
ZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJl
dF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBJR05PUkVfQ0FTVF9B
TElHTl9XQVJOSU5HU19FTkQKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkK
ICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAKQEAgLTk4
Miw3ICs5ODgsOSBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yUmVw
ZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRQogICAgIC8vIENvbXBpbGUgdGhl
IGNhbGxlZToKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jazsKICAgICBKU09iamVjdCogZXJy
b3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsK
KyAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTgogICAgIEVYQ0VQVElPTl9BU1NF
UlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+
KGVycm9yKSk7CisgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgaWYgKFVO
TElLRUxZKGVycm9yKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICBu
ZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDQwLDcg
KzEwNDgsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHsKICAgICAgICAgQ29kZUJs
b2NrKiB0ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXZh
bC0+cHJlcGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3Bl
LCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdO
X1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNl
cHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOwor
ICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKICAgICAgICAgaWYgKFVOTElL
RUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNv
bXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxFdmFsQ29kZUJsb2NrKj4o
dGVtcENvZGVCbG9jayk7CkBAIC0xMTYzLDcgKzExNzMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgQwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwogICAgICAgICBK
U09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwg
dGVtcENvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lO
CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWlu
dGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBJR05PUkVf
Q0FTVF9BTElHTl9XQVJOSU5HU19FTkQKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVy
cm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENv
ZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCBiMmViNDE4Y2ZmODlkNTIzMDIyYTYxYWRiMGI4YmU0ZjY4ODAyZTYyLi5kNTI0YWE2Nzkw
ODkxZDAzNGIzZTVmYzU2NmVmYTg0YmVmNjJhMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwNDUsNyArMTA0NSw5IEBAIFNsb3dQYXRoUmV0
dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgQ2FsbExpCiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWND
YWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxl
Pigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgSUdO
T1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4KICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJy
b3IpKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgICAgIGlm
IChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAg
ICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKQEAgLTExMDEsNyArMTEwMyw5IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbChFeGVjU3RhdGUqIGV4ZWMs
IENhbGxMaW5rSW5mbyogY2FsbExpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ2FsbChraW5k
KSB8fCBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSAhPSBDb25zdHJ1Y3RB
YmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpOwogICAgICAgICAKICAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2RlQmxvY2spOworICAgICAgICBJ
R05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTgogICAgICAgICBFWENFUFRJT05fQVNTRVJU
X1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0
X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FS
TklOR1NfRU5ECiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdW5zaWduZWQgYXJndW1lbnRTdGFja1Nsb3RzID0gY2FsbExpbmtJbmZvLT5tYXhOdW1Bcmd1
bWVudHMoKTsKQEAgLTExNTEsNyArMTE1NSw5IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
dmlydHVhbEZvcldpdGhGdW5jdGlvbigKIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tT
bG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KCp2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7
CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4
Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VO
RAogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
CiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxl
QWRkcmVzcygpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmlu
ZGV4IGJhMzU1YmQ3NDNhM2U4NzY0ODA5YThmMjdkMzllZWE0YjY5ZTZhM2YuLmM1YzQ1YjFkMDkw
NDUyMTZjNTNlYWZkOTU5ZDU3ZDdlMzkxNDI3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTEzMTIsNyArMTMxMiwxMyBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwg
dW5zaWduZWQgbAogCiBpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0KiBKU0JpZ0ludDo6ZGF0YVN0b3Jh
Z2UoKQogeworICAgIC8vIG9mZnNldE9mRGF0YSgpIG1ha2VzIHN1cmUgdGhhdCBpdHMgcmV0dXJu
IHZhbHVlIGlzIGFsaWduZWQgdG8gdGhlIHNpemUgb2YKKyAgICAvLyBEaWdpdCwgc28gZXZlbiB0
aG91Z2ggd2UgY2FzdCB0byBjaGFyKiBmb3IgcG9pbnRlciBhcml0aG1ldGljcywgdGhlIGNhc3Qg
dG8KKyAgICAvLyBEaWdpdCogaXMgcHJvcGVybHkgYWxpZ25lZCwgdGhvdWdoIHRoZSBjb21waWxl
ciBkb2Vzbid0IGtub3cgYWJvdXQgaXQsCisgICAgLy8gdGhlcmVmb3JlIHdlIGRpc2FibGUgdGhp
cyB3YXJuaW5nLgorICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlz
KSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQK
IH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA4YTQ2MWU3
NmVjODAxMWE5YjIzNzhkNmQ0Mjc1ZDMxYWMxMjExMDljLi4yNjIxMTE3Njg5YTg4ZTFmNDJjNWZm
MzMwYmQ3ZmEwM2JjZjg0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCkBAIC0xNDYzLDggKzE0NjMsMTYgQEAgc3RhdGljIENvZGVCbG9jayogY29kZUJs
b2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlQ29k
ZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjYW5k
aWRhdGVDb2RlQmxvY2sgPSBmdW5jLT5qc0V4ZWN1dGFibGUoKS0+ZWl0aGVyQ29kZUJsb2NrKCk7
Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSGVyZSBp
dCdzIE9LIHRvIGlnbm9yZSB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBzaW5jZQorICAgICAg
ICAgICAgLy8gY2FuZGlkYXRlQ29kZUJsb2NrIHdpbGwgb25seSBiZSBhY2Nlc3NlZCBpZgorICAg
ICAgICAgICAgLy8gVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxvY2soKSByZXR1cm5zIHRydWUs
IHdoaWNoIG9ubHkgaGFwcGVucworICAgICAgICAgICAgLy8gaWYgdGhlIGFkZHJlc3MgaXMgdGhh
dCBvZiBhIGtub3duIGV4aXN0aW5nLCBwcm9wZXJseSBhbGlnbmVkCisgICAgICAgICAgICAvLyBj
b2RlQmxvY2suCisgICAgICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTgog
ICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnByZXRfY2FzdDxDb2RlQmxv
Y2sqPih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJO
SU5HU19FTkQKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjYW5kaWRhdGVDb2RlQmxvY2sg
JiYgVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxvY2soZXhlYywgY2FuZGlkYXRlQ29kZUJsb2Nr
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Db21waWxlci5oCmluZGV4IDcxZTZiOGU2YTA4ZTUzNzU0ZTE0OGE4ZTgzOTA3OTZkMWM5YWFj
MGEuLjRhMzNhYzA3MmM2NDg5NWY3NjBiNjRjYTA1MGNkOWRjMWM4ZDQ5ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIu
aApAQCAtNDY0LDQgKzQ2NCw4IEBACiAjZGVmaW5lIElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdT
X0JFR0lOIElHTk9SRV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIpCiAjZGVmaW5lIElHTk9SRV9O
VUxMX0NIRUNLX1dBUk5JTkdTX0VORCBJR05PUkVfV0FSTklOR1NfRU5ECiAKKyNkZWZpbmUgSUdO
T1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4gSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJjYXN0
LWFsaWduIikKKyNkZWZpbmUgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5EIElHTk9SRV9X
QVJOSU5HU19FTkQKKworCiAjZW5kaWYgLyogV1RGX0NvbXBpbGVyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaAppbmRleCBhMTQ5ZTEw
OGQxMzdjOTQxZTkwMGI1NzNlOThmZDM1ZTFiMDE0Yjk4Li44ZmQ4MDE2ZTZhMDlhNGE5MDMyZDYx
YTkyNWViNGU5ZTQxYzM2MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29E
aXJlY3RvcnlQYWdlSW5saW5lcy5oCkBAIC0zOSw4ICszOSwxMyBAQCBJc29EaXJlY3RvcnlQYWdl
PENvbmZpZz46Oklzb0RpcmVjdG9yeVBhZ2UoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgdW5z
aWduZWQgaQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNvRGlyZWN0b3J5UGFnZTxDb25m
aWc+KiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoSXNvRGlyZWN0b3J5PENvbmZp
ZywgbnVtUGFnZXM+KiBwYXlsb2FkKQogeworICAgIC8vIHRoZSBjaGFyICogY2FzdCBpcyBvbmx5
IHVzZWQgdG8gZG8gYSBwb2ludGVyIGNhbGN1bGF0aW9uLCBhbmQgc2FpZAorICAgIC8vIGNhbGN1
bGF0aW9uIHJlc3VsdHMgaW4gYSBwb2ludGVyIHRvIGFuIGV4aXN0aW5nLCBjb3JyZWN0bHkgYWxp
Z25lZAorICAgIC8vIElzb0RpcmVjdG9yeVBhZ2UuCisgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FS
TklOR1NfQkVHSU4KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJc29EaXJlY3RvcnlQYWdl
PENvbmZpZz4qPigKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGF5bG9hZCkgLSBC
T0ZGU0VUT0YoSXNvRGlyZWN0b3J5UGFnZSwgcGF5bG9hZCkpOworICAgIElHTk9SRV9DQVNUX0FM
SUdOX1dBUk5JTkdTX0VORAogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggMGM0Nzg2NGM3YjQ5YTBlZWM4YTI2MTBj
ZWY2N2ZhMzI4YTRlZjRjNC4uOGVkNTE4M2QyZTQ2ODExODRkMmRhNDhhMGE1NmNhYjRhMDU2ZjZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaApAQCAtMTg4LDcgKzE4
OCwyMCBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZygpCiAgICAg
ICAgIGNoYXIqIGNlbGxCeXRlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBpbmRl
eCAqIENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBwdXR0aW5nICVwIG9uIGZyZWUgbGlzdC5cbiIsIHRoaXMs
IGNlbGxCeXRlKTsKKworI2lmIENQVShBUk0pIHx8IENQVShNSVBTKQorICAgICAgICAvLyB0aGUg
Y2FzdCBiZWxvdyBpcyBzYWZlIG9uIHRoZXNlIHBsYXRmb3JtcyBhcyBsb25nIGFzCisgICAgICAg
IC8vIGJvdGggQ29uZmlnOjpvYmplY3RTaXplIGFuZCB0aGUgYWxpZ25tZW50IG9mIHRoaXMgYXJl
IG11bHRpcGxlcyBvZgorICAgICAgICAvLyB0aGUgcmVxdWlyZWQgYWxpZ25tZW50IG9mIEZyZWVD
ZWxsCisgICAgICAgIHN0YXRpY19hc3NlcnQoIShDb25maWc6Om9iamVjdFNpemUgJSBhbGlnbm9m
KEZyZWVDZWxsKSksICJDb25maWc6Om9iamVjdFNpemUgc2hvdWxkIHJlc3BlY3QgYWxpZ25tZW50
IG9mIEZyZWVDZWxsIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShhbGlnbm9mKElzb1BhZ2U8
Q29uZmlnPikgJSBhbGlnbm9mKEZyZWVDZWxsKSksICJBbGlnbm1lbnQgb2YgSXNvUGFnZTxDb25m
aWc+IHNob3VsZCBtYXRjaCB0aGF0IG9mIEZyZWVDZWxsIik7CisKKyAgICAgICAgSUdOT1JFX0NB
U1RfQUxJR05fV0FSTklOR1NfQkVHSU4KKyNlbmRpZgogICAgICAgICBGcmVlQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnJlZUNlbGwqPihjZWxsQnl0ZSk7CisjaWYgQ1BVKEFSTSkgfHwg
Q1BVKE1JUFMpCisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VORAorI2VuZGlm
CiAgICAgICAgIGNlbGwtPnNldE5leHQoaGVhZCwgc2VjcmV0KTsKICAgICAgICAgaGVhZCA9IGNl
bGw7CiAgICAgICAgIGJ5dGVzICs9IENvbmZpZzo6b2JqZWN0U2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349756</attachid>
            <date>2018-09-14 05:02:37 -0700</date>
            <delta_ts>2018-09-19 03:48:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20180914140236.patch</filename>
            <type>text/plain</type>
            <size>16875</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGM2ZTY3MDI5ODNiOGMyODFiNzFmYjlkNGFiMmI2YTE0YjIwYWQ1Li5jMzE0NTdhZGRkMjgwZmEw
YWI1MmU2OTA5ZGI0M2VhZDE5NTkwMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wOS0wNSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOiBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZQorICAgICAgICBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YgdGhlIHNhbWUgc2l6ZSBhbmQgY2FuIGlnbm9yZSB0
aGUKKyAgICAgICAgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6IG1hcmtlZCBhcyBwb3Rl
bnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQKKyAgICAgICAgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6IG1vZGlmaWVk
RmxhZ3MgaXMgbm90IHVzZWQgb24KKyAgICAgICAgbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICBUaGUgcHJlcGFyZUZvckV4ZWN1
dGlvbigpIG1ldGhvZCBlaXRoZXIgcmV0dXJucyBudWxscHRyIG9yIGFuCisgICAgICAgIEV4Y2Vw
dGlvbiogY2FzdCB0byBhIEpTT2JqZWN0Ki4gSXQgaXMgdGhlcmVmb3JlIHNhZmUgdG8gY2FzdCBp
dCBiYWNrCisgICAgICAgIHRvIEV4Y2VwdGlvbiogZXZlbiB0aG91Z2ggaXQgaGFzIHN0cmljdGVy
IGFsaWdubWVudCByZXF1aXJlbWVudHMuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICBTYW1lIGFzIGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6Cisg
ICAgICAgIFBvaW50ZXIgYXJpdGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9lc24n
dCB1bmRlcnN0YW5kIHRoaXMsCisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24KKyAg
ICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6Y29kZUJsb2NrRnJv
bUFyZyk6CisgICAgICAgIEFmdGVyIHRoZSBjYXN0LCBhIGNoZWNrIGlzIGRvbmUgdG8gbWFrZSBz
dXJlIHRoYXQgdGhlIHBvaW50ZXIgaXMgdG8gYQorICAgICAgICBrbm93biBDb2RlQmxvY2sgYmVm
b3JlIHVzaW5nIGl0LCBzbyBpZiB0aGUgcmVzdWx0IGlzIGJhZGx5IGFsaWduZWQgaXQKKyAgICAg
ICAgd29uJ3QgYmUgdXNlZCBhbnl3YXlzLgorCiAyMDE4LTA5LTEyICBHdWlsbGF1bWUgRW1vbnQg
IDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgSUdOT1JFX1dBUk5JTkdfLiog
bWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDYwNWFhN2RjZTM1NzczYmFmNTc1YzMxNGY3ZjFkY2NkOTg2YjlkN2IuLmM4
NjA0YmU1YzRiMjBiY2NjOGFlNDZhZTYwMDdjYWQzZDFkM2NmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTgtMDktMDUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIElHTk9S
RV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOL19FTkQgbWFjcm9zIHRvIGJlIGFibGUgdG8KKyAg
ICAgICAgc2ltcGx5IGlnbm9yZSB3YXJuaW5ncyBvbiBub24tcmVzcGVjdCBvZiBhbGlnbm1lbnQg
aW4gY2FzdHMgZm9yIGEgd2VsbAorICAgICAgICBkZWZpbmVkIGNvZGUgc3Vic2V0LgorCisgICAg
ICAgICogd3RmL0NvbXBpbGVyLmg6CisKIDIwMTgtMDktMTIgIEd1aWxsYXVtZSBFbW9udCAgPGd1
aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBJR05PUkVfV0FSTklOR18uKiBtYWNy
b3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9j
L0NoYW5nZUxvZwppbmRleCBkNDY5MDQwZGRlM2Y5ODllZjQ1MzEyM2Y5MzRkMzI5YzZjODNjNTlj
Li5kYjNlNzQ1ZmEwYTdkOWYxZjdhODM4MGIyN2I1NmZjYTIzNTI1YjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTgtMDktMDUgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBh
bmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTi9FTkQgdG8gYWxsb3cgc29tZSBj
YXN0cyBhZnRlcgorICAgICAgICBwb2ludGVyIGNhbGN1bGF0aW9ucyB3aXRob3V0IHRyaWdnZXJp
bmcgYWxpZ25tZW50IHdhcm5pbmdzIG9uIG1pcHMgYW5kCisgICAgICAgIGFybXY3LgorCisgICAg
ICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKToKKyAgICAgICAgKiBibWFsbG9j
L0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0
YXJ0QWxsb2NhdGluZyk6CisKIDIwMTgtMDgtMjcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IC0tIGRpc2FibGUgTFRPIGZv
ciBwcm9kdWN0aW9uIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCmluZGV4IDNlZDY0YjkwYmE1ZmJj
OTNiMmM5OTJiNDBlYzIxZjA3MTBkMTVkZDcuLjdmMzZhYmZiODM0MDFmYWQxNDk3YWI3ODI1YmI1
ZmU3YzZhNGU5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAKQEAgLTEzNyw2ICsxMzcsMTAgQEAgdm9p
ZCBwcmludE1lbW9yeShQcmludFN0cmVhbSYgb3V0LCBDb250ZXh0JiBjb250ZXh0KQogICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTAyeCAlZD4iLCBwLCAqcCwgKnApOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIC8vIGFzc3VtaW5nIG1lbW9yeSBpcyBub3Qg
bWFsZm9ybWVkLCBpdCBvcmlnaW5hdGVseSBwb2ludGVkIHRvIGEgdmFsdWUKKyAgICAgICAgLy8g
b2YgdGhlIHJlcXVpcmVkIHNpemUsIHdoaWNoIHNob3VsZCBiZSBwcm9wZXJseSBhbGlnbmVkIG9u
IHBsYXRmb3JtcworICAgICAgICAvLyB0aGF0IHJlcXVpcmUgaXQuCisgICAgICAgIElHTk9SRV9D
QVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0ZXMgPT0g
c2l6ZW9mKGludDE2X3QpKSB7CiAgICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJldF9jYXN0
PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0eCAlZD4i
LCBwLCAqcCwgKnApOwpAQCAtMTUyLDYgKzE1Niw3IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRT
dHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG91dC5wcmludGYoIiVw
OjwweCUwMTYiIFBSSXg2NCAiICUiIFBSSWQ2NCAiPiIsIHAsICpwLCAqcCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1Nf
RU5ECiAgICAgICAgIC8vIEVsc2UsIHVua25vd24gd29yZCBzaXplLiBGYWxsIHRocnUgYW5kIGR1
bXAgaW4gdGhlIGdlbmVyaWMgd2F5LgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5YzFiZTEyODAwYzk0
MTlhYTcxYTZhZWJkLi40YzU0YzVhMjNkNGJjNWI0NmJlMDQ5ZTRiZTQ3MmYxZDJlMzZkYTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMjQ2
LDcgKzI0Niw3IEBAIHN0YXRpYyBWZWN0b3I8ZG91YmxlPiBkb3VibGVPcGVyYW5kcygpCiB9CiAK
IAotc3RhdGljIFZlY3RvcjxmbG9hdD4gZmxvYXRPcGVyYW5kcygpCitzdGF0aWMgVmVjdG9yPGZs
b2F0PiBVTlVTRURfRlVOQ1RJT04gZmxvYXRPcGVyYW5kcygpCiB7CiAgICAgcmV0dXJuIFZlY3Rv
cjxmbG9hdD4gewogICAgICAgICAwLApAQCAtNzQ3LDcgKzc0Nyw5IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKICAgICB2
b2lkKiBvcmlnaW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVsbHB0ciB9
OworI2lmICEoQ1BVKE1JUFMpKQogICAgIHVpbnRwdHJfdCBtb2RpZmllZEZsYWdzIHsgMCB9Owor
I2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSB7IDEwIH07IC8v
IEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4KIAogI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAppbmRleCA3MTI2ZDAyOWY2MjIzYjJlYTIwMDI2YTkyNjVkZDk1
MmViNDA1MjU1Li40MWZmMjA4MjkyOWVkY2VkMGU5YzVlZTEyMTZhYjU5ZjNhNWU3MTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
QEAgLTgwOSw3ICs4MDksOSBAQCBmYWlsZWRKU09OUDoKICAgICB7CiAgICAgICAgIENvZGVCbG9j
ayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBD
b2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dB
Uk5JTkdTX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRp
b24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIElH
Tk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VORAogICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3Ip
KQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oZXJyb3IpOwogICAgICAgICBjb2Rl
QmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpAQCAtODY3
LDcgKzg2OSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUCiAgICAgaWYgKGlzSlNDYWxsKSB7
CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3QqIGNvbXBp
bGVFcnJvciA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1
dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9u
KSwgc2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBJR05PUkVfQ0FT
VF9BTElHTl9XQVJOSU5HU19CRUdJTgogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2Nv
cGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJy
b3IpKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgICAgIGlm
IChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybihjb21waWxlRXJyb3IpOwogCkBAIC05MzQsNyArOTM4LDkgQEAgSlNPYmplY3QqIEludGVy
cHJldGVyOjpleGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCog
Y29uc3RydWMKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRo
ZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVG
b3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dB
Uk5JTkdTX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRp
b24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAg
ICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKICAgICAgICAgaWYgKFVOTElLRUxZ
KCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBp
bGVFcnJvcik7CiAKQEAgLTk4Miw3ICs5ODgsOSBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRQog
ICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jazsK
ICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVj
dXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2Fs
bCwgbmV3Q29kZUJsb2NrKTsKKyAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTgog
ICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJl
dF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklO
R1NfRU5ECiAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFt
ZUNsb3N1cmUoKTsKICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0g
ZmFsc2U7CkBAIC0xMDQwLDcgKzEwNDgsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
KEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAg
IHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCog
Y29tcGlsZUVycm9yID0gZXZhbC0+cHJlcGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4o
dm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAg
IElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NF
UlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+
KGNvbXBpbGVFcnJvcikpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQK
ICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2Fz
dDxFdmFsQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CkBAIC0xMTYzLDcgKzExNzMsOSBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgQwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29k
ZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNj
b3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIElHTk9SRV9DQVNUX0FM
SUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5l
eGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikp
OworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKICAgICAgICAgaWYgKFVO
TElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBiMmViNDE4Y2ZmODlkNTIzMDIyYTYxYWRiMGI4YmU0ZjY4
ODAyZTYyLi5kNTI0YWE2NzkwODkxZDAzNGIzZTVmYzU2NmVmYTg0YmVmNjJhMzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwNDUsNyArMTA0
NSw5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAKICAgICAgICAgQ29kZUJsb2NrKiogY29k
ZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBK
U09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248
RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tT
bG90KTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4KICAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nh
c3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklO
R1NfRU5ECiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJv
d0V4Y2VwdGlvbigpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKQEAgLTEx
MDEsNyArMTEwMyw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyogY2FsbExpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzQ2FsbChraW5kKSB8fCBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxp
dHkoKSAhPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpOwogICAgICAgICAKICAg
ICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2Rl
QmxvY2spOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTgogICAgICAg
ICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgSUdO
T1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRTdGFja1Nsb3RzID0gY2FsbExp
bmtJbmZvLT5tYXhOdW1Bcmd1bWVudHMoKTsKQEAgLTExNTEsNyArMTE1NSw5IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbigKIAogICAgICAgICBDb2Rl
QmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7
CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5k
LCAqY29kZUJsb2NrU2xvdCk7CisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JF
R0lOCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBy
ZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIElHTk9SRV9DQVNU
X0FMSUdOX1dBUk5JTkdTX0VORAogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0
clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCmluZGV4IGJhMzU1YmQ3NDNhM2U4NzY0ODA5YThmMjdkMzllZWE0YjY5
ZTZhM2YuLmM1YzQ1YjFkMDkwNDUyMTZjNTNlYWZkOTU5ZDU3ZDdlMzkxNDI3MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTEzMTIsNyArMTMxMiwx
MyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZt
LCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbAogCiBpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0KiBK
U0JpZ0ludDo6ZGF0YVN0b3JhZ2UoKQogeworICAgIC8vIG9mZnNldE9mRGF0YSgpIG1ha2VzIHN1
cmUgdGhhdCBpdHMgcmV0dXJuIHZhbHVlIGlzIGFsaWduZWQgdG8gdGhlIHNpemUgb2YKKyAgICAv
LyBEaWdpdCwgc28gZXZlbiB0aG91Z2ggd2UgY2FzdCB0byBjaGFyKiBmb3IgcG9pbnRlciBhcml0
aG1ldGljcywgdGhlIGNhc3QgdG8KKyAgICAvLyBEaWdpdCogaXMgcHJvcGVybHkgYWxpZ25lZCwg
dGhvdWdoIHRoZSBjb21waWxlciBkb2Vzbid0IGtub3cgYWJvdXQgaXQsCisgICAgLy8gdGhlcmVm
b3JlIHdlIGRpc2FibGUgdGhpcyB3YXJuaW5nLgorICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5J
TkdTX0JFR0lOCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJl
dF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICBJR05PUkVfQ0FTVF9B
TElHTl9XQVJOSU5HU19FTkQKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6
ZGlnaXQodW5zaWduZWQgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAppbmRleCA4YTQ2MWU3NmVjODAxMWE5YjIzNzhkNmQ0Mjc1ZDMxYWMxMjExMDljLi4yNjIx
MTE3Njg5YTg4ZTFmNDJjNWZmMzMwYmQ3ZmEwM2JjZjg0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0xNDYzLDggKzE0NjMsMTYgQEAgc3RhdGlj
IENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBjYW5kaWRhdGVDb2RlQmxvY2sgPSBmdW5jLT5qc0V4ZWN1dGFibGUoKS0+
ZWl0aGVyQ29kZUJsb2NrKCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gSGVyZSBpdCdzIE9LIHRvIGlnbm9yZSB0aGUgYWxpZ25tZW50IHJlcXVpcmVt
ZW50cyBzaW5jZQorICAgICAgICAgICAgLy8gY2FuZGlkYXRlQ29kZUJsb2NrIHdpbGwgb25seSBi
ZSBhY2Nlc3NlZCBpZgorICAgICAgICAgICAgLy8gVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxv
Y2soKSByZXR1cm5zIHRydWUsIHdoaWNoIG9ubHkgaGFwcGVucworICAgICAgICAgICAgLy8gaWYg
dGhlIGFkZHJlc3MgaXMgdGhhdCBvZiBhIGtub3duIGV4aXN0aW5nLCBwcm9wZXJseSBhbGlnbmVk
CisgICAgICAgICAgICAvLyBjb2RlQmxvY2suCisgICAgICAgICAgICBJR05PUkVfQ0FTVF9BTElH
Tl9XQVJOSU5HU19CRUdJTgogICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRl
cnByZXRfY2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBJR05P
UkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChj
YW5kaWRhdGVDb2RlQmxvY2sgJiYgVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxvY2soZXhlYywg
Y2FuZGlkYXRlQ29kZUJsb2NrKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IDcxZTZiOGU2YTA4ZTUzNzU0ZTE0
OGE4ZTgzOTA3OTZkMWM5YWFjMGEuLjRhMzNhYzA3MmM2NDg5NWY3NjBiNjRjYTA1MGNkOWRjMWM4
ZDQ5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNl
L1dURi93dGYvQ29tcGlsZXIuaApAQCAtNDY0LDQgKzQ2NCw4IEBACiAjZGVmaW5lIElHTk9SRV9O
VUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOIElHTk9SRV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIp
CiAjZGVmaW5lIElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0VORCBJR05PUkVfV0FSTklOR1Nf
RU5ECiAKKyNkZWZpbmUgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4gSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJjYXN0LWFsaWduIikKKyNkZWZpbmUgSUdOT1JFX0NBU1RfQUxJR05fV0FS
TklOR1NfRU5EIElHTk9SRV9XQVJOSU5HU19FTkQKKworCiAjZW5kaWYgLyogV1RGX0NvbXBpbGVy
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFn
ZUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGlu
ZXMuaAppbmRleCBhMTQ5ZTEwOGQxMzdjOTQxZTkwMGI1NzNlOThmZDM1ZTFiMDE0Yjk4Li44ZmQ4
MDE2ZTZhMDlhNGE5MDMyZDYxYTkyNWViNGU5ZTQxYzM2MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCkBAIC0zOSw4ICszOSwxMyBA
QCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Oklzb0RpcmVjdG9yeVBhZ2UoSXNvSGVhcEltcGw8
Q29uZmlnPiYgaGVhcCwgdW5zaWduZWQgaQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNv
RGlyZWN0b3J5UGFnZTxDb25maWc+KiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3Io
SXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXM+KiBwYXlsb2FkKQogeworICAgIC8vIHRoZSBj
aGFyICogY2FzdCBpcyBvbmx5IHVzZWQgdG8gZG8gYSBwb2ludGVyIGNhbGN1bGF0aW9uLCBhbmQg
c2FpZAorICAgIC8vIGNhbGN1bGF0aW9uIHJlc3VsdHMgaW4gYSBwb2ludGVyIHRvIGFuIGV4aXN0
aW5nLCBjb3JyZWN0bHkgYWxpZ25lZAorICAgIC8vIElzb0RpcmVjdG9yeVBhZ2UuCisgICAgSUdO
T1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qPigKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4ocGF5bG9hZCkgLSBCT0ZGU0VUT0YoSXNvRGlyZWN0b3J5UGFnZSwgcGF5bG9hZCkpOwor
ICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VORAogfQogCiB9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVz
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggMGM0Nzg2
NGM3YjQ5YTBlZWM4YTI2MTBjZWY2N2ZhMzI4YTRlZjRjNC4uOGVkNTE4M2QyZTQ2ODExODRkMmRh
NDhhMGE1NmNhYjRhMDU2ZjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29QYWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGlu
ZXMuaApAQCAtMTg4LDcgKzE4OCwyMCBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0
QWxsb2NhdGluZygpCiAgICAgICAgIGNoYXIqIGNlbGxCeXRlID0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4odGhpcykgKyBpbmRleCAqIENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAgICAgaWYgKHZl
cmJvc2UpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBwdXR0aW5nICVwIG9uIGZy
ZWUgbGlzdC5cbiIsIHRoaXMsIGNlbGxCeXRlKTsKKworI2lmIENQVShBUk0pIHx8IENQVShNSVBT
KQorICAgICAgICAvLyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlIG9uIHRoZXNlIHBsYXRmb3JtcyBh
cyBsb25nIGFzCisgICAgICAgIC8vIGJvdGggQ29uZmlnOjpvYmplY3RTaXplIGFuZCB0aGUgYWxp
Z25tZW50IG9mIHRoaXMgYXJlIG11bHRpcGxlcyBvZgorICAgICAgICAvLyB0aGUgcmVxdWlyZWQg
YWxpZ25tZW50IG9mIEZyZWVDZWxsCisgICAgICAgIHN0YXRpY19hc3NlcnQoIShDb25maWc6Om9i
amVjdFNpemUgJSBhbGlnbm9mKEZyZWVDZWxsKSksICJDb25maWc6Om9iamVjdFNpemUgc2hvdWxk
IHJlc3BlY3QgYWxpZ25tZW50IG9mIEZyZWVDZWxsIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
IShhbGlnbm9mKElzb1BhZ2U8Q29uZmlnPikgJSBhbGlnbm9mKEZyZWVDZWxsKSksICJBbGlnbm1l
bnQgb2YgSXNvUGFnZTxDb25maWc+IHNob3VsZCBtYXRjaCB0aGF0IG9mIEZyZWVDZWxsIik7CisK
KyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4KKyNlbmRpZgogICAgICAg
ICBGcmVlQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnJlZUNlbGwqPihjZWxsQnl0ZSk7
CisjaWYgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dB
Uk5JTkdTX0VORAorI2VuZGlmCiAgICAgICAgIGNlbGwtPnNldE5leHQoaGVhZCwgc2VjcmV0KTsK
ICAgICAgICAgaGVhZCA9IGNlbGw7CiAgICAgICAgIGJ5dGVzICs9IENvbmZpZzo6b2JqZWN0U2l6
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350104</attachid>
            <date>2018-09-19 03:48:25 -0700</date>
            <delta_ts>2018-10-01 11:55:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20180919124823.patch</filename>
            <type>text/plain</type>
            <size>22568</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDdiOWFlZTc1ODZkY2VkMzA4NDNmYTc0NmI5ZWU2N2ZjYmRjZDFjLi43NjI5YmMxNWJkNmE4MTc0
NDhlOWQ3ZmJmZTg2Yjg5ZDJlNTQ1OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxOC0wOS0xOSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOgorICAgICAgICBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZSBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YKKyAgICAgICAgdGhlIHNhbWUgc2l6ZSBhbmQgY2Fu
IGlnbm9yZSB0aGUgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6CisgICAgICAgIG1hcmtl
ZCBhcyBwb3RlbnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6CisgICAgICAg
IG1vZGlmaWVkRmxhZ3MgaXMgbm90IHVzZWQgb24gbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgTWFrZSBTY3JpcHRFeGVj
dXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKCkgcmV0dXJuIGFuCisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uKj4gaW5zdGVhZCBvZiBhIEpTT2JqZWN0Ki4KKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZU1v
ZHVsZVByb2dyYW0pOgorICAgICAgICBVcGRhdGUgY2FsbGluZyBjb2RlIGZvciB0aGUgcHJvdG90
eXBlIGNoYW5nZSBvZgorICAgICAgICBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0
aW9uKCkuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICBTYW1lIGFz
IGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIFBvaW50ZXIgYXJp
dGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9lc24ndCB1bmRlcnN0YW5kIHRoaXMs
CisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24KKyAgICAgICAgKiBydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgTWFrZSBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKCkgcmV0dXJuIGFuCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
Kj4gaW5zdGVhZCBvZiBhIEpTT2JqZWN0Ki4KKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29kZUJsb2NrRnJvbUFyZyk6CisgICAgICAgIEFmdGVyIHRoZSBj
YXN0LCBhIGNoZWNrIGlzIGRvbmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHBvaW50ZXIgaXMgdG8g
YQorICAgICAgICBrbm93biBDb2RlQmxvY2sgYmVmb3JlIHVzaW5nIGl0LCBzbyBpZiB0aGUgcmVz
dWx0IGlzIGJhZGx5IGFsaWduZWQgaXQKKyAgICAgICAgd29uJ3QgYmUgdXNlZCBhbnl3YXlzLgor
CiAyMDE4LTA5LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgT3BhcXVlSlNTdHJpbmcgcmF0aGVyIHRoYW4gSlNSZXRhaW5QdHIgaW5zaWRlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCBhZWZkYzgzYTE1ZGU2ZTg0OWMyYjNmYTNhYzQzYWVlMjNkOGFhODY1Li40YWZiYWUwNzBm
NzVmNTMxOTcwZDRiYjFlMTE4YzZiMzdhMjQyYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTA5LTE5ICBHdWlsbGF1bWUgRW1vbnQgIDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbSlNDXSBSZW1vdmUgZ2NjIHdhcm5pbmdzIG9uIG1pcHMgYW5kIGFybXY3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1OTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBJR05PUkVfQ0FTVF9B
TElHTl9XQVJOSU5HU19CRUdJTi9fRU5EIG1hY3JvcyB0byBiZSBhYmxlIHRvCisgICAgICAgIHNp
bXBseSBpZ25vcmUgd2FybmluZ3Mgb24gbm9uLXJlc3BlY3Qgb2YgYWxpZ25tZW50IGluIGNhc3Rz
IGZvciBhIHdlbGwKKyAgICAgICAgZGVmaW5lZCBjb2RlIHN1YnNldC4KKworICAgICAgICAqIHd0
Zi9Db21waWxlci5oOgorCiAyMDE4LTA5LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzU5OTAuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VM
b2cKaW5kZXggZDQ2OTA0MGRkZTNmOTg5ZWY0NTMxMjNmOTM0ZDMyOWM2YzgzYzU5Yy4uM2EyZmNj
NmUwNTkzY2IxZTNhOGVjN2NhY2QxY2Y3YWQzNzc5ZWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE4LTA5LTE5ICBHdWlsbGF1bWUgRW1vbnQgIDxndWlqZW1vbnRAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgZ2NjIHdhcm5pbmdzIG9uIG1pcHMgYW5kIGFybXY3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1OTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSUdO
T1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4vRU5EIHRvIGFsbG93IHNvbWUgY2FzdHMgYWZ0
ZXIKKyAgICAgICAgcG9pbnRlciBjYWxjdWxhdGlvbnMgd2l0aG91dCB0cmlnZ2VyaW5nIGFsaWdu
bWVudCB3YXJuaW5ncyBvbiBtaXBzIGFuZAorICAgICAgICBhcm12Ny4KKworICAgICAgICAqIGJt
YWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb0Rp
cmVjdG9yeVBhZ2U8Q29uZmlnPjo6cGFnZUZvcik6CisgICAgICAgICogYm1hbGxvYy9Jc29QYWdl
SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9j
YXRpbmcpOgorCiAyMDE4LTA4LTI3ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCAtLSBkaXNhYmxlIExUTyBmb3IgcHJvZHVj
dGlvbiBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAppbmRleCAzZWQ2NGI5MGJhNWZiYzkzYjJjOTky
YjQwZWMyMWYwNzEwZDE1ZGQ3Li5jNGNjZWE3OTBkNTZiNmUwNTAzYjk1YmJmNTFkZWRkNmY4N2Y4
MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyUHJpbnRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCkBAIC0xMzcsNiArMTM3LDEwIEBAIHZvaWQgcHJpbnRN
ZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVwOjwweCUwMnggJWQ+IiwgcCwgKnAsICpwKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICAvLyBhc3N1bWluZyBtZW1vcnkgaXMgbm90IG1hbGZvcm1l
ZCwgaXQgb3JpZ2luYWxseSBwb2ludGVkIHRvIGEgdmFsdWUKKyAgICAgICAgLy8gb2YgdGhlIHJl
cXVpcmVkIHNpemUsIHdoaWNoIHNob3VsZCBiZSBwcm9wZXJseSBhbGlnbmVkIG9uIHBsYXRmb3Jt
cworICAgICAgICAvLyB0aGF0IHJlcXVpcmUgaXQuCisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdO
X1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGlu
dDE2X3QpKSB7CiAgICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJldF9jYXN0PGludDE2X3Qq
PihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0eCAlZD4iLCBwLCAqcCwg
KnApOwpAQCAtMTUyLDYgKzE1Niw3IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91
dCwgQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwMTYi
IFBSSXg2NCAiICUiIFBSSWQ2NCAiPiIsIHAsICpwLCAqcCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAg
ICAgIC8vIEVsc2UsIHVua25vd24gd29yZCBzaXplLiBGYWxsIHRocnUgYW5kIGR1bXAgaW4gdGhl
IGdlbmVyaWMgd2F5LgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5YzFiZTEyODAwYzk0MTlhYTcxYTZh
ZWJkLi40YzU0YzVhMjNkNGJjNWI0NmJlMDQ5ZTRiZTQ3MmYxZDJlMzZkYTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMjQ2LDcgKzI0Niw3
IEBAIHN0YXRpYyBWZWN0b3I8ZG91YmxlPiBkb3VibGVPcGVyYW5kcygpCiB9CiAKIAotc3RhdGlj
IFZlY3RvcjxmbG9hdD4gZmxvYXRPcGVyYW5kcygpCitzdGF0aWMgVmVjdG9yPGZsb2F0PiBVTlVT
RURfRlVOQ1RJT04gZmxvYXRPcGVyYW5kcygpCiB7CiAgICAgcmV0dXJuIFZlY3RvcjxmbG9hdD4g
ewogICAgICAgICAwLApAQCAtNzQ3LDcgKzc0Nyw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNT
dGFja1ZhbHVlcygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKICAgICB2b2lkKiBvcmln
aW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVsbHB0ciB9OworI2lmICEo
Q1BVKE1JUFMpKQogICAgIHVpbnRwdHJfdCBtb2RpZmllZEZsYWdzIHsgMCB9OworI2VuZGlmCiAg
ICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSB7IDEwIH07IC8vIEFSTTY0IHJl
cXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4KIAogI2lmIENQVShYODYpIHx8IENQ
VShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5k
ZXggYTNhM2QyNjM5MDBkMzEyMmMwOWUyMDRmMzJiNTdiM2UxMDFhMzJiMi4uMzYyZmU2ODdlNTY0
YTRkN2FmODJlMmYzYWU0OGQzM2QzOGVhZmEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgaW5saW5lIFJlZ2lzdGVy
JiBFeGVjU3RhdGU6OnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyIHJlZykKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgotSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6
OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29w
ZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0
Q29kZUJsb2NrKQorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBTY3JpcHRFeGVjdXRhYmxlOjpw
cmVwYXJlRm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTU2NvcGUq
IHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVCbG9jayomIHJlc3VsdENv
ZGVCbG9jaykKIHsKICAgICBpZiAoaGFzSklUQ29kZUZvcihraW5kKSkgewogICAgICAgICBpZiAo
c3RkOjppc19zYW1lPEV4ZWN1dGFibGVUeXBlLCBFdmFsRXhlY3V0YWJsZT46OnZhbHVlKQpAQCAt
MTA1Myw5ICsxMDUzLDE1IEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9y
RXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTCiAgICAgICAgICAgICBy
ZXN1bHRDb2RlQmxvY2sgPSBqc0Nhc3Q8Q29kZUJsb2NrKj4oanNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KHRoaXMpLT5jb2RlQmxvY2tGb3Ioa2luZCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIHByZXBh
cmVGb3JFeGVjdXRpb25JbXBsKHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsIHJlc3VsdENvZGVC
bG9jayk7CisgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IHByZXBhcmVGb3JFeGVjdXRpb25JbXBs
KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsIHJlc3VsdENvZGVCbG9jayk7CisgICAgaWYgKGV4
Y2VwdGlvbikgeworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTgorICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxFeGNlcHRpb24gKj4ocmVpbnRlcnByZXRfY2FzdDxF
eGNlcHRpb24qPihleGNlcHRpb24pKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklO
R1NfRU5ECisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKICNk
ZWZpbmUgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssIHN1bW1hcnksIGRldGFpbHMpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IDcxMjZkMDI5ZjYyMjNiMmVhMjAwMjZhOTI2NWRkOTUyZWI0MDUyNTUuLmZhYmY5Zjhm
NTJjZjlhN2I0ZGUyZTU1NjFhYTkwNmZjMjViZDg3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtODA4LDEwICs4MDgsMTEg
QEAgZmFpbGVkSlNPTlA6CiAgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrOwogICAgIHsK
ICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwotICAgICAgICBKU09iamVjdCogZXJy
b3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPih2bSwg
bnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKLSAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBl
cnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KHZt
LCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBF
WENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IudmFsdWVfb3Io
bnVsbHB0cikpOworCiAgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybigqZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9j
ayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtODY2LDEwICs4NjcsMTAgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0
KiBmdW5jdGlvbiwgQ2FsbFQKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21w
aWxlIHRoZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9y
Q2FsbCwgbmV3Q29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9y
KSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gY29tcGlsZUVycm9yID0gY2Fs
bERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9u
RXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwgQ29k
ZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKCpjb21waWxlRXJyb3IpOwogCiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAg
ICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAg
LTkzMywxMCArOTM0LDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVj
dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAKICAgICBpZiAoaXNK
U0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6Ci0gICAgICAgIEpT
T2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVC
bG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9
PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGNvbXBpbGVFcnJvciA9IGNvbnN0cnVjdERhdGEuanMu
ZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLCBzY29wZSwgQ29kZUZvckNv
bnN0cnVjdCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAg
ICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hl
Y2tlZFJldHVybihjb21waWxlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4oKmNvbXBpbGVFcnJvcik7CiAKICAgICAgICAgQVNTRVJUKCEhbmV3Q29kZUJsb2NrKTsKICAg
ICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAt
OTgxLDggKzk4Miw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JS
ZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FCiAKICAgICAvLyBDb21waWxl
IHRoZSBjYWxsZWU6CiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7Ci0gICAgSlNPYmplY3Qq
IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9u
RXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9j
ayk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50
ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1
bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0Nv
ZGVCbG9jayk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09
IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAg
ICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91
bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTEwMzksMTAgKzEwNDAsMTAgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUKICAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewog
ICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIEpTT2JqZWN0KiBjb21w
aWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2YWxFeGVjdXRhYmxlPih2bSwg
bnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKLSAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uKj4gY29tcGlsZUVycm9yID0gZXZhbC0+cHJlcGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0
YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Cisg
ICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxl
RXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxl
RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKCpjb21waWxlRXJyb3IpOwogICAgICAg
ICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAg
IH0KIApAQCAtMTE2MiwxMCArMTE2MywxMCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
TW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQwogICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVC
bG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4
ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KHZt
LCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwotICAgICAgICBF
WENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2Fz
dDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24qPiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0
ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpID09IGNvbXBpbGVFcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChV
TkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bihjb21waWxlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBp
bGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiMmViNDE4Y2ZmODlkNTIzMDIyYTYxYWRiMGI4YmU0
ZjY4ODAyZTYyLi5mZjZhNDc0MzMzNjk1ZWU3YTcyYmMwNDIyYWZkMWI0NzkxMzBhYTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwNDQsOCAr
MTA0NCw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtD
YWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAgICAgICAgIH0KIAogICAgICAgICBD
b2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2Nr
KCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFy
ZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2lu
ZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNj
b3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhy
b3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAg
IGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOwog
ICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKQEAgLTExMDAsOCArMTEwMCw4IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbChFeGVjU3RhdGUqIGV4
ZWMsIENhbGxMaW5rSW5mbyogY2FsbExpCiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxs
KGtpbmQpIHx8IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0
cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7CiAgICAgICAgIAotICAgICAgICBKU09iamVj
dCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7Ci0gICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBr
aW5kLCBjb2RlQmxvY2spOworICAgICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh0aHJvd1Nj
b3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsK
ICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwpA
QCAtMTE1MCw4ICsxMTUwLDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9y
V2l0aEZ1bmN0aW9uKAogICAgICAgICB9CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2Nr
U2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwotICAgICAgICBKU09iamVj
dCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPigqdm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3Qp
OwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVp
bnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0
aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2Rl
QmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLT5nZXRD
VElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDNjNWY5YTI5NDJiMzAw
M2ZlNDIxMzhmN2U0ZGRjM2VhMGRlZWI3YzQuLjJmZWMyYTk1YjViMDAxMTM2NjFmMzhlZTg4MGFh
ZDYyNjhkMTE1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMTQ4NSwxMCArMTQ4NSwxMCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29k
ZQogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tT
bG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7Ci0g
ICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvcik7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gZXJyb3IgPSBmdW5jdGlvbkV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgY2FsbGVl
LCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBFWENFUFRJT05fQVNTRVJU
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQotICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjLCBlcnJvcik7CisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsICplcnJvcik7
CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tTbG90OwogICAgICAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggYmEzNTViZDc0M2EzZTg3NjQ4MDlhOGYy
N2QzOWVlYTRiNjllNmEzZi4uYzVjNDViMWQwOTA0NTIxNmM1M2VhZmQ5NTlkNTdkN2UzOTE0Mjcw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTMx
Miw3ICsxMzEyLDEzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsCiAKIGlubGluZSBKU0JpZ0lu
dDo6RGlnaXQqIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgpCiB7CisgICAgLy8gb2Zmc2V0T2ZEYXRh
KCkgbWFrZXMgc3VyZSB0aGF0IGl0cyByZXR1cm4gdmFsdWUgaXMgYWxpZ25lZCB0byB0aGUgc2l6
ZSBvZgorICAgIC8vIERpZ2l0LCBzbyBldmVuIHRob3VnaCB3ZSBjYXN0IHRvIGNoYXIqIGZvciBw
b2ludGVyIGFyaXRobWV0aWNzLCB0aGUgY2FzdCB0bworICAgIC8vIERpZ2l0KiBpcyBwcm9wZXJs
eSBhbGlnbmVkLCB0aG91Z2ggdGhlIGNvbXBpbGVyIGRvZXNuJ3Qga25vdyBhYm91dCBpdCwKKyAg
ICAvLyB0aGVyZWZvcmUgd2UgZGlzYWJsZSB0aGlzIHdhcm5pbmcuCisgICAgSUdOT1JFX0NBU1Rf
QUxJR05fV0FSTklOR1NfQkVHSU4KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxEaWdpdCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZEYXRhKCkpOworICAgIElH
Tk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VORAogfQogCiBpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0
IEpTQmlnSW50OjpkaWdpdCh1bnNpZ25lZCBuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCmluZGV4IDhkODkxYmRkOGQzZWU4MjhkYmI5Yzc3
YTQ0MjRmYzU4MGMyZTRhNmQuLmI4NzM3ZjgwMDQwNmJhN2ZiOGYyYmEzNTlkYzkxZWVhZjEyZTdk
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1
dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gdG8gcG9pbnQgdG8gaXQu
IFRoaXMgZm9yY2VzIGNhbGxlcnMgdG8gaGF2ZSBhIENvZGVCbG9jayogaW4gYSByZWdpc3RlciBv
ciBvbiB0aGUgc3RhY2sgdGhhdCB3aWxsIGJlIG1hcmtlZAogICAgIC8vIGJ5IGNvbnNlcnZhdGl2
ZSBHQyBpZiBhIEdDIGhhcHBlbnMgYWZ0ZXIgd2UgY3JlYXRlIHRoZSBDb2RlQmxvY2suCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgotICAgIEpTT2JqZWN0KiBwcmVwYXJl
Rm9yRXhlY3V0aW9uKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spOworICAgIHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uKj4gcHJlcGFyZUZvckV4ZWN1dGlvbihWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3Bl
KiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKTsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGE0NjFlNzZlYzgwMTFhOWIy
Mzc4ZDZkNDI3NWQzMWFjMTIxMTA5Yy4uMjYyMTExNzY4OWE4OGUxZjQyYzVmZjMzMGJkN2ZhMDNi
Y2Y4NDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApA
QCAtMTQ2Myw4ICsxNDYzLDE2IEBAIHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21Bcmco
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9IG51
bGxwdHI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJs
b2NrID0gZnVuYy0+anNFeGVjdXRhYmxlKCktPmVpdGhlckNvZGVCbG9jaygpOwotICAgICAgICB9
IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhlcmUgaXQncyBPSyB0byBp
Z25vcmUgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgc2luY2UKKyAgICAgICAgICAgIC8vIGNh
bmRpZGF0ZUNvZGVCbG9jayB3aWxsIG9ubHkgYmUgYWNjZXNzZWQgaWYKKyAgICAgICAgICAgIC8v
IFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKCkgcmV0dXJucyB0cnVlLCB3aGljaCBvbmx5
IGhhcHBlbnMKKyAgICAgICAgICAgIC8vIGlmIHRoZSBhZGRyZXNzIGlzIHRoYXQgb2YgYSBrbm93
biBleGlzdGluZywgcHJvcGVybHkgYWxpZ25lZAorICAgICAgICAgICAgLy8gY29kZUJsb2NrLgor
ICAgICAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4KICAgICAgICAgICAg
IGNhbmRpZGF0ZUNvZGVCbG9jayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4odmFsdWUu
YXNDZWxsKCkpOworICAgICAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECisg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVj
dG9yOjppc1ZhbGlkQ29kZUJsb2NrKGV4ZWMsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIu
aAppbmRleCA3MWU2YjhlNmEwOGU1Mzc1NGUxNDhhOGU4MzkwNzk2ZDFjOWFhYzBhLi40YTMzYWMw
NzJjNjQ4OTVmNzYwYjY0Y2EwNTBjZDlkYzFjOGQ0OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Db21waWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTQ2NCw0
ICs0NjQsOCBAQAogI2RlZmluZSBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19CRUdJTiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogI2RlZmluZSBJR05PUkVfTlVMTF9DSEVDS19X
QVJOSU5HU19FTkQgSUdOT1JFX1dBUk5JTkdTX0VORAogCisjZGVmaW5lIElHTk9SRV9DQVNUX0FM
SUdOX1dBUk5JTkdTX0JFR0lOIElHTk9SRV9XQVJOSU5HU19CRUdJTigiY2FzdC1hbGlnbiIpCisj
ZGVmaW5lIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VORCBJR05PUkVfV0FSTklOR1NfRU5E
CisKKwogI2VuZGlmIC8qIFdURl9Db21waWxlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKaW5kZXggYTE0OWUxMDhkMTM3Yzk0MWU5
MDBiNTczZTk4ZmQzNWUxYjAxNGI5OC4uOGZkODAxNmU2YTA5YTRhOTAzMmQ2MWE5MjVlYjRlOWU0
MWMzNjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQ
YWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFn
ZUlubGluZXMuaApAQCAtMzksOCArMzksMTMgQEAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpJ
c29EaXJlY3RvcnlQYWdlKElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAsIHVuc2lnbmVkIGkKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogSXNvRGly
ZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2Vz
PiogcGF5bG9hZCkKIHsKKyAgICAvLyB0aGUgY2hhciAqIGNhc3QgaXMgb25seSB1c2VkIHRvIGRv
IGEgcG9pbnRlciBjYWxjdWxhdGlvbiwgYW5kIHNhaWQKKyAgICAvLyBjYWxjdWxhdGlvbiByZXN1
bHRzIGluIGEgcG9pbnRlciB0byBhbiBleGlzdGluZywgY29ycmVjdGx5IGFsaWduZWQKKyAgICAv
LyBJc29EaXJlY3RvcnlQYWdlLgorICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lO
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+Kj4o
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBheWxvYWQpIC0gQk9GRlNFVE9GKElz
b0RpcmVjdG9yeVBhZ2UsIHBheWxvYWQpKTsKKyAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5H
U19FTkQKIH0KIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29QYWdlSW5saW5lcy5oCmluZGV4IDBjNDc4NjRjN2I0OWEwZWVjOGEyNjEwY2VmNjdmYTMyOGE0
ZWY0YzQuLjNkZTFjNjhiOGE1Y2VjODllM2JlOTNmZTM0ZjYyNGEyN2JlODg3NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKQEAgLTE4OCw3ICsxODgsMTIgQEAgRnJl
ZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQogICAgICAgICBjaGFyKiBj
ZWxsQnl0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgaW5kZXggKiBDb25maWc6
Om9iamVjdFNpemU7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIlcDogcHV0dGluZyAlcCBvbiBmcmVlIGxpc3QuXG4iLCB0aGlzLCBjZWxsQnl0ZSk7
CisKKyAgICAgICAgc3RhdGljX2Fzc2VydCghKENvbmZpZzo6b2JqZWN0U2l6ZSAlIGFsaWdub2Yo
RnJlZUNlbGwpKSwgIkNvbmZpZzo6b2JqZWN0U2l6ZSBzaG91bGQgcmVzcGVjdCBhbGlnbm1lbnQg
b2YgRnJlZUNlbGwiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghKGFsaWdub2YoSXNvUGFnZTxD
b25maWc+KSAlIGFsaWdub2YoRnJlZUNlbGwpKSwgIkFsaWdubWVudCBvZiBJc29QYWdlPENvbmZp
Zz4gc2hvdWxkIG1hdGNoIHRoYXQgb2YgRnJlZUNlbGwiKTsKKyAgICAgICAgSUdOT1JFX0NBU1Rf
QUxJR05fV0FSTklOR1NfQkVHSU4KICAgICAgICAgRnJlZUNlbGwqIGNlbGwgPSByZWludGVycHJl
dF9jYXN0PEZyZWVDZWxsKj4oY2VsbEJ5dGUpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9X
QVJOSU5HU19FTkQKICAgICAgICAgY2VsbC0+c2V0TmV4dChoZWFkLCBzZWNyZXQpOwogICAgICAg
ICBoZWFkID0gY2VsbDsKICAgICAgICAgYnl0ZXMgKz0gQ29uZmlnOjpvYmplY3RTaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351282</attachid>
            <date>2018-10-01 11:55:36 -0700</date>
            <delta_ts>2018-10-01 13:06:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20181001205535.patch</filename>
            <type>text/plain</type>
            <size>24557</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmQ5YzUzMjE5OTdhMjNkMzkwMjQ1YTY3ZjkwMGUxODE3MTEyNzFjLi41MjNmOGEwZWIwODhjNmIz
MDJlMzAyOWE0YTMzN2VhM2JiNjA0N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wOS0xOSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOgorICAgICAgICBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZSBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YKKyAgICAgICAgdGhlIHNhbWUgc2l6ZSBhbmQgY2Fu
IGlnbm9yZSB0aGUgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6CisgICAgICAgIG1hcmtl
ZCBhcyBwb3RlbnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6CisgICAgICAg
IG1vZGlmaWVkRmxhZ3MgaXMgbm90IHVzZWQgb24gbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgTWFrZSBTY3JpcHRFeGVj
dXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKCkgcmV0dXJuIGFuCisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uKj4gaW5zdGVhZCBvZiBhIEpTT2JqZWN0Ki4KKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZU1v
ZHVsZVByb2dyYW0pOgorICAgICAgICBVcGRhdGUgY2FsbGluZyBjb2RlIGZvciB0aGUgcHJvdG90
eXBlIGNoYW5nZSBvZgorICAgICAgICBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0
aW9uKCkuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICBTYW1lIGFz
IGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIFBvaW50ZXIgYXJp
dGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9lc24ndCB1bmRlcnN0YW5kIHRoaXMs
CisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24KKyAgICAgICAgKiBydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5o
OgorICAgICAgICBNYWtlIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oKSBy
ZXR1cm4gYW4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBpbnN0ZWFkIG9mIGEg
SlNPYmplY3QqLgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlND
Ojpjb2RlQmxvY2tGcm9tQXJnKToKKyAgICAgICAgQWZ0ZXIgdGhlIGNhc3QsIGEgY2hlY2sgaXMg
ZG9uZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcG9pbnRlciBpcyB0byBhCisgICAgICAgIGtub3du
IENvZGVCbG9jayBiZWZvcmUgdXNpbmcgaXQsIHNvIGlmIHRoZSByZXN1bHQgaXMgYmFkbHkgYWxp
Z25lZCBpdAorICAgICAgICB3b24ndCBiZSB1c2VkIGFueXdheXMuCisKIDIwMTgtMTAtMDEgIEtv
YnkgQm95YW5nbyAgPGtvYnkuYkBtY2Utc3lzLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgYSBK
U09OU3RyaW5naWZ5IG92ZXJsb2FkIHRoYXQgcmVjZWl2ZXMgYSBKU1ZhbHVlIHNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA3ZDgyZGQ3OTU4NmY1NWVjMTFhNWE1Y2NmYmMxNzIyMWI5MTAyZDEuLjc4ZGM1Zjc4OGE2OTkx
YWFkMjU2ZDM1ZWU5NzczM2MyYzRlMDA5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDkt
MTkgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtK
U0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIElHTk9SRV9DQVNUX0FMSUdO
X1dBUk5JTkdTX0JFR0lOL19FTkQgbWFjcm9zIHRvIGJlIGFibGUgdG8KKyAgICAgICAgc2ltcGx5
IGlnbm9yZSB3YXJuaW5ncyBvbiBub24tcmVzcGVjdCBvZiBhbGlnbm1lbnQgaW4gY2FzdHMgZm9y
IGEgd2VsbAorICAgICAgICBkZWZpbmVkIGNvZGUgc3Vic2V0LgorCisgICAgICAgICogd3RmL0Nv
bXBpbGVyLmg6CisKIDIwMTgtMTAtMDEgIEtvYnkgQm95YW5nbyAgPGtvYnkuYkBtY2Utc3lzLmNv
bT4KIAogICAgICAgICBbV1RGXVtKU0NPTkxZXSBVc2UgTWFpblRocmVhZFdpbiBvbiBXaW5kb3dz
IGluIHRoZSBKU0NPbmx5IHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCA3ODU0NTVmYTVkYmQzNWEzODM2Nzdj
YzY3YWE2NjAzNGRiZGFhOTA0Li5jZGZkNWM4N2I0MDA2NGY4Yzk0YzJmMTE2MmI0ZTliZDRlZDc1
MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2Jt
YWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDktMTkgIEd1aWxsYXVtZSBF
bW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mg
d2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTi9F
TkQgdG8gYWxsb3cgc29tZSBjYXN0cyBhZnRlcgorICAgICAgICBwb2ludGVyIGNhbGN1bGF0aW9u
cyB3aXRob3V0IHRyaWdnZXJpbmcgYWxpZ25tZW50IHdhcm5pbmdzIG9uIG1pcHMgYW5kCisgICAg
ICAgIGFybXY3LgorCisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5o
OgorICAgICAgICAoYm1hbGxvYzo6SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKToK
KyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJ
c29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZyk6CisKIDIwMTgtMDktMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBbGxvdyBmb3Ig
c3VmZml4ZXMgdG8gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAK
aW5kZXggM2VkNjRiOTBiYTVmYmM5M2IyYzk5MmI0MGVjMjFmMDcxMGQxNWRkNy4uNjQ4MDgxYTdl
NDUyMmY1YTkwZTk5YTc2MTQ3NmNhYjYxODM2OWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcApAQCAt
MTM3LDYgKzEzNywxMCBAQCB2b2lkIHByaW50TWVtb3J5KFByaW50U3RyZWFtJiBvdXQsIENvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcDo8MHglMDJ4ICVkPiIsIHAs
ICpwLCAqcCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgLy8gYXNz
dW1pbmcgbWVtb3J5IGlzIG5vdCBtYWxmb3JtZWQsIGl0IG9yaWdpbmFsbHkgcG9pbnRlZCB0byBh
IHZhbHVlCisgICAgICAgIC8vIG9mIHRoZSByZXF1aXJlZCBzaXplLCB3aGljaCBzaG91bGQgYWxy
ZWFkeSBiZSBwcm9wZXJseSBhbGlnbmVkIG9uCisgICAgICAgIC8vIHBsYXRmb3JtcyB0aGF0IHJl
cXVpcmUgaXQuCisgICAgICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAg
ICAgIGlmIChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7CiAgICAgICAgICAg
ICBhdXRvIHAgPSByZWludGVycHJldF9jYXN0PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXA6PDB4JTA0eCAlZD4iLCBwLCAqcCwgKnApOwpAQCAtMTUyLDYgKzE1Niw3
IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwMTYiIFBSSXg2NCAiICUiIFBSSWQ2NCAi
PiIsIHAsICpwLCAqcCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAg
SUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECiAgICAgICAgIC8vIEVsc2UsIHVua25vd24g
d29yZCBzaXplLiBGYWxsIHRocnUgYW5kIGR1bXAgaW4gdGhlIGdlbmVyaWMgd2F5LgogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAx
ZDc3ZDgwOGJjMGExZjA5YzFiZTEyODAwYzk0MTlhYTcxYTZhZWJkLi40YzU0YzVhMjNkNGJjNWI0
NmJlMDQ5ZTRiZTQ3MmYxZDJlMzZkYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBWZWN0b3I8ZG91
YmxlPiBkb3VibGVPcGVyYW5kcygpCiB9CiAKIAotc3RhdGljIFZlY3RvcjxmbG9hdD4gZmxvYXRP
cGVyYW5kcygpCitzdGF0aWMgVmVjdG9yPGZsb2F0PiBVTlVTRURfRlVOQ1RJT04gZmxvYXRPcGVy
YW5kcygpCiB7CiAgICAgcmV0dXJuIFZlY3RvcjxmbG9hdD4gewogICAgICAgICAwLApAQCAtNzQ3
LDcgKzc0Nyw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgQ1BV
U3RhdGUgb3JpZ2luYWxTdGF0ZTsKICAgICB2b2lkKiBvcmlnaW5hbFNQIHsgbnVsbHB0ciB9Owog
ICAgIHZvaWQqIG5ld1NQIHsgbnVsbHB0ciB9OworI2lmICEoQ1BVKE1JUFMpKQogICAgIHVpbnRw
dHJfdCBtb2RpZmllZEZsYWdzIHsgMCB9OworI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mRXh0
cmFFbnRyaWVzVG9Xcml0ZSB7IDEwIH07IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAy
IHdvcmQgYWxpZ25lZC4KIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMzk2MjU3Njg5MjkyOTBmY2Zm
YWE2YTg5NDhjNzU1MDhlOTgxYjBhZS4uMmRkMWZhYjg4Nzg2YjhlNzA3YmQ5ZWI2ZTc0MTNjZDY1
NDY3Zjc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApA
QCAtMTA0OCw3ICsxMDQ4LDcgQEAgaW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnVuY2hlY2tl
ZFIoVmlydHVhbFJlZ2lzdGVyIHJlZykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1dGFi
bGVUeXBlPgotSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24o
Vk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKQorc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24qPiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKFZN
JiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jaykKIHsKICAgICBpZiAo
aGFzSklUQ29kZUZvcihraW5kKSkgewogICAgICAgICBpZiAoc3RkOjppc19zYW1lPEV4ZWN1dGFi
bGVUeXBlLCBFdmFsRXhlY3V0YWJsZT46OnZhbHVlKQpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgSlNP
YmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiwgSlMKICAgICAgICAgICAgIHJlc3VsdENvZGVCbG9jayA9IGpzQ2Fz
dDxDb2RlQmxvY2sqPihqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPmNvZGVCbG9j
a0ZvcihraW5kKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4gcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwodm0s
IGZ1bmN0aW9uLCBzY29wZSwga2luZCwgcmVzdWx0Q29kZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJiYzY5
ZGI2OWIxZTdmOTg0NGMyNzgxNDY5MmUwYjBkZjNmZGQ3ZmYuLmRjYzFmNjcxMzZkMjUyNjVhYWQ3
YzdiMmM0OWEyNTQwOGU1MmM3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtODA5LDEwICs4MDksMTEgQEAgZmFpbGVkSlNP
TlA6CiAgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrOwogICAgIHsKICAgICAgICAgQ29k
ZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2Nv
cGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4o
ZXJyb3IpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBlcnJvciA9IHByb2dy
YW0tPnByZXBhcmVGb3JFeGVjdXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBz
Y29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBFWENFUFRJT05fQVNT
RVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwor
CiAgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybigqZXJyb3Ip
OwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2Rl
QmxvY2spOwogICAgIH0KIApAQCAtODY3LDEwICs4NjgsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbFQKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxs
ZWU6Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5qcy5mdW5jdGlv
bkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwg
anNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29k
ZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
ID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gY29tcGlsZUVycm9yID0gY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
dm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwgQ29kZUZvckNhbGwsIG5l
d0NvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRp
b24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
Y29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKCpjb21waWxl
RXJyb3IpOwogCiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0Nv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTkzNCwxMCArOTM1
LDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkg
ewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0KiBjb21w
aWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNv
bnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7Ci0gICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJl
dF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbio+IGNvbXBpbGVFcnJvciA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVjdCwgbmV3
Q29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IGNvbXBpbGVFcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChVTkxJ
S0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihj
b21waWxlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBpbGVF
cnJvcik7CiAKICAgICAgICAgQVNTRVJUKCEhbmV3Q29kZUJsb2NrKTsKICAgICAgICAgbmV3Q29k
ZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtOTgyLDggKzk4Myw4
IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FCiAKICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6
CiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7Ci0gICAgSlNPYmplY3QqIGVycm9yID0gZnVu
Y3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
dm0sIGZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7Ci0gICAgRVhD
RVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9y
ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7Cisg
ICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVl
X29yKG51bGxwdHIpKTsKICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lQ2xvc3VyZSgpOwogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQgPSBmYWxzZTsKQEAgLTEwNDAsMTAgKzEwNDEsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUKICAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2Rl
QmxvY2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBl
dmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2YWxFeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2Nv
cGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4o
Y29tcGlsZUVycm9yKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gY29tcGls
ZUVycm9yID0gZXZhbC0+cHJlcGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4odm0sIG51
bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVf
b3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKCpjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sg
PSBqc0Nhc3Q8RXZhbENvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTE2
MywxMCArMTE2NCwxMCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3Jh
bShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQwogICAgIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENv
ZGVCbG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBz
Y29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNT
RVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24q
Pihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBjb21w
aWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2Nr
KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNv
bXBpbGVFcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNv
bXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBpbGVFcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENv
ZGVCbG9jayk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCBmZDQyNWQ4MGVjM2Y3ZWNkZDM1ZTYwMzMzZjMwMjczNWJjOWY4MmE5Li4w
YmExZmJiYTdhOTFmYTk2N2NjNDc4NDc1MjNjOGVkNGM4NzA0MTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwNDQsOCArMTA0NCw4IEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0
ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBj
b2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAg
IEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlv
bjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9j
a1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkg
PT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAq
Y29kZUJsb2NrU2xvdCk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNl
cHRpb24oKSA9PSBlcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChlcnJvcikK
ICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAgICAgICBjb2Rl
QmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKQEAgLTExMDAsOCArMTEwMCw4IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5r
SW5mbyogY2FsbExpCiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdCk7CiAgICAgICAgIAotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxl
Pigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElP
Tl9BU1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVp
bnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0
aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2RlQmxv
Y2spOworICAgICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICAgICAgaWYg
KGVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0
YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwpAQCAtMTE1MCw4ICsx
MTUwLDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KAogICAgICAgICB9CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWND
YWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxl
Pigqdm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBF
WENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2Fz
dDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+
IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9u
RXhlY3V0YWJsZT4oKnZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsK
KyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9y
LnZhbHVlX29yKG51bGxwdHIpKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93
RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQ
dHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGMxYzJjNjc0NmFlM2E1NTdmY2EzZTRkZDdm
OWRhNGRlN2EyMzkzZGEuLjcxNzkzMzNhYTZkNDAzOThjNjI0ZTAxN2ZhMWQ2YTQxOTQ5N2FiOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtMTQ4NSwxMCArMTQ4NSwxMCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZQogICAgICAgICAg
ICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVj
LCBjYWxsZWUpKTsKIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0Nh
bGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7Ci0gICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvcik7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBh
cmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2lu
ZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkgPT0gZXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoZXJyb3IpKQotICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBlcnJvcik7
CisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsICplcnJvcik7CiAgICAgICAgIGNv
ZGVCbG9jayA9ICpjb2RlQmxvY2tTbG90OwogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAg
ICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKaW5kZXggZDE1YTMzYzNlMGJkMDA5MzJmMWExMzM1Y2Y1MjE5NTUwNzRl
ZmYwYS4uNWYyOWNhYmNhNWVmY2ZjNjRmMTRkZDM4Zjg0MTQyMWJjZDYwZDkzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTQ1Miw3ICsxNDUyLDEz
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsCiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQqIEpT
QmlnSW50OjpkYXRhU3RvcmFnZSgpCiB7CisgICAgLy8gb2Zmc2V0T2ZEYXRhKCkgbWFrZXMgc3Vy
ZSB0aGF0IGl0cyByZXR1cm4gdmFsdWUgaXMgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZgorICAgIC8v
IERpZ2l0LCBzbyBldmVuIHRob3VnaCB3ZSBjYXN0IHRvIGNoYXIqIGZvciBwb2ludGVyIGFyaXRo
bWV0aWNzLCB0aGUgY2FzdCB0bworICAgIC8vIERpZ2l0KiBpcyBwcm9wZXJseSBhbGlnbmVkLCB0
aG91Z2ggdGhlIGNvbXBpbGVyIGRvZXNuJ3Qga25vdyBhYm91dCBpdCwKKyAgICAvLyB0aGVyZWZv
cmUgd2UgZGlzYWJsZSB0aGlzIHdhcm5pbmcuCisgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklO
R1NfQkVHSU4KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxEaWdpdCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZEYXRhKCkpOworICAgIElHTk9SRV9DQVNUX0FM
SUdOX1dBUk5JTkdTX0VORAogfQogCiBpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50Ojpk
aWdpdCh1bnNpZ25lZCBuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCA2MWUxMDZjMmEyNDU0NjFhYzdlM2Q1YjRmZTdkYzBm
ZTk1MGM4NDEwLi44ZDE2ZmU5ZDBlYTg2OTBjZWY1YTMzMzg5ZDUwMWQzODUxOGM3YmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cApAQCAtMzM4LDcgKzMzOCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2bSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAjZW5kaWYKIH0KIAotSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6
OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBTY3Jp
cHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICBWTSYgdm0sIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spCiB7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgSlNPYmplY3Qq
IFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiAgICAgaWYgKHZt
LmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkgewogICAgICAgICBhdXRvJiBzdGF0
ZSA9ICpzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUs
ICJGb3JjZWQgRmFpbHVyZSJfcykpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24gKj4oYml0d2lzZV9jYXN0PEV4Y2VwdGlvbio+KHRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCAiRm9yY2VkIEZhaWx1cmUiX3MpKSkpOwog
ICAgIH0KIAogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBudWxscHRyOwpAQCAtMzU0LDcgKzM1
NCw3IEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1w
bCgKICAgICByZXN1bHRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gIWNvZGVCbG9jayk7CiAgICAgaWYgKFVOTElL
RUxZKCFjb2RlQmxvY2spKQotICAgICAgICByZXR1cm4gZXhjZXB0aW9uOworICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxFeGNlcHRpb24gKj4oYml0d2lzZV9jYXN0PEV4Y2VwdGlvbio+KGV4
Y2VwdGlvbikpOwogICAgIAogICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUJ5dGVjb2RlKCkpCiAg
ICAgICAgIGNvZGVCbG9jay0+dmFsaWRhdGUoKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBKU09iamVj
dCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAgICAgICAgIHNl
dHVwSklUKHZtLCBjb2RlQmxvY2spOwogICAgIAogICAgIGluc3RhbGxDb2RlKHZtLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+Y29kZVR5cGUoKSwgY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQo
KSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
Q29kZUJsb2NrSGFzaCBTY3JpcHRFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuaAppbmRleCA4ZDg5MWJkZDhkM2VlODI4ZGJiOWM3N2E0NDI0ZmM1ODBj
MmU0YTZkLi43Yjc2NTk4ZDJiNzI5NWI0ZGY5NDBiNDFmY2NkZGI0MDgxOTY5Y2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC0x
MDUsMTEgKzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gdG8gcG9pbnQgdG8gaXQuIFRoaXMgZm9y
Y2VzIGNhbGxlcnMgdG8gaGF2ZSBhIENvZGVCbG9jayogaW4gYSByZWdpc3RlciBvciBvbiB0aGUg
c3RhY2sgdGhhdCB3aWxsIGJlIG1hcmtlZAogICAgIC8vIGJ5IGNvbnNlcnZhdGl2ZSBHQyBpZiBh
IEdDIGhhcHBlbnMgYWZ0ZXIgd2UgY3JlYXRlIHRoZSBDb2RlQmxvY2suCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgotICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0
aW9uKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBD
b2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
Kj4gcHJlcGFyZUZvckV4ZWN1dGlvbihWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKTsKIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7Ci0gICAgSlNPYmplY3QqIHByZXBh
cmVGb3JFeGVjdXRpb25JbXBsKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqJik7CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24q
PiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU2Ny
aXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rp
b25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIEludHJpbnNpYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGE0NjFlNzZlYzgwMTFhOWIyMzc4ZDZk
NDI3NWQzMWFjMTIxMTA5Yy4uMjYyMTExNzY4OWE4OGUxZjQyYzVmZjMzMGJkN2ZhMDNiY2Y4NDgy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMTQ2
Myw4ICsxNDYzLDE2IEBAIHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9IG51bGxwdHI7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0g
ZnVuYy0+anNFeGVjdXRhYmxlKCktPmVpdGhlckNvZGVCbG9jaygpOwotICAgICAgICB9IGVsc2UK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhlcmUgaXQncyBPSyB0byBpZ25vcmUg
dGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgc2luY2UKKyAgICAgICAgICAgIC8vIGNhbmRpZGF0
ZUNvZGVCbG9jayB3aWxsIG9ubHkgYmUgYWNjZXNzZWQgaWYKKyAgICAgICAgICAgIC8vIFZNSW5z
cGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKCkgcmV0dXJucyB0cnVlLCB3aGljaCBvbmx5IGhhcHBl
bnMKKyAgICAgICAgICAgIC8vIGlmIHRoZSBhZGRyZXNzIGlzIHRoYXQgb2YgYSBrbm93biBleGlz
dGluZywgcHJvcGVybHkgYWxpZ25lZAorICAgICAgICAgICAgLy8gY29kZUJsb2NrLgorICAgICAg
ICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4KICAgICAgICAgICAgIGNhbmRp
ZGF0ZUNvZGVCbG9jayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4odmFsdWUuYXNDZWxs
KCkpOworICAgICAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECisgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjpp
c1ZhbGlkQ29kZUJsb2NrKGV4ZWMsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRl
eCBmYjE4OThkMmIzZjAzNGZjMDczY2I2NWMyOGI3YjMzNzA5Yjg0YzE0Li5iNjBmODEwMGVhYzRi
NDI1ZDQ4ZGExMzcwMDFkM2MwYzE0MGY2MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTQ2MCw0ICs0NjAs
OCBAQAogI2RlZmluZSBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19CRUdJTiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oIm5vbm51bGwiKQogI2RlZmluZSBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5H
U19FTkQgSUdOT1JFX1dBUk5JTkdTX0VORAogCisjZGVmaW5lIElHTk9SRV9DQVNUX0FMSUdOX1dB
Uk5JTkdTX0JFR0lOIElHTk9SRV9XQVJOSU5HU19CRUdJTigiY2FzdC1hbGlnbiIpCisjZGVmaW5l
IElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0VORCBJR05PUkVfV0FSTklOR1NfRU5ECisKKwog
I2VuZGlmIC8qIFdURl9Db21waWxlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmgKaW5kZXggYTE0OWUxMDhkMTM3Yzk0MWU5MDBiNTcz
ZTk4ZmQzNWUxYjAxNGI5OC4uOGZkODAxNmU2YTA5YTRhOTAzMmQ2MWE5MjVlYjRlOWU0MWMzNjA4
MyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGlu
ZXMuaApAQCAtMzksOCArMzksMTMgQEAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpJc29EaXJl
Y3RvcnlQYWdlKElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAsIHVuc2lnbmVkIGkKIHRlbXBsYXRl
PHR5cGVuYW1lIENvbmZpZz4KIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogSXNvRGlyZWN0b3J5
UGFnZTxDb25maWc+OjpwYWdlRm9yKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzPiogcGF5
bG9hZCkKIHsKKyAgICAvLyB0aGUgY2hhciAqIGNhc3QgaXMgb25seSB1c2VkIHRvIGRvIGEgcG9p
bnRlciBjYWxjdWxhdGlvbiwgYW5kIHNhaWQKKyAgICAvLyBjYWxjdWxhdGlvbiByZXN1bHRzIGlu
IGEgcG9pbnRlciB0byBhbiBleGlzdGluZywgY29ycmVjdGx5IGFsaWduZWQKKyAgICAvLyBJc29E
aXJlY3RvcnlQYWdlLgorICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+Kj4oCiAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBheWxvYWQpIC0gQk9GRlNFVE9GKElzb0RpcmVj
dG9yeVBhZ2UsIHBheWxvYWQpKTsKKyAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQK
IH0KIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29QYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdl
SW5saW5lcy5oCmluZGV4IDBjNDc4NjRjN2I0OWEwZWVjOGEyNjEwY2VmNjdmYTMyOGE0ZWY0YzQu
LjNkZTFjNjhiOGE1Y2VjODllM2JlOTNmZTM0ZjYyNGEyN2JlODg3NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKQEAgLTE4OCw3ICsxODgsMTIgQEAgRnJlZUxpc3Qg
SXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQogICAgICAgICBjaGFyKiBjZWxsQnl0
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgaW5kZXggKiBDb25maWc6Om9iamVj
dFNpemU7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIlcDogcHV0dGluZyAlcCBvbiBmcmVlIGxpc3QuXG4iLCB0aGlzLCBjZWxsQnl0ZSk7CisKKyAg
ICAgICAgc3RhdGljX2Fzc2VydCghKENvbmZpZzo6b2JqZWN0U2l6ZSAlIGFsaWdub2YoRnJlZUNl
bGwpKSwgIkNvbmZpZzo6b2JqZWN0U2l6ZSBzaG91bGQgcmVzcGVjdCBhbGlnbm1lbnQgb2YgRnJl
ZUNlbGwiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghKGFsaWdub2YoSXNvUGFnZTxDb25maWc+
KSAlIGFsaWdub2YoRnJlZUNlbGwpKSwgIkFsaWdubWVudCBvZiBJc29QYWdlPENvbmZpZz4gc2hv
dWxkIG1hdGNoIHRoYXQgb2YgRnJlZUNlbGwiKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05f
V0FSTklOR1NfQkVHSU4KICAgICAgICAgRnJlZUNlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0
PEZyZWVDZWxsKj4oY2VsbEJ5dGUpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5H
U19FTkQKICAgICAgICAgY2VsbC0+c2V0TmV4dChoZWFkLCBzZWNyZXQpOwogICAgICAgICBoZWFk
ID0gY2VsbDsKICAgICAgICAgYnl0ZXMgKz0gQ29uZmlnOjpvYmplY3RTaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351289</attachid>
            <date>2018-10-01 13:06:46 -0700</date>
            <delta_ts>2018-10-10 11:22:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20181001220645.patch</filename>
            <type>text/plain</type>
            <size>24998</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmQ5YzUzMjE5OTdhMjNkMzkwMjQ1YTY3ZjkwMGUxODE3MTEyNzFjLi41MjNmOGEwZWIwODhjNmIz
MDJlMzAyOWE0YTMzN2VhM2JiNjA0N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wOS0xOSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9z
dGx5CisgICAgICAgIGFsaWdubWVudCBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1v
cnkpOgorICAgICAgICBhIE1lbW9yeSBrZWVwcyBzaXplIGluZm9ybWF0aW9uLCBzbyB3ZSBrbm93
IHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgb2YKKyAgICAgICAgdGhlIHNhbWUgc2l6ZSBhbmQgY2Fu
IGlnbm9yZSB0aGUgLVdjYXN0LWFsaWduIHdhcm5pbmcuCisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxvYXRPcGVyYW5kcyk6CisgICAgICAgIG1hcmtl
ZCBhcyBwb3RlbnRpYWxseSB1bnVzZWQgYXMgaXQgaXMgbm90IHVzZWQgb24gYWxsIHBsYXRmb3Jt
cy4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6CisgICAgICAg
IG1vZGlmaWVkRmxhZ3MgaXMgbm90IHVzZWQgb24gbWlwcywgc28gZG9uJ3QgZGVjbGFyZSBpdC4K
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgTWFrZSBTY3JpcHRFeGVj
dXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKCkgcmV0dXJuIGFuCisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uKj4gaW5zdGVhZCBvZiBhIEpTT2JqZWN0Ki4KKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZU1v
ZHVsZVByb2dyYW0pOgorICAgICAgICBVcGRhdGUgY2FsbGluZyBjb2RlIGZvciB0aGUgcHJvdG90
eXBlIGNoYW5nZSBvZgorICAgICAgICBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0
aW9uKCkuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICBTYW1lIGFz
IGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIFBvaW50ZXIgYXJp
dGhtZXRpY3MgZG9uZSBjb3JyZWN0bHksIGJ1dCBnY2MgZG9lc24ndCB1bmRlcnN0YW5kIHRoaXMs
CisgICAgICAgIHNvIHdlIGlnbm9yZSAtV2Nhc3QtYWxpZ24KKyAgICAgICAgKiBydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5o
OgorICAgICAgICBNYWtlIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oKSBy
ZXR1cm4gYW4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBpbnN0ZWFkIG9mIGEg
SlNPYmplY3QqLgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlND
Ojpjb2RlQmxvY2tGcm9tQXJnKToKKyAgICAgICAgQWZ0ZXIgdGhlIGNhc3QsIGEgY2hlY2sgaXMg
ZG9uZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcG9pbnRlciBpcyB0byBhCisgICAgICAgIGtub3du
IENvZGVCbG9jayBiZWZvcmUgdXNpbmcgaXQsIHNvIGlmIHRoZSByZXN1bHQgaXMgYmFkbHkgYWxp
Z25lZCBpdAorICAgICAgICB3b24ndCBiZSB1c2VkIGFueXdheXMuCisKIDIwMTgtMTAtMDEgIEtv
YnkgQm95YW5nbyAgPGtvYnkuYkBtY2Utc3lzLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgYSBK
U09OU3RyaW5naWZ5IG92ZXJsb2FkIHRoYXQgcmVjZWl2ZXMgYSBKU1ZhbHVlIHNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA3ZDgyZGQ3OTU4NmY1NWVjMTFhNWE1Y2NmYmMxNzIyMWI5MTAyZDEuLjc4ZGM1Zjc4OGE2OTkx
YWFkMjU2ZDM1ZWU5NzczM2MyYzRlMDA5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDkt
MTkgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtK
U0NdIFJlbW92ZSBnY2Mgd2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIElHTk9SRV9DQVNUX0FMSUdO
X1dBUk5JTkdTX0JFR0lOL19FTkQgbWFjcm9zIHRvIGJlIGFibGUgdG8KKyAgICAgICAgc2ltcGx5
IGlnbm9yZSB3YXJuaW5ncyBvbiBub24tcmVzcGVjdCBvZiBhbGlnbm1lbnQgaW4gY2FzdHMgZm9y
IGEgd2VsbAorICAgICAgICBkZWZpbmVkIGNvZGUgc3Vic2V0LgorCisgICAgICAgICogd3RmL0Nv
bXBpbGVyLmg6CisKIDIwMTgtMTAtMDEgIEtvYnkgQm95YW5nbyAgPGtvYnkuYkBtY2Utc3lzLmNv
bT4KIAogICAgICAgICBbV1RGXVtKU0NPTkxZXSBVc2UgTWFpblRocmVhZFdpbiBvbiBXaW5kb3dz
IGluIHRoZSBKU0NPbmx5IHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCA3ODU0NTVmYTVkYmQzNWEzODM2Nzdj
YzY3YWE2NjAzNGRiZGFhOTA0Li5jZGZkNWM4N2I0MDA2NGY4Yzk0YzJmMTE2MmI0ZTliZDRlZDc1
MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2Jt
YWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDktMTkgIEd1aWxsYXVtZSBF
bW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBnY2Mg
d2FybmluZ3Mgb24gbWlwcyBhbmQgYXJtdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19CRUdJTi9F
TkQgdG8gYWxsb3cgc29tZSBjYXN0cyBhZnRlcgorICAgICAgICBwb2ludGVyIGNhbGN1bGF0aW9u
cyB3aXRob3V0IHRyaWdnZXJpbmcgYWxpZ25tZW50IHdhcm5pbmdzIG9uIG1pcHMgYW5kCisgICAg
ICAgIGFybXY3LgorCisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5o
OgorICAgICAgICAoYm1hbGxvYzo6SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKToK
KyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJ
c29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZyk6CisKIDIwMTgtMDktMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBbGxvdyBmb3Ig
c3VmZml4ZXMgdG8gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAK
aW5kZXggM2VkNjRiOTBiYTVmYmM5M2IyYzk5MmI0MGVjMjFmMDcxMGQxNWRkNy4uMjg2MmVjNzA0
NGNhMTY4NmI4MzgzYTEwYmYwNTcyMzY0NjE1NGFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcApAQCAt
MTM3LDE4ICsxMzcsMjEgQEAgdm9pZCBwcmludE1lbW9yeShQcmludFN0cmVhbSYgb3V0LCBDb250
ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTAyeCAlZD4iLCBw
LCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIC8vIGFz
c3VtaW5nIG1lbW9yeSBpcyBub3QgbWFsZm9ybWVkLCBpdCBvcmlnaW5hbGx5IHBvaW50ZWQgdG8g
YSB2YWx1ZQorICAgICAgICAvLyBvZiB0aGUgcmVxdWlyZWQgc2l6ZSwgd2hpY2ggc2hvdWxkIGFs
cmVhZHkgYmUgcHJvcGVybHkgYWxpZ25lZCBvbgorICAgICAgICAvLyBwbGF0Zm9ybXMgdGhhdCBy
ZXF1aXJlIGl0LgogICAgICAgICBpZiAobWVtb3J5Lm51bUJ5dGVzID09IHNpemVvZihpbnQxNl90
KSkgewotICAgICAgICAgICAgYXV0byBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQxNl90Kj4ocHRy
KTsKKyAgICAgICAgICAgIGF1dG8gcCA9IGJpdHdpc2VfY2FzdDxpbnQxNl90Kj4ocHRyKTsKICAg
ICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwNHggJWQ+IiwgcCwgKnAsICpwKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobWVtb3J5Lm51bUJ5dGVzID09
IHNpemVvZihpbnQzMl90KSkgewotICAgICAgICAgICAgYXV0byBwID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4ocHRyKTsKKyAgICAgICAgICAgIGF1dG8gcCA9IGJpdHdpc2VfY2FzdDxpbnQz
Ml90Kj4ocHRyKTsKICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjwweCUwOHggJWQ+IiwgcCwg
KnAsICpwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobWVt
b3J5Lm51bUJ5dGVzID09IHNpemVvZihpbnQ2NF90KSkgewotICAgICAgICAgICAgYXV0byBwID0g
cmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90Kj4ocHRyKTsKKyAgICAgICAgICAgIGF1dG8gcCA9IGJp
dHdpc2VfY2FzdDxpbnQ2NF90Kj4ocHRyKTsKICAgICAgICAgICAgIG91dC5wcmludGYoIiVwOjww
eCUwMTYiIFBSSXg2NCAiICUiIFBSSWQ2NCAiPiIsIHAsICpwLCAqcCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggMWQ3N2Q4MDhiYzBhMWYwOWMxYmUxMjgwMGM5NDE5YWE3MWE2YWViZC4u
NGM1NGM1YTIzZDRiYzViNDZiZTA0OWU0YmU0NzJmMWQyZTM2ZGE3YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBz
dGF0aWMgVmVjdG9yPGRvdWJsZT4gZG91YmxlT3BlcmFuZHMoKQogfQogCiAKLXN0YXRpYyBWZWN0
b3I8ZmxvYXQ+IGZsb2F0T3BlcmFuZHMoKQorc3RhdGljIFZlY3RvcjxmbG9hdD4gVU5VU0VEX0ZV
TkNUSU9OIGZsb2F0T3BlcmFuZHMoKQogewogICAgIHJldHVybiBWZWN0b3I8ZmxvYXQ+IHsKICAg
ICAgICAgMCwKQEAgLTc0Nyw3ICs3NDcsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tW
YWx1ZXMoKQogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CiAgICAgdm9pZCogb3JpZ2luYWxT
UCB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBuZXdTUCB7IG51bGxwdHIgfTsKKyNpZiAhKENQVShN
SVBTKSkKICAgICB1aW50cHRyX3QgbW9kaWZpZWRGbGFncyB7IDAgfTsKKyNlbmRpZgogICAgIHNp
emVfdCBudW1iZXJPZkV4dHJhRW50cmllc1RvV3JpdGUgeyAxMCB9OyAvLyBBUk02NCByZXF1aXJl
cyB0aGF0IHRoaXMgYmUgMiB3b3JkIGFsaWduZWQuCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDM5
NjI1NzY4OTI5MjkwZmNmZmFhNmE4OTQ4Yzc1NTA4ZTk4MWIwYWUuLjJkZDFmYWI4ODc4NmI4ZTcw
N2JkOWViNmU3NDEzY2Q2NTQ2N2Y3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTEwNDgsNyArMTA0OCw3IEBAIGlubGluZSBSZWdpc3RlciYgRXhl
Y1N0YXRlOjp1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlciByZWcpCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFeGVjdXRhYmxlVHlwZT4KLUpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTU2NvcGUqIHNj
b3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVC
bG9jaykKK3N0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFy
ZUZvckV4ZWN1dGlvbihWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29w
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxv
Y2spCiB7CiAgICAgaWYgKGhhc0pJVENvZGVGb3Ioa2luZCkpIHsKICAgICAgICAgaWYgKHN0ZDo6
aXNfc2FtZTxFeGVjdXRhYmxlVHlwZSwgRXZhbEV4ZWN1dGFibGU+Ojp2YWx1ZSkKQEAgLTEwNjEs
NyArMTA2MSw3IEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0
aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTCiAgICAgICAgICAgICByZXN1bHRD
b2RlQmxvY2sgPSBqc0Nhc3Q8Q29kZUJsb2NrKj4oanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KHRoaXMpLT5jb2RlQmxvY2tGb3Ioa2luZCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIHByZXBhcmVGb3JF
eGVjdXRpb25JbXBsKHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsIHJlc3VsdENvZGVCbG9jayk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAppbmRleCBiYmM2OWRiNjliMWU3Zjk4NDRjMjc4MTQ2OTJlMGIwZGYzZmRkN2ZmLi5kY2Mx
ZjY3MTM2ZDI1MjY1YWFkN2M3YjJjNDlhMjU0MDhlNTJjNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTgwOSwxMCArODA5
LDExIEBAIGZhaWxlZEpTT05QOgogICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAg
ICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNPYmplY3Qq
IGVycm9yID0gcHJvZ3JhbS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0YWJsZT4o
dm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Ci0gICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9j
YXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
Kj4gZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxl
Pih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAg
ICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVl
X29yKG51bGxwdHIpKTsKKwogICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4oKmVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PFByb2dyYW1Db2Rl
QmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKICAgICB9CiAKQEAgLTg2NywxMCArODY4LDEwIEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09i
amVjdCogZnVuY3Rpb24sIENhbGxUCiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAgLy8g
Q29tcGlsZSB0aGUgY2FsbGVlOgotICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY2Fs
bERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9u
RXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwgQ29k
ZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVF
cnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGNvbXBpbGVFcnJvciA9
IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwgc2NvcGUs
IENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gY29tcGlsZUVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybigqY29tcGlsZUVycm9yKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2sp
OwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7
CkBAIC05MzQsMTAgKzkzNSwxMCBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25z
dHJ1Y3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1YwogCiAgICAgaWYg
KGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgotICAgICAg
ICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0
PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciksIHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdD
b2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVG
b3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhy
b3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKCpjb21waWxlRXJyb3IpOwogCiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7
CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsK
QEAgLTk4Miw4ICs5ODMsOCBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJl
Rm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRQogCiAgICAgLy8gQ29t
cGlsZSB0aGUgY2FsbGVlOgogICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrOwotICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2Rl
QmxvY2spOwotICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBy
ZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24qPiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlv
bjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOworICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24o
KSA9PSBlcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkK
ICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICBuZXdDb2RlQmxvY2stPm1f
c2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDQwLDEwICsxMDQxLDEwIEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrOwogICAg
IHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwotICAgICAgICBKU09iamVjdCog
Y29tcGlsZUVycm9yID0gZXZhbC0+cHJlcGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4o
dm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Ci0gICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9j
YXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbio+IGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb248RXZhbEV4
ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2sp
OworICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gY29t
cGlsZUVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29t
cGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJv
cik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybigqY29tcGlsZUVycm9yKTsKICAg
ICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsK
ICAgICB9CiAKQEAgLTExNjMsMTAgKzExNjQsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEMK
ICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBD
b2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3Ig
PSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
Pih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKLSAgICAg
ICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0
X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uKj4gY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlv
bjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2Fs
bCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5l
eGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKCpj
b21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZmQ0MjVkODBlYzNmN2VjZGQzNWU2MDMzM2Yz
MDI3MzViYzlmODJhOS4uMGJhMWZiYmE3YTkxZmE5NjdjYzQ3ODQ3NTIzYzhlZDRjODcwNDEwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDQ0
LDggKzEwNDQsOCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENhbGxMaQogICAgICAgICB9CiAKICAgICAg
ICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVC
bG9jaygpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUs
IGtpbmQsICpjb2RlQmxvY2tTbG90KTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVl
LCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBFWENFUFRJT05fQVNTRVJU
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAg
ICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gaGFuZGxlVGhyb3dFeGNlcHRpb24o
KTsKICAgICAgICAgY29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7CkBAIC0xMTAwLDggKzExMDAs
OCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoRXhlY1N0YXRl
KiBleGVjLCBDYWxsTGlua0luZm8qIGNhbGxMaQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlz
Q2FsbChraW5kKSB8fCBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSAhPSBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpOwogICAgICAgICAKLSAgICAgICAgSlNP
YmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1
bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2RlQmxvY2spOwot
ICAgICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVlLCBzY29w
ZSwga2luZCwgY29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQodGhy
b3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvci52YWx1ZV9vcihudWxscHRy
KSk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5z
aWduZWQgYXJndW1lbnRTdGFja1Nsb3RzID0gY2FsbExpbmtJbmZvLT5tYXhOdW1Bcmd1bWVudHMo
KTsKQEAgLTExNTAsOCArMTE1MCw4IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVh
bEZvcldpdGhGdW5jdGlvbigKICAgICAgICAgfQogCiAgICAgICAgIENvZGVCbG9jayoqIGNvZGVC
bG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKLSAgICAgICAgSlNP
YmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1
bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tT
bG90KTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09
IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24qPiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4
ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAq
Y29kZUJsb2NrU2xvdCk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNl
cHRpb24oKSA9PSBlcnJvci52YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChlcnJvcikg
ewogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+
Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBjMWMyYzY3NDZh
ZTNhNTU3ZmNhM2U0ZGQ3ZjlkYTRkZTdhMjM5M2RhLi43MTc5MzMzYWE2ZDQwMzk4YzYyNGUwMTdm
YTFkNmE0MTk0OTdhYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTE0ODUsMTAgKzE0ODUsMTAgQEAgaW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMs
IENvZGUKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgY3JlYXRlTm90QUNvbnN0
cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJs
b2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwotICAgICAgICBKU09i
amVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVu
Y3Rpb25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3Qp
OwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJy
b3IpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGNh
bGxlZSwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FT
U0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKLSAgICAgICAgICAgIExMSU5UX0NBTExfVEhS
T1coZXhlYywgZXJyb3IpOworICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCAqZXJy
b3IpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKICAgICAgICAgQVNTRVJU
KGNvZGVCbG9jayk7CiAgICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IGQxNWEzM2MzZTBiZDAwOTMyZjFh
MTMzNWNmNTIxOTU1MDc0ZWZmMGEuLjVmMjljYWJjYTVlZmNmYzY0ZjE0ZGQzOGY4NDE0MjFiY2Q2
MGQ5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAg
LTE0NTIsNyArMTQ1MiwxMyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0
ZSogZXhlYywgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbAogCiBpbmxpbmUgSlNC
aWdJbnQ6OkRpZ2l0KiBKU0JpZ0ludDo6ZGF0YVN0b3JhZ2UoKQogeworICAgIC8vIG9mZnNldE9m
RGF0YSgpIG1ha2VzIHN1cmUgdGhhdCBpdHMgcmV0dXJuIHZhbHVlIGlzIGFsaWduZWQgdG8gdGhl
IHNpemUgb2YKKyAgICAvLyBEaWdpdCwgc28gZXZlbiB0aG91Z2ggd2UgY2FzdCB0byBjaGFyKiBm
b3IgcG9pbnRlciBhcml0aG1ldGljcywgdGhlIGNhc3QgdG8KKyAgICAvLyBEaWdpdCogaXMgcHJv
cGVybHkgYWxpZ25lZCwgdGhvdWdoIHRoZSBjb21waWxlciBkb2Vzbid0IGtub3cgYWJvdXQgaXQs
CisgICAgLy8gdGhlcmVmb3JlIHdlIGRpc2FibGUgdGhpcyB3YXJuaW5nLgorICAgIElHTk9SRV9D
QVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGln
aXQqPihyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAg
ICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKIH0KIAogaW5saW5lIEpTQmlnSW50OjpE
aWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggNjFlMTA2YzJhMjQ1NDYx
YWM3ZTNkNWI0ZmU3ZGMwZmU5NTBjODQxMC4uMjhjOWQ2ZGEzZjE0NDRiZjA4YzUwZDgyNzQwYmNj
YTM2ODEyOWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC0zMzgsNyAr
MzM5LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBKSVQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKICNlbmRpZgogfQogCi1KU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4
ZWN1dGlvbkltcGwoCitzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IFNjcmlwdEV4ZWN1dGFibGU6
OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogICAgIFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rp
b24sIEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVCbG9j
ayomIHJlc3VsdENvZGVCbG9jaykKIHsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKQEAgLTM0Niw3ICszNDcsNyBAQCBKU09iamVjdCogU2NyaXB0RXhlY3V0
YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAKICAgICBpZiAodm0uZ2V0QW5kQ2xlYXJG
YWlsTmV4dE5ld0NvZGVCbG9jaygpKSB7CiAgICAgICAgIGF1dG8mIHN0YXRlID0gKnNjb3BlLT5n
bG9iYWxPYmplY3Qodm0pLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgIkZvcmNlZCBGYWls
dXJlIl9zKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbiAqPihzdGF0
aWNfY2FzdDxFeGNlcHRpb24qPih0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZUVycm9yKCZzdGF0ZSwgIkZvcmNlZCBGYWlsdXJlIl9zKSkpKTsKICAgICB9CiAKICAgICBK
U09iamVjdCogZXhjZXB0aW9uID0gbnVsbHB0cjsKQEAgLTM1NCw3ICszNTUsNyBAQCBKU09iamVj
dCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAgICAgcmVzdWx0
Q29kZUJsb2NrID0gY29kZUJsb2NrOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpID09ICFjb2RlQmxvY2spOwogICAgIGlmIChVTkxJS0VMWSghY29kZUJsb2Nr
KSkKLSAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uICo+KHN0YXRpY19jYXN0PEV4Y2VwdGlvbio+KGV4Y2VwdGlvbikpOwogICAg
IAogICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUJ5dGVjb2RlKCkpCiAgICAgICAgIGNvZGVCbG9j
ay0+dmFsaWRhdGUoKTsKQEAgLTM2NSw3ICszNjYsNyBAQCBKU09iamVjdCogU2NyaXB0RXhlY3V0
YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAgICAgICAgIHNldHVwSklUKHZtLCBjb2Rl
QmxvY2spOwogICAgIAogICAgIGluc3RhbGxDb2RlKHZtLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+
Y29kZVR5cGUoKSwgY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKSk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ29kZUJsb2NrSGFzaCBT
Y3JpcHRFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
aAppbmRleCA4ZDg5MWJkZDhkM2VlODI4ZGJiOWM3N2E0NDI0ZmM1ODBjMmU0YTZkLi43Yjc2NTk4
ZDJiNzI5NWI0ZGY5NDBiNDFmY2NkZGI0MDgxOTY5Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC0xMDUsMTEgKzEwNSwxMSBA
QCBwdWJsaWM6CiAgICAgLy8gdG8gcG9pbnQgdG8gaXQuIFRoaXMgZm9yY2VzIGNhbGxlcnMgdG8g
aGF2ZSBhIENvZGVCbG9jayogaW4gYSByZWdpc3RlciBvciBvbiB0aGUgc3RhY2sgdGhhdCB3aWxs
IGJlIG1hcmtlZAogICAgIC8vIGJ5IGNvbnNlcnZhdGl2ZSBHQyBpZiBhIEdDIGhhcHBlbnMgYWZ0
ZXIgd2UgY3JlYXRlIHRoZSBDb2RlQmxvY2suCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1
dGFibGVUeXBlPgotICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiwgSlNGdW5j
dGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqJiByZXN1
bHRDb2RlQmxvY2spOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gcHJlcGFyZUZvckV4
ZWN1dGlvbihWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRXhlY3V0YWJsZUJhc2U7Ci0gICAgSlNPYmplY3QqIHByZXBhcmVGb3JFeGVjdXRpb25J
bXBsKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBD
b2RlQmxvY2sqJik7CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBwcmVwYXJlRm9yRXhl
Y3V0aW9uSW1wbChWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCwgQ29kZUJsb2NrKiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU2NyaXB0RXhlY3V0YWJsZShT
dHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUsIEludHJpbnNpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKaW5kZXggOGE0NjFlNzZlYzgwMTFhOWIyMzc4ZDZkNDI3NWQzMWFjMTIxMTA5
Yy4uMjYyMTExNzY4OWE4OGUxZjQyYzVmZjMzMGJkN2ZhMDNiY2Y4NDgyMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMTQ2Myw4ICsxNDYzLDE2IEBA
IHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gZnVuYy0+anNFeGVjdXRh
YmxlKCktPmVpdGhlckNvZGVCbG9jaygpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIEhlcmUgaXQncyBPSyB0byBpZ25vcmUgdGhlIGFsaWdubWVudCBy
ZXF1aXJlbWVudHMgc2luY2UKKyAgICAgICAgICAgIC8vIGNhbmRpZGF0ZUNvZGVCbG9jayB3aWxs
IG9ubHkgYmUgYWNjZXNzZWQgaWYKKyAgICAgICAgICAgIC8vIFZNSW5zcGVjdG9yOjppc1ZhbGlk
Q29kZUJsb2NrKCkgcmV0dXJucyB0cnVlLCB3aGljaCBvbmx5IGhhcHBlbnMKKyAgICAgICAgICAg
IC8vIGlmIHRoZSBhZGRyZXNzIGlzIHRoYXQgb2YgYSBrbm93biBleGlzdGluZywgcHJvcGVybHkg
YWxpZ25lZAorICAgICAgICAgICAgLy8gY29kZUJsb2NrLgorICAgICAgICAgICAgSUdOT1JFX0NB
U1RfQUxJR05fV0FSTklOR1NfQkVHSU4KICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4odmFsdWUuYXNDZWxsKCkpOworICAgICAgICAg
ICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfRU5ECisgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2Nr
KGV4ZWMsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCBmYjE4OThkMmIzZjAz
NGZjMDczY2I2NWMyOGI3YjMzNzA5Yjg0YzE0Li5iNjBmODEwMGVhYzRiNDI1ZDQ4ZGExMzcwMDFk
M2MwYzE0MGY2MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTQ2MCw0ICs0NjAsOCBAQAogI2RlZmluZSBJ
R05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19CRUdJTiBJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5v
bm51bGwiKQogI2RlZmluZSBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19FTkQgSUdOT1JFX1dB
Uk5JTkdTX0VORAogCisjZGVmaW5lIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigiY2FzdC1hbGlnbiIpCisjZGVmaW5lIElHTk9SRV9DQVNUX0FM
SUdOX1dBUk5JTkdTX0VORCBJR05PUkVfV0FSTklOR1NfRU5ECisKKwogI2VuZGlmIC8qIFdURl9D
b21waWxlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVj
dG9yeVBhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeVBh
Z2VJbmxpbmVzLmgKaW5kZXggYTE0OWUxMDhkMTM3Yzk0MWU5MDBiNTczZTk4ZmQzNWUxYjAxNGI5
OC4uOGZkODAxNmU2YTA5YTRhOTAzMmQ2MWE5MjVlYjRlOWU0MWMzNjA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlubGluZXMuaApAQCAtMzksOCAr
MzksMTMgQEAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpJc29EaXJlY3RvcnlQYWdlKElzb0hl
YXBJbXBsPENvbmZpZz4mIGhlYXAsIHVuc2lnbmVkIGkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
Zz4KIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+Ojpw
YWdlRm9yKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzPiogcGF5bG9hZCkKIHsKKyAgICAv
LyB0aGUgY2hhciAqIGNhc3QgaXMgb25seSB1c2VkIHRvIGRvIGEgcG9pbnRlciBjYWxjdWxhdGlv
biwgYW5kIHNhaWQKKyAgICAvLyBjYWxjdWxhdGlvbiByZXN1bHRzIGluIGEgcG9pbnRlciB0byBh
biBleGlzdGluZywgY29ycmVjdGx5IGFsaWduZWQKKyAgICAvLyBJc29EaXJlY3RvcnlQYWdlLgor
ICAgIElHTk9SRV9DQVNUX0FMSUdOX1dBUk5JTkdTX0JFR0lOCiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+Kj4oCiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHBheWxvYWQpIC0gQk9GRlNFVE9GKElzb0RpcmVjdG9yeVBhZ2UsIHBheWxv
YWQpKTsKKyAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKIH0KIAogfSAvLyBuYW1l
c3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdl
SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCmluZGV4
IDBjNDc4NjRjN2I0OWEwZWVjOGEyNjEwY2VmNjdmYTMyOGE0ZWY0YzQuLjNkZTFjNjhiOGE1Y2Vj
ODllM2JlOTNmZTM0ZjYyNGEyN2JlODg3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1Bh
Z2VJbmxpbmVzLmgKQEAgLTE4OCw3ICsxODgsMTIgQEAgRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+
OjpzdGFydEFsbG9jYXRpbmcoKQogICAgICAgICBjaGFyKiBjZWxsQnl0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHRoaXMpICsgaW5kZXggKiBDb25maWc6Om9iamVjdFNpemU7CiAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogcHV0dGluZyAl
cCBvbiBmcmVlIGxpc3QuXG4iLCB0aGlzLCBjZWxsQnl0ZSk7CisKKyAgICAgICAgc3RhdGljX2Fz
c2VydCghKENvbmZpZzo6b2JqZWN0U2l6ZSAlIGFsaWdub2YoRnJlZUNlbGwpKSwgIkNvbmZpZzo6
b2JqZWN0U2l6ZSBzaG91bGQgcmVzcGVjdCBhbGlnbm1lbnQgb2YgRnJlZUNlbGwiKTsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydCghKGFsaWdub2YoSXNvUGFnZTxDb25maWc+KSAlIGFsaWdub2YoRnJl
ZUNlbGwpKSwgIkFsaWdubWVudCBvZiBJc29QYWdlPENvbmZpZz4gc2hvdWxkIG1hdGNoIHRoYXQg
b2YgRnJlZUNlbGwiKTsKKyAgICAgICAgSUdOT1JFX0NBU1RfQUxJR05fV0FSTklOR1NfQkVHSU4K
ICAgICAgICAgRnJlZUNlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0PEZyZWVDZWxsKj4oY2Vs
bEJ5dGUpOworICAgICAgICBJR05PUkVfQ0FTVF9BTElHTl9XQVJOSU5HU19FTkQKICAgICAgICAg
Y2VsbC0+c2V0TmV4dChoZWFkLCBzZWNyZXQpOwogICAgICAgICBoZWFkID0gY2VsbDsKICAgICAg
ICAgYnl0ZXMgKz0gQ29uZmlnOjpvYmplY3RTaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351974</attachid>
            <date>2018-10-10 11:22:28 -0700</date>
            <delta_ts>2018-10-11 19:09:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20181010202227.patch</filename>
            <type>text/plain</type>
            <size>24728</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi4yOWMzYjRiZTRkZDZiZGE4
M2NlY2M1NTZjZjYzN2U5N2I0NGQyM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOC0xMC0wOSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9zdGx5
IGFsaWdubWVudAorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1vcnkp
OgorICAgICAgICBVc2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2YgcmVpbnRlcnByZXRfY2FzdC4K
KyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpmbG9hdE9w
ZXJhbmRzKToKKyAgICAgICAgbWFya2VkIGFzIHBvdGVudGlhbGx5IHVudXNlZCBhcyBpdCBpcyBu
b3QgdXNlZCBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmll
c1N0YWNrVmFsdWVzKToKKyAgICAgICAgbW9kaWZpZWRGbGFncyBpcyBub3QgdXNlZCBvbiBtaXBz
LCBzbyBkb24ndCBkZWNsYXJlIGl0LgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICBNYWtlIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oKSByZXR1
cm4gYW4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBpbnN0ZWFkIG9mIGEgSlNP
YmplY3QqLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENh
bGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgIFVwZGF0ZSBjYWxs
aW5nIGNvZGUgZm9yIHRoZSBwcm90b3R5cGUgY2hhbmdlIG9mCisgICAgICAgIFNjcmlwdEV4ZWN1
dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oKS4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6IFNhbWUgYXMgZm9yIEludGVycHJldGVyLmNwcC4KKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOiBTYW1lIGFz
IGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIFVzZSBiaXR3aXNl
X2Nhc3QgaW5zdGVhZCBvZiByZWludGVycHJldF9jYXN0LgorICAgICAgICAqIHJ1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6
CisgICAgICAgIE1ha2UgU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbigpIHJl
dHVybiBhbgorICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGluc3RlYWQgb2YgYSBK
U09iamVjdCouCisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6
OmNvZGVCbG9ja0Zyb21BcmcpOiBVc2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2YgcmVpbnRlcnBy
ZXRfY2FzdC4KKwogMjAxOC0xMC0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyByZWRpcmVjdCByZXF1ZXN0cyBpbiBOZXR3
b3JrIGFuZCBUaW1lbGluZXMgdGFicwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDY5YjAwZTFlN2ZhYmUyM2FlZTli
NThmMmEzMTRhOTE5NmQwMDQ5NDMuLmY4MmNmNDJmYjAyNjM1ZWVhMWYwM2ZjY2JmZWM4OGVlYjll
YTE3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0wOSAgR3VpbGxhdW1l
IEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdj
YyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBhcm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGJpdHdpc2VfY2FzdCAoZnJvbSBXVEYpIGFuZCB1c2Ug
aXQgaW5zdGVhZCBvZiByZWludGVycHJldF9jYXN0IGluCisgICAgICAgIGEgY291cGxlIHBsYWNl
cyB3aGVyZSByZWludGVycHJldF9jYXN0IHRyaWdnZXJzIGEgd2FybmluZyBhYm91dAorICAgICAg
ICBhbGlnbm1lbnQgZXZlbiB0aG91Z2ggd2Uga25vdyB0aGF0IGFsaWdubWVudCBpcyBjb3JyZWN0
LgorCisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OmJp
dHdpc2VfY2FzdCk6IENvcGllZCBmcm9tIFdURi93dGYvU3RkTGliZXh0cmFzLmgKKyAgICAgICAg
KiBibWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IpOgorICAgICAgICAqIGJtYWxsb2MvSXNv
UGFnZUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6c3RhcnRB
bGxvY2F0aW5nKToKKwogMjAxOC0xMC0wMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIGJtYWxsb2MgcGFydCBvZiBbWGNvZGVdIFVwZGF0ZSBzb21lIGJ1aWxkIHNl
dHRpbmdzIGFzIHJlY29tbWVuZGVkIGJ5IFhjb2RlIDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAKaW5kZXgg
MzQwMTlkMTcwMjYxYWM5NTAzYzI4MTgyZjcyMjA5NTU4Y2RhN2RhYy4uNGE5YzQyMTA5YTE4YzA4
MzAxMDk5MWMxN2JjZTA2MWY1MmNiZWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcApAQCAtMTMxLDYg
KzEzMSw5IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29u
dGV4dCkKICAgICB9CiAgICAgfQogCisgICAgLy8gYXNzdW1pbmcgbWVtb3J5IGlzIG5vdCBtYWxm
b3JtZWQsIGl0IG9yaWdpbmFsbHkgcG9pbnRlZCB0byBhIHZhbHVlCisgICAgLy8gb2YgdGhlIHNp
emUgd2l0aCB3aGljaCB3ZSB1c2UgaXQgYmVsb3csIHNvIHRoZSBiaXR3aXNlX2Nhc3RzIHNob3Vs
ZAorICAgIC8vIGJlIHNhZmUsIGluY2x1ZGluZyByZWdhcmRpbmcgYWxpZ25tZW50LgogICAgIGlm
IChtZW1vcnkuZHVtcFN0eWxlID09IE1lbW9yeTo6U2luZ2xlV29yZER1bXApIHsKICAgICAgICAg
aWYgKG1lbW9yeS5udW1CeXRlcyA9PSBzaXplb2YoaW50OF90KSkgewogICAgICAgICAgICAgYXV0
byBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihwdHIpOwpAQCAtMTM4LDE3ICsxNDEsMTcg
QEAgdm9pZCBwcmludE1lbW9yeShQcmludFN0cmVhbSYgb3V0LCBDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0
ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7Ci0gICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJl
dF9jYXN0PGludDE2X3QqPihwdHIpOworICAgICAgICAgICAgYXV0byBwID0gYml0d2lzZV9jYXN0
PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0eCAlZD4i
LCBwLCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDMyX3QpKSB7Ci0gICAgICAgICAgICBhdXRv
IHAgPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihwdHIpOworICAgICAgICAgICAgYXV0byBw
ID0gYml0d2lzZV9jYXN0PGludDMyX3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXA6PDB4JTA4eCAlZD4iLCBwLCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDY0X3QpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJldF9jYXN0PGludDY0X3QqPihwdHIpOworICAg
ICAgICAgICAgYXV0byBwID0gYml0d2lzZV9jYXN0PGludDY0X3QqPihwdHIpOwogICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXA6PDB4JTAxNiIgUFJJeDY0ICIgJSIgUFJJZDY0ICI+IiwgcCwgKnAs
ICpwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5YzFiZTEy
ODAwYzk0MTlhYTcxYTZhZWJkLi40YzU0YzVhMjNkNGJjNWI0NmJlMDQ5ZTRiZTQ3MmYxZDJlMzZk
YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBWZWN0b3I8ZG91YmxlPiBkb3VibGVPcGVyYW5kcygp
CiB9CiAKIAotc3RhdGljIFZlY3RvcjxmbG9hdD4gZmxvYXRPcGVyYW5kcygpCitzdGF0aWMgVmVj
dG9yPGZsb2F0PiBVTlVTRURfRlVOQ1RJT04gZmxvYXRPcGVyYW5kcygpCiB7CiAgICAgcmV0dXJu
IFZlY3RvcjxmbG9hdD4gewogICAgICAgICAwLApAQCAtNzQ3LDcgKzc0Nyw5IEBAIHZvaWQgdGVz
dFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsK
ICAgICB2b2lkKiBvcmlnaW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVs
bHB0ciB9OworI2lmICEoQ1BVKE1JUFMpKQogICAgIHVpbnRwdHJfdCBtb2RpZmllZEZsYWdzIHsg
MCB9OworI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSB7IDEw
IH07IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4KIAogI2lm
IENQVShYODYpIHx8IENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggMzk2MjU3Njg5MjkyOTBmY2ZmYWE2YTg5NDhjNzU1MDhlOTgxYjBh
ZS4uMmRkMWZhYjg4Nzg2YjhlNzA3YmQ5ZWI2ZTc0MTNjZDY1NDY3Zjc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTA0OCw3ICsxMDQ4LDcgQEAg
aW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyIHJl
ZykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgotSlNPYmplY3QqIFNj
cmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29k
ZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKQorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBTY3Jp
cHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVu
Y3Rpb24sIEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVC
bG9jayomIHJlc3VsdENvZGVCbG9jaykKIHsKICAgICBpZiAoaGFzSklUQ29kZUZvcihraW5kKSkg
ewogICAgICAgICBpZiAoc3RkOjppc19zYW1lPEV4ZWN1dGFibGVUeXBlLCBFdmFsRXhlY3V0YWJs
ZT46OnZhbHVlKQpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFi
bGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlMK
ICAgICAgICAgICAgIHJlc3VsdENvZGVCbG9jayA9IGpzQ2FzdDxDb2RlQmxvY2sqPihqc0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPmNvZGVCbG9ja0ZvcihraW5kKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAg
ICByZXR1cm4gcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwodm0sIGZ1bmN0aW9uLCBzY29wZSwga2lu
ZCwgcmVzdWx0Q29kZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDZlNjY4Yzc3NGI2YTMwOTNmNGM0NjM0MmVj
NWIxYWRiZTlkMGY3ZTQuLjNhOGE4NzI0MTJkOTg0MGRhODYzN2FiOWVmMjgzYTg2MDI5NTYxMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtODA2LDEwICs4MDYsMTEgQEAgZmFpbGVkSlNPTlA6CiAgICAgUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrOwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2Nr
OwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9u
PFByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24qPiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRp
b248UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRl
bXBDb2RlQmxvY2spOworICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gZXJyb3IudmFsdWVfb3IobnVsbHB0cikpOworCiAgICAgICAgIGlmIChVTkxJS0VM
WShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihlcnJvcik7CisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybigqZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sg
PSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAt
ODY0LDEwICs4NjUsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFQKIAogICAgIGlmIChpc0pT
Q2FsbCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0
KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihm
dW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKLSAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uKj4gY29tcGlsZUVycm9yID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZnVuY3Rpb24pLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CisgICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3Iu
dmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3Ip
KQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKCpjb21waWxlRXJyb3IpOwogCiAgICAgICAgIEFT
U0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTkzMSwxMCArOTMyLDEwIEBAIEpTT2JqZWN0KiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3Qq
IGNvbnN0cnVjCiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxl
IHRoZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3RE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENv
ZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
dGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNv
bXBpbGVFcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGNvbXBpbGVF
cnJvciA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3Ry
dWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVjdCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvci52
YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikp
Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBpbGVFcnJvcik7CiAKICAgICAgICAgQVNT
RVJUKCEhbmV3Q29kZUJsb2NrKTsKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5
c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtOTc5LDggKzk4MCw4IEBAIENhbGxGcmFtZUNsb3N1cmUg
SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FCiAKICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgQ29kZUJsb2NrKiBuZXdD
b2RlQmxvY2s7Ci0gICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwg
Q29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBz
Y29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICBp
ZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwog
ICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTEw
MzcsMTAgKzEwMzgsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKICAgICBFdmFsQ29kZUJs
b2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7
Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0
aW9uPEV2YWxFeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gY29tcGlsZUVycm9yID0gZXZhbC0+cHJlcGFy
ZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9y
Q2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29w
ZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KCpjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENvZGVCbG9j
ayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTE2MCwxMCArMTE2MSwxMCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgQwogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9j
azsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNP
YmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRl
bXBDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxl
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0
ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9O
X0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvci52YWx1ZV9vcihu
dWxscHRyKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiNWUxOTJj
MGRhNDRjYTgxNjcwMGYwNzA4NTY3NmFhOTEzMTc1OGRlLi5jZTEwZTcyODNmYWUzZDI5ZTBkNmFi
NDk3YWY3ODgwYjE4ZGQ3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTEwNDAsOCArMTA0MCw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExp
CiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0Nh
bGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+
KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENF
UFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxF
eGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CisgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvci52YWx1
ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBo
YW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xv
dDsKQEAgLTEwOTYsOCArMTA5Niw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5r
RGlyZWN0Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyogY2FsbExpCiAKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29u
c3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7CiAg
ICAgICAgIAotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUs
IGtpbmQsIGNvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRocm93
U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRp
b24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2RlQmxvY2spOworICAgICAgICBFWENFUFRJ
T05fQVNTRVJUX1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVy
cm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0lu
Zm8tPm1heE51bUFyZ3VtZW50cygpOwpAQCAtMTE0NSw4ICsxMTQ1LDggQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKAogICAgICAgICB9CiAKICAgICAg
ICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVC
bG9jaygpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGZ1bmN0aW9uLCBzY29w
ZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93
U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikp
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5j
dGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FT
U0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAog
ICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IGVlYWQyNGQ3MGY1OWM5MmE0NGZmYTlhMGJhYmVkYzc5Y2VhMTg5NDcuLmNjNWU3
YzU2YTFhNWJmMWUxNGJlY2Q0NWI5ZDk4YzljZmFkYmYzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTQ4NCwxMCArMTQ4NCwxMCBA
QCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZQogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKIAogICAgICAg
ICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJs
b2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBjYWxsZWUsIHNjb3BlLCBr
aW5kLCAqY29kZUJsb2NrU2xvdCk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29w
ZS5leGNlcHRpb24oKSA9PSBlcnJvcik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
Kj4gZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwor
ICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3Iu
dmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQotICAgICAg
ICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBlcnJvcik7CisgICAgICAgICAgICBMTElOVF9D
QUxMX1RIUk9XKGV4ZWMsICplcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tT
bG90OwogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICAgICAgQXJpdHlDaGVja01vZGUg
YXJpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXgg
M2E2YzFiN2MwNmNmNDU2NzY0NzhlNWQ2YWFmN2M3ZmM2ZjhhM2Q4Ni4uZWYwOTFkYzZlZWRmN2Q3
ZjAxMzhlOGNlOTU3MTUwMTY4NDcyNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcApAQCAtMTU1MCw3ICsxNTUwLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNp
Z25lZCBsCiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQqIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgp
CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJldF9jYXN0
PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICAvLyBvZmZzZXRPZkRhdGEoKSBt
YWtlcyBzdXJlIHRoYXQgaXRzIHJldHVybiB2YWx1ZSBpcyBhbGlnbmVkIHRvIHRoZSBzaXplCisg
ICAgLy8gb2YgRGlnaXQsIHNvIGV2ZW4gdGhvdWdoIHdlIGNhc3QgdG8gY2hhciogZm9yIHBvaW50
ZXIgYXJpdGhtZXRpY3MsIHRoZQorICAgIC8vIGJpdHdpc2VfY2FzdCB0byBEaWdpdCogaXMgY29y
cmVjdCBhbmQgcHJvcGVybHkgYWxpZ25lZC4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PERpZ2l0
Kj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkRhdGEoKSk7CiB9CiAK
IGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDUyMzYwOTY1YmNlMmQ0ZTA5OGE4MDAyYWQ1NDM2MWQ5ODA0MzkyMjkuLjQwN2UzYTEwMTdk
M2VjOTA5ZmFmZjdlNmFiNGQ3OGYyMTIwZTQ2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJF
dmFsQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpJVC5oIgpAQCAtMzM3LDcgKzMzOCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiAjZW5kaWYKIH0KIAotSlNPYmplY3QqIFNjcmlwdEV4ZWN1
dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24q
PiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICBWTSYgdm0s
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spCiB7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0zNDUsNyArMzQ2LDcgQEAgSlNP
YmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiAgICAg
aWYgKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkgewogICAgICAgICBhdXRv
JiBzdGF0ZSA9ICpzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsRXhlYygpOwotICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVFcnJvcigm
c3RhdGUsICJGb3JjZWQgRmFpbHVyZSJfcykpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RXhjZXB0aW9uKj4odGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVFcnJv
cigmc3RhdGUsICJGb3JjZWQgRmFpbHVyZSJfcykpKTsKICAgICB9CiAKICAgICBKU09iamVjdCog
ZXhjZXB0aW9uID0gbnVsbHB0cjsKQEAgLTM1Myw3ICszNTQsNyBAQCBKU09iamVjdCogU2NyaXB0
RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAgICAgcmVzdWx0Q29kZUJsb2Nr
ID0gY29kZUJsb2NrOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISF0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09ICFjb2RlQmxvY2spOwogICAgIGlmIChVTkxJS0VMWSghY29kZUJsb2NrKSkKLSAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4Y2VwdGlv
bio+KGV4Y2VwdGlvbik7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlQnl0ZWNvZGUo
KSkKICAgICAgICAgY29kZUJsb2NrLT52YWxpZGF0ZSgpOwpAQCAtMzY0LDcgKzM2NSw3IEBAIEpT
T2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICAg
ICAgc2V0dXBKSVQodm0sIGNvZGVCbG9jayk7CiAgICAgCiAgICAgaW5zdGFsbENvZGUodm0sIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5jb2RlVHlwZSgpLCBjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9u
S2luZCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBDb2RlQmxvY2tIYXNoIFNjcmlwdEV4ZWN1dGFibGU6Omhhc2hGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5oCmluZGV4IDhkODkxYmRkOGQzZWU4MjhkYmI5Yzc3YTQ0MjRm
YzU4MGMyZTRhNmQuLjdiNzY1OThkMmI3Mjk1YjRkZjk0MGI0MWZjY2RkYjQwODE5NjljZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgK
QEAgLTEwNSwxMSArMTA1LDExIEBAIHB1YmxpYzoKICAgICAvLyB0byBwb2ludCB0byBpdC4gVGhp
cyBmb3JjZXMgY2FsbGVycyB0byBoYXZlIGEgQ29kZUJsb2NrKiBpbiBhIHJlZ2lzdGVyIG9yIG9u
IHRoZSBzdGFjayB0aGF0IHdpbGwgYmUgbWFya2VkCiAgICAgLy8gYnkgY29uc2VydmF0aXZlIEdD
IGlmIGEgR0MgaGFwcGVucyBhZnRlciB3ZSBjcmVhdGUgdGhlIENvZGVCbG9jay4KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRXhlY3V0YWJsZVR5cGU+Ci0gICAgSlNPYmplY3QqIHByZXBhcmVGb3JF
eGVjdXRpb24oVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktp
bmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jayk7CisgICAgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24qPiBwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spOwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKLSAgICBKU09iamVjdCog
cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbio+IHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUq
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqJik7CiAKIHByb3RlY3RlZDoKICAg
ICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBmOTY3NzgxMGJhYzM3YWMyMzJk
MWJlMzUwNzNiZmQ4NDU3MGY0YmU2Li44Y2M3ZjFkYzI4YTQzZDEwMGYzMWY1YTZjNzZjMjU2ZWMz
MDNmZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBA
IC0xNDYyLDcgKzE0NjIsNyBAQCBzdGF0aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjYW5kaWRh
dGVDb2RlQmxvY2sgPSBmdW5jLT5qc0V4ZWN1dGFibGUoKS0+ZWl0aGVyQ29kZUJsb2NrKCk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnBy
ZXRfY2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBjYW5kaWRh
dGVDb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CiAg
ICAgfQogCiAgICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jayAmJiBWTUluc3BlY3Rvcjo6aXNWYWxp
ZENvZGVCbG9jayhleGVjLCBjYW5kaWRhdGVDb2RlQmxvY2spKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxn
b3JpdGhtLmgKaW5kZXggZTRlNTFhNTNhM2UxYTBhOTkzNjJiYmJjODNjOGFiNWIwMTBmMWY3Ny4u
NzA1YzA3OWFkMDVhY2NlYzNiYjBlYzE2YTBlYTA4NTZhOTQzNjU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsZ29yaXRobS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RyaW5n
PgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KQEAgLTE4MSw2ICsxODIsMjUgQEAgYm9vbCBmaW5kQml0SW5Xb3JkKFQgd29yZCwg
c2l6ZV90JiBpbmRleCwgc2l6ZV90IGVuZEluZGV4LCBib29sIHZhbHVlKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorLyoKKyAqIENvcGllZCBmcm9tIFdURi93dGYvU3RkTGliRXh0cmFzLmgKKyAq
LwordGVtcGxhdGU8dHlwZW5hbWUgVG9UeXBlLCB0eXBlbmFtZSBGcm9tVHlwZT4KK2lubGluZSBU
b1R5cGUgYml0d2lzZV9jYXN0KEZyb21UeXBlIGZyb20pCit7CisgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoRnJvbVR5cGUpID09IHNpemVvZihUb1R5cGUpLCAiYml0d2lzZV9jYXN0IHNpemUgb2Yg
RnJvbVR5cGUgYW5kIFRvVHlwZSBtdXN0IGJlIGVxdWFsISIpOworI2lmIGRlZmluZWQoX19oYXNf
ZmVhdHVyZSkKKyNpZiBfX2hhc19mZWF0dXJlKGlzX3RyaXZpYWxseV9jb3B5YWJsZSkKKyAgICAv
LyBOb3QgYWxsIHJlY2VudCBTVEwgaW1wbGVtZW50YXRpb25zIHN1cHBvcnQgdGhlIHN0ZDo6aXNf
dHJpdmlhbGx5X2NvcHlhYmxlIHR5cGUgdHJhaXQuIFdvcmsgYXJvdW5kIHRoaXMgYnkgb25seSBj
aGVja2luZyBvbiB0b29sY2hhaW5zIHdoaWNoIGhhdmUgdGhlIGVxdWl2YWxlbnQgY29tcGlsZXIg
aW50cmluc2ljLgorICAgIHN0YXRpY19hc3NlcnQoX19pc190cml2aWFsbHlfY29weWFibGUoVG9U
eXBlKSwgImJpdHdpc2VfY2FzdCBvZiBub24tdHJpdmlhbGx5LWNvcHlhYmxlIHR5cGUhIik7Cisg
ICAgc3RhdGljX2Fzc2VydChfX2lzX3RyaXZpYWxseV9jb3B5YWJsZShGcm9tVHlwZSksICJiaXR3
aXNlX2Nhc3Qgb2Ygbm9uLXRyaXZpYWxseS1jb3B5YWJsZSB0eXBlISIpOworI2VuZGlmCisjZW5k
aWYKKyAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUb1R5cGU+Ojp0eXBlIHRvIHsgfTsK
KyAgICBzdGQ6Om1lbWNweShzdGF0aWNfY2FzdDx2b2lkKj4oJnRvKSwgc3RhdGljX2Nhc3Q8dm9p
ZCo+KCZmcm9tKSwgc2l6ZW9mKHRvKSk7CisgICAgcmV0dXJuIHRvOworfQorCiB9IC8vIG5hbWVz
cGFjZSBibWFsbG9jCiAKICNlbmRpZiAvLyBBbGdvcml0aG1faApkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCmluZGV4IGExNDllMTA4ZDEzN2M5
NDFlOTAwYjU3M2U5OGZkMzVlMWIwMTRiOTguLjdjZWFiOGI2YTY0YWU3YzNjNmJmODJmNjg3MTBk
Y2I1MmU5ZWIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0
b3J5UGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9y
eVBhZ2VJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDEwIEBAIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmln
Pjo6SXNvRGlyZWN0b3J5UGFnZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwLCB1bnNpZ25lZCBp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIElz
b0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6cGFnZUZvcihJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1Q
YWdlcz4qIHBheWxvYWQpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvRGlyZWN0
b3J5UGFnZTxDb25maWc+Kj4oCisgICAgLy8gdGhlIGNoYXIqIGNhc3QgaXMgb25seSB1c2VkIHRv
IGRvIGEgcG9pbnRlciBjYWxjdWxhdGlvbiwgYW5kIHNhaWQKKyAgICAvLyBjYWxjdWxhdGlvbiBy
ZXN1bHRzIGluIGEgcG9pbnRlciB0byBhbiBleGlzdGluZywgY29ycmVjdGx5IGFsaWduZWQKKyAg
ICAvLyBJc29EaXJlY3RvcnlQYWdlLgorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SXNvRGlyZWN0
b3J5UGFnZTxDb25maWc+Kj4oCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBheWxv
YWQpIC0gQk9GRlNFVE9GKElzb0RpcmVjdG9yeVBhZ2UsIHBheWxvYWQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCmluZGV4IDBjNDc4NjRjN2I0OWEwZWVjOGEy
NjEwY2VmNjdmYTMyOGE0ZWY0YzQuLmFjNTcyNjY3NzgxM2Y4NzdkNTMxMjZhYWY4OWZhMTkwZmM3
ODE5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKQEAgLTE4OCw3
ICsxODgsMTAgQEAgRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQog
ICAgICAgICBjaGFyKiBjZWxsQnl0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsg
aW5kZXggKiBDb25maWc6Om9iamVjdFNpemU7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogcHV0dGluZyAlcCBvbiBmcmVlIGxpc3QuXG4iLCB0
aGlzLCBjZWxsQnl0ZSk7Ci0gICAgICAgIEZyZWVDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2Fz
dDxGcmVlQ2VsbCo+KGNlbGxCeXRlKTsKKworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoQ29uZmln
OjpvYmplY3RTaXplICUgYWxpZ25vZihGcmVlQ2VsbCkpLCAiQ29uZmlnOjpvYmplY3RTaXplIHNo
b3VsZCByZXNwZWN0IGFsaWdubWVudCBvZiBGcmVlQ2VsbCIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KCEoYWxpZ25vZihJc29QYWdlPENvbmZpZz4pICUgYWxpZ25vZihGcmVlQ2VsbCkpLCAiQWxp
Z25tZW50IG9mIElzb1BhZ2U8Q29uZmlnPiBzaG91bGQgbWF0Y2ggdGhhdCBvZiBGcmVlQ2VsbCIp
OworICAgICAgICBGcmVlQ2VsbCogY2VsbCA9IGJpdHdpc2VfY2FzdDxGcmVlQ2VsbCo+KGNlbGxC
eXRlKTsKICAgICAgICAgY2VsbC0+c2V0TmV4dChoZWFkLCBzZWNyZXQpOwogICAgICAgICBoZWFk
ID0gY2VsbDsKICAgICAgICAgYnl0ZXMgKz0gQ29uZmlnOjpvYmplY3RTaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352124</attachid>
            <date>2018-10-11 19:09:33 -0700</date>
            <delta_ts>2018-10-11 19:51:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188598-20181012040931.patch</filename>
            <type>text/plain</type>
            <size>24719</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi4yOWMzYjRiZTRkZDZiZGE4
M2NlY2M1NTZjZjYzN2U5N2I0NGQyM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOC0xMC0wOSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdjYyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBh
cm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IG1hbnkgZ2NjL2NsYW5nIHdhcm5pbmdzIHRoYXQgYXJlIGZhbHNlIHBvc2l0aXZlcywgbW9zdGx5
IGFsaWdubWVudAorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRNZW1vcnkp
OgorICAgICAgICBVc2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2YgcmVpbnRlcnByZXRfY2FzdC4K
KyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpmbG9hdE9w
ZXJhbmRzKToKKyAgICAgICAgbWFya2VkIGFzIHBvdGVudGlhbGx5IHVudXNlZCBhcyBpdCBpcyBu
b3QgdXNlZCBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmll
c1N0YWNrVmFsdWVzKToKKyAgICAgICAgbW9kaWZpZWRGbGFncyBpcyBub3QgdXNlZCBvbiBtaXBz
LCBzbyBkb24ndCBkZWNsYXJlIGl0LgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICBNYWtlIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oKSByZXR1
cm4gYW4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBpbnN0ZWFkIG9mIGEgSlNP
YmplY3QqLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENh
bGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgIFVwZGF0ZSBjYWxs
aW5nIGNvZGUgZm9yIHRoZSBwcm90b3R5cGUgY2hhbmdlIG9mCisgICAgICAgIFNjcmlwdEV4ZWN1
dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oKS4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6IFNhbWUgYXMgZm9yIEludGVycHJldGVyLmNwcC4KKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOiBTYW1lIGFz
IGZvciBJbnRlcnByZXRlci5jcHAuCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIFVzZSBiaXR3aXNl
X2Nhc3QgaW5zdGVhZCBvZiByZWludGVycHJldF9jYXN0LgorICAgICAgICAqIHJ1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6
CisgICAgICAgIE1ha2UgU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbigpIHJl
dHVybiBhbgorICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGluc3RlYWQgb2YgYSBK
U09iamVjdCouCisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6
OmNvZGVCbG9ja0Zyb21BcmcpOiBVc2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2YgcmVpbnRlcnBy
ZXRfY2FzdC4KKwogMjAxOC0xMC0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyByZWRpcmVjdCByZXF1ZXN0cyBpbiBOZXR3
b3JrIGFuZCBUaW1lbGluZXMgdGFicwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDY5YjAwZTFlN2ZhYmUyM2FlZTli
NThmMmEzMTRhOTE5NmQwMDQ5NDMuLmY4MmNmNDJmYjAyNjM1ZWVhMWYwM2ZjY2JmZWM4OGVlYjll
YTE3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0wOSAgR3VpbGxhdW1l
IEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGdj
YyB3YXJuaW5ncyBvbiBtaXBzIGFuZCBhcm12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGJpdHdpc2VfY2FzdCAoZnJvbSBXVEYpIGFuZCB1c2Ug
aXQgaW5zdGVhZCBvZiByZWludGVycHJldF9jYXN0IGluCisgICAgICAgIGEgY291cGxlIHBsYWNl
cyB3aGVyZSByZWludGVycHJldF9jYXN0IHRyaWdnZXJzIGEgd2FybmluZyBhYm91dAorICAgICAg
ICBhbGlnbm1lbnQgZXZlbiB0aG91Z2ggd2Uga25vdyB0aGF0IGFsaWdubWVudCBpcyBjb3JyZWN0
LgorCisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OmJp
dHdpc2VfY2FzdCk6IENvcGllZCBmcm9tIFdURi93dGYvU3RkTGliZXh0cmFzLmgKKyAgICAgICAg
KiBibWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IpOgorICAgICAgICAqIGJtYWxsb2MvSXNv
UGFnZUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6c3RhcnRB
bGxvY2F0aW5nKToKKwogMjAxOC0xMC0wMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIGJtYWxsb2MgcGFydCBvZiBbWGNvZGVdIFVwZGF0ZSBzb21lIGJ1aWxkIHNl
dHRpbmdzIGFzIHJlY29tbWVuZGVkIGJ5IFhjb2RlIDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAKaW5kZXgg
MzQwMTlkMTcwMjYxYWM5NTAzYzI4MTgyZjcyMjA5NTU4Y2RhN2RhYy4uNGE5YzQyMTA5YTE4YzA4
MzAxMDk5MWMxN2JjZTA2MWY1MmNiZWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcApAQCAtMTMxLDYg
KzEzMSw5IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGV4dCYgY29u
dGV4dCkKICAgICB9CiAgICAgfQogCisgICAgLy8gYXNzdW1pbmcgbWVtb3J5IGlzIG5vdCBtYWxm
b3JtZWQsIGl0IG9yaWdpbmFsbHkgcG9pbnRlZCB0byBhIHZhbHVlCisgICAgLy8gb2YgdGhlIHNp
emUgd2l0aCB3aGljaCB3ZSB1c2UgaXQgYmVsb3csIHNvIHRoZSBiaXR3aXNlX2Nhc3RzIHNob3Vs
ZAorICAgIC8vIGJlIHNhZmUsIGluY2x1ZGluZyByZWdhcmRpbmcgYWxpZ25tZW50LgogICAgIGlm
IChtZW1vcnkuZHVtcFN0eWxlID09IE1lbW9yeTo6U2luZ2xlV29yZER1bXApIHsKICAgICAgICAg
aWYgKG1lbW9yeS5udW1CeXRlcyA9PSBzaXplb2YoaW50OF90KSkgewogICAgICAgICAgICAgYXV0
byBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihwdHIpOwpAQCAtMTM4LDE3ICsxNDEsMTcg
QEAgdm9pZCBwcmludE1lbW9yeShQcmludFN0cmVhbSYgb3V0LCBDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0
ZXMgPT0gc2l6ZW9mKGludDE2X3QpKSB7Ci0gICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJl
dF9jYXN0PGludDE2X3QqPihwdHIpOworICAgICAgICAgICAgYXV0byBwID0gYml0d2lzZV9jYXN0
PGludDE2X3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXA6PDB4JTA0eCAlZD4i
LCBwLCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDMyX3QpKSB7Ci0gICAgICAgICAgICBhdXRv
IHAgPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihwdHIpOworICAgICAgICAgICAgYXV0byBw
ID0gYml0d2lzZV9jYXN0PGludDMyX3QqPihwdHIpOwogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXA6PDB4JTA4eCAlZD4iLCBwLCAqcCwgKnApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChtZW1vcnkubnVtQnl0ZXMgPT0gc2l6ZW9mKGludDY0X3QpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHAgPSByZWludGVycHJldF9jYXN0PGludDY0X3QqPihwdHIpOworICAg
ICAgICAgICAgYXV0byBwID0gYml0d2lzZV9jYXN0PGludDY0X3QqPihwdHIpOwogICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXA6PDB4JTAxNiIgUFJJeDY0ICIgJSIgUFJJZDY0ICI+IiwgcCwgKnAs
ICpwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5YzFiZTEy
ODAwYzk0MTlhYTcxYTZhZWJkLi40YzU0YzVhMjNkNGJjNWI0NmJlMDQ5ZTRiZTQ3MmYxZDJlMzZk
YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBWZWN0b3I8ZG91YmxlPiBkb3VibGVPcGVyYW5kcygp
CiB9CiAKIAotc3RhdGljIFZlY3RvcjxmbG9hdD4gZmxvYXRPcGVyYW5kcygpCitzdGF0aWMgVmVj
dG9yPGZsb2F0PiBVTlVTRURfRlVOQ1RJT04gZmxvYXRPcGVyYW5kcygpCiB7CiAgICAgcmV0dXJu
IFZlY3RvcjxmbG9hdD4gewogICAgICAgICAwLApAQCAtNzQ3LDcgKzc0Nyw5IEBAIHZvaWQgdGVz
dFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsK
ICAgICB2b2lkKiBvcmlnaW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVs
bHB0ciB9OworI2lmICEoQ1BVKE1JUFMpKQogICAgIHVpbnRwdHJfdCBtb2RpZmllZEZsYWdzIHsg
MCB9OworI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSB7IDEw
IH07IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4KIAogI2lm
IENQVShYODYpIHx8IENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggMzk2MjU3Njg5MjkyOTBmY2ZmYWE2YTg5NDhjNzU1MDhlOTgxYjBh
ZS4uMmRkMWZhYjg4Nzg2YjhlNzA3YmQ5ZWI2ZTc0MTNjZDY1NDY3Zjc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTA0OCw3ICsxMDQ4LDcgQEAg
aW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyIHJl
ZykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgotSlNPYmplY3QqIFNj
cmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29k
ZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKQorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBTY3Jp
cHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVu
Y3Rpb24sIEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVC
bG9jayomIHJlc3VsdENvZGVCbG9jaykKIHsKICAgICBpZiAoaGFzSklUQ29kZUZvcihraW5kKSkg
ewogICAgICAgICBpZiAoc3RkOjppc19zYW1lPEV4ZWN1dGFibGVUeXBlLCBFdmFsRXhlY3V0YWJs
ZT46OnZhbHVlKQpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFi
bGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlMK
ICAgICAgICAgICAgIHJlc3VsdENvZGVCbG9jayA9IGpzQ2FzdDxDb2RlQmxvY2sqPihqc0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPmNvZGVCbG9ja0ZvcihraW5kKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAg
ICByZXR1cm4gcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwodm0sIGZ1bmN0aW9uLCBzY29wZSwga2lu
ZCwgcmVzdWx0Q29kZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDZlNjY4Yzc3NGI2YTMwOTNmNGM0NjM0MmVj
NWIxYWRiZTlkMGY3ZTQuLjNhOGE4NzI0MTJkOTg0MGRhODYzN2FiOWVmMjgzYTg2MDI5NTYxMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtODA2LDEwICs4MDYsMTEgQEAgZmFpbGVkSlNPTlA6CiAgICAgUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrOwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2Nr
OwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9u
PFByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24qPiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRp
b248UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRl
bXBDb2RlQmxvY2spOworICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gZXJyb3IudmFsdWVfb3IobnVsbHB0cikpOworCiAgICAgICAgIGlmIChVTkxJS0VM
WShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihlcnJvcik7CisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybigqZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sg
PSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAt
ODY0LDEwICs4NjUsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFQKIAogICAgIGlmIChpc0pT
Q2FsbCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0
KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihm
dW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKLSAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uKj4gY29tcGlsZUVycm9yID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZnVuY3Rpb24pLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CisgICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3Iu
dmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3Ip
KQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKCpjb21waWxlRXJyb3IpOwogCiAgICAgICAgIEFT
U0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTkzMSwxMCArOTMyLDEwIEBAIEpTT2JqZWN0KiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3Qq
IGNvbnN0cnVjCiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxl
IHRoZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3RE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENv
ZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
dGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNv
bXBpbGVFcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGNvbXBpbGVF
cnJvciA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3Ry
dWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVjdCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvci52
YWx1ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikp
Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBpbGVFcnJvcik7CiAKICAgICAgICAgQVNT
RVJUKCEhbmV3Q29kZUJsb2NrKTsKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5
c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtOTc5LDggKzk4MCw4IEBAIENhbGxGcmFtZUNsb3N1cmUg
SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FCiAKICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgQ29kZUJsb2NrKiBuZXdD
b2RlQmxvY2s7Ci0gICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwg
Q29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBz
Y29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICBp
ZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwog
ICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTEw
MzcsMTAgKzEwMzgsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKICAgICBFdmFsQ29kZUJs
b2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7
Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0
aW9uPEV2YWxFeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uKj4gY29tcGlsZUVycm9yID0gZXZhbC0+cHJlcGFy
ZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9y
Q2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29w
ZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IudmFsdWVfb3IobnVsbHB0cikpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KCpjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENvZGVCbG9j
ayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTE2MCwxMCArMTE2MSwxMCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgQwogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9j
azsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNP
YmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRl
bXBDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24qPiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxl
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0
ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9O
X0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvci52YWx1ZV9vcihu
dWxscHRyKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4oKmNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiNWUxOTJj
MGRhNDRjYTgxNjcwMGYwNzA4NTY3NmFhOTEzMTc1OGRlLi5jZTEwZTcyODNmYWUzZDI5ZTBkNmFi
NDk3YWY3ODgwYjE4ZGQ3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTEwNDAsOCArMTA0MCw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExp
CiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0Nh
bGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+
KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENF
UFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxF
eGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CisgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvci52YWx1
ZV9vcihudWxscHRyKSk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBo
YW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xv
dDsKQEAgLTEwOTYsOCArMTA5Niw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5r
RGlyZWN0Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyogY2FsbExpCiAKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29u
c3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7CiAg
ICAgICAgIAotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUs
IGtpbmQsIGNvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRocm93
U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRp
b24qPihlcnJvcikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oKnZtLCBjYWxsZWUsIHNjb3BlLCBraW5kLCBjb2RlQmxvY2spOworICAgICAgICBFWENFUFRJ
T05fQVNTRVJUX1VOVVNFRCh0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVy
cm9yLnZhbHVlX29yKG51bGxwdHIpKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0lu
Zm8tPm1heE51bUFyZ3VtZW50cygpOwpAQCAtMTE0NSw4ICsxMTQ1LDggQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKAogICAgICAgICB9CiAKICAgICAg
ICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVC
bG9jaygpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGZ1bmN0aW9uLCBzY29w
ZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93
U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikp
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbio+IGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5j
dGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FT
U0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yLnZhbHVlX29yKG51bGxwdHIpKTsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAog
ICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IGVlYWQyNGQ3MGY1OWM5MmE0NGZmYTlhMGJhYmVkYzc5Y2VhMTg5NDcuLmNjNWU3
YzU2YTFhNWJmMWUxNGJlY2Q0NWI5ZDk4YzljZmFkYmYzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTQ4NCwxMCArMTQ4NCwxMCBA
QCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZQogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKIAogICAgICAg
ICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJs
b2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBjYWxsZWUsIHNjb3BlLCBr
aW5kLCAqY29kZUJsb2NrU2xvdCk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29w
ZS5leGNlcHRpb24oKSA9PSBlcnJvcik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
Kj4gZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwor
ICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3Iu
dmFsdWVfb3IobnVsbHB0cikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQotICAgICAg
ICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBlcnJvcik7CisgICAgICAgICAgICBMTElOVF9D
QUxMX1RIUk9XKGV4ZWMsICplcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tT
bG90OwogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICAgICAgQXJpdHlDaGVja01vZGUg
YXJpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXgg
M2E2YzFiN2MwNmNmNDU2NzY0NzhlNWQ2YWFmN2M3ZmM2ZjhhM2Q4Ni4uZWYwOTFkYzZlZWRmN2Q3
ZjAxMzhlOGNlOTU3MTUwMTY4NDcyNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcApAQCAtMTU1MCw3ICsxNTUwLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNp
Z25lZCBsCiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQqIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgp
CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJldF9jYXN0
PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICAvLyBvZmZzZXRPZkRhdGEoKSBt
YWtlcyBzdXJlIHRoYXQgaXRzIHJldHVybiB2YWx1ZSBpcyBhbGlnbmVkIHRvIHRoZSBzaXplCisg
ICAgLy8gb2YgRGlnaXQsIHNvIGV2ZW4gdGhvdWdoIHdlIGNhc3QgdG8gY2hhciogZm9yIHBvaW50
ZXIgYXJpdGhtZXRpY3MsIHRoZQorICAgIC8vIGJpdHdpc2VfY2FzdCB0byBEaWdpdCogaXMgY29y
cmVjdCBhbmQgcHJvcGVybHkgYWxpZ25lZC4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PERpZ2l0
Kj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkRhdGEoKSk7CiB9CiAK
IGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDUyMzYwOTY1YmNlMmQ0ZTA5OGE4MDAyYWQ1NDM2MWQ5ODA0MzkyMjkuLjQwN2UzYTEwMTdk
M2VjOTA5ZmFmZjdlNmFiNGQ3OGYyMTIwZTQ2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJF
dmFsQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpJVC5oIgpAQCAtMzM3LDcgKzMzOCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiAjZW5kaWYKIH0KIAotSlNPYmplY3QqIFNjcmlwdEV4ZWN1
dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24q
PiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICBWTSYgdm0s
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spCiB7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0zNDUsNyArMzQ2LDcgQEAgSlNP
YmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiAgICAg
aWYgKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkgewogICAgICAgICBhdXRv
JiBzdGF0ZSA9ICpzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsRXhlYygpOwotICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVFcnJvcigm
c3RhdGUsICJGb3JjZWQgRmFpbHVyZSJfcykpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RXhjZXB0aW9uKj4odGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVFcnJv
cigmc3RhdGUsICJGb3JjZWQgRmFpbHVyZSJfcykpKTsKICAgICB9CiAKICAgICBKU09iamVjdCog
ZXhjZXB0aW9uID0gbnVsbHB0cjsKQEAgLTM1Myw3ICszNTQsNyBAQCBKU09iamVjdCogU2NyaXB0
RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAgICAgcmVzdWx0Q29kZUJsb2Nr
ID0gY29kZUJsb2NrOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISF0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09ICFjb2RlQmxvY2spOwogICAgIGlmIChVTkxJS0VMWSghY29kZUJsb2NrKSkKLSAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4Y2VwdGlv
bio+KGV4Y2VwdGlvbik7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlQnl0ZWNvZGUo
KSkKICAgICAgICAgY29kZUJsb2NrLT52YWxpZGF0ZSgpOwpAQCAtMzY0LDcgKzM2NSw3IEBAIEpT
T2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICAg
ICAgc2V0dXBKSVQodm0sIGNvZGVCbG9jayk7CiAgICAgCiAgICAgaW5zdGFsbENvZGUodm0sIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5jb2RlVHlwZSgpLCBjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9u
S2luZCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBDb2RlQmxvY2tIYXNoIFNjcmlwdEV4ZWN1dGFibGU6Omhhc2hGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5oCmluZGV4IDhkODkxYmRkOGQzZWU4MjhkYmI5Yzc3YTQ0MjRm
YzU4MGMyZTRhNmQuLjdiNzY1OThkMmI3Mjk1YjRkZjk0MGI0MWZjY2RkYjQwODE5NjljZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgK
QEAgLTEwNSwxMSArMTA1LDExIEBAIHB1YmxpYzoKICAgICAvLyB0byBwb2ludCB0byBpdC4gVGhp
cyBmb3JjZXMgY2FsbGVycyB0byBoYXZlIGEgQ29kZUJsb2NrKiBpbiBhIHJlZ2lzdGVyIG9yIG9u
IHRoZSBzdGFjayB0aGF0IHdpbGwgYmUgbWFya2VkCiAgICAgLy8gYnkgY29uc2VydmF0aXZlIEdD
IGlmIGEgR0MgaGFwcGVucyBhZnRlciB3ZSBjcmVhdGUgdGhlIENvZGVCbG9jay4KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRXhlY3V0YWJsZVR5cGU+Ci0gICAgSlNPYmplY3QqIHByZXBhcmVGb3JF
eGVjdXRpb24oVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktp
bmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jayk7CisgICAgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24qPiBwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spOwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKLSAgICBKU09iamVjdCog
cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbio+IHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKFZNJiwgSlNGdW5jdGlvbiosIEpTU2NvcGUq
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqJik7CiAKIHByb3RlY3RlZDoKICAg
ICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBmOTY3NzgxMGJhYzM3YWMyMzJk
MWJlMzUwNzNiZmQ4NDU3MGY0YmU2Li44Y2M3ZjFkYzI4YTQzZDEwMGYzMWY1YTZjNzZjMjU2ZWMz
MDNmZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBA
IC0xNDYyLDcgKzE0NjIsNyBAQCBzdGF0aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjYW5kaWRh
dGVDb2RlQmxvY2sgPSBmdW5jLT5qc0V4ZWN1dGFibGUoKS0+ZWl0aGVyQ29kZUJsb2NrKCk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnBy
ZXRfY2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBjYW5kaWRh
dGVDb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CiAg
ICAgfQogCiAgICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jayAmJiBWTUluc3BlY3Rvcjo6aXNWYWxp
ZENvZGVCbG9jayhleGVjLCBjYW5kaWRhdGVDb2RlQmxvY2spKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxn
b3JpdGhtLmgKaW5kZXggZTRlNTFhNTNhM2UxYTBhOTkzNjJiYmJjODNjOGFiNWIwMTBmMWY3Ny4u
NjYxYzY5MmUwMmVkNTQwNGExMGJjNjM5ZDMwZmViOGMwMDgxZGQ1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsZ29yaXRobS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RyaW5n
PgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KQEAgLTE4MSw2ICsxODIsMjMgQEAgYm9vbCBmaW5kQml0SW5Xb3JkKFQgd29yZCwg
c2l6ZV90JiBpbmRleCwgc2l6ZV90IGVuZEluZGV4LCBib29sIHZhbHVlKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorLy8gQ29waWVkIGZyb20gV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAordGVtcGxh
dGU8dHlwZW5hbWUgVG9UeXBlLCB0eXBlbmFtZSBGcm9tVHlwZT4KK2lubGluZSBUb1R5cGUgYml0
d2lzZV9jYXN0KEZyb21UeXBlIGZyb20pCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRnJv
bVR5cGUpID09IHNpemVvZihUb1R5cGUpLCAiYml0d2lzZV9jYXN0IHNpemUgb2YgRnJvbVR5cGUg
YW5kIFRvVHlwZSBtdXN0IGJlIGVxdWFsISIpOworI2lmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkK
KyNpZiBfX2hhc19mZWF0dXJlKGlzX3RyaXZpYWxseV9jb3B5YWJsZSkKKyAgICAvLyBOb3QgYWxs
IHJlY2VudCBTVEwgaW1wbGVtZW50YXRpb25zIHN1cHBvcnQgdGhlIHN0ZDo6aXNfdHJpdmlhbGx5
X2NvcHlhYmxlIHR5cGUgdHJhaXQuIFdvcmsgYXJvdW5kIHRoaXMgYnkgb25seSBjaGVja2luZyBv
biB0b29sY2hhaW5zIHdoaWNoIGhhdmUgdGhlIGVxdWl2YWxlbnQgY29tcGlsZXIgaW50cmluc2lj
LgorICAgIHN0YXRpY19hc3NlcnQoX19pc190cml2aWFsbHlfY29weWFibGUoVG9UeXBlKSwgImJp
dHdpc2VfY2FzdCBvZiBub24tdHJpdmlhbGx5LWNvcHlhYmxlIHR5cGUhIik7CisgICAgc3RhdGlj
X2Fzc2VydChfX2lzX3RyaXZpYWxseV9jb3B5YWJsZShGcm9tVHlwZSksICJiaXR3aXNlX2Nhc3Qg
b2Ygbm9uLXRyaXZpYWxseS1jb3B5YWJsZSB0eXBlISIpOworI2VuZGlmCisjZW5kaWYKKyAgICB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUb1R5cGU+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6
Om1lbWNweShzdGF0aWNfY2FzdDx2b2lkKj4oJnRvKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KCZmcm9t
KSwgc2l6ZW9mKHRvKSk7CisgICAgcmV0dXJuIHRvOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFs
bG9jCiAKICNlbmRpZiAvLyBBbGdvcml0aG1faApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29EaXJlY3RvcnlQYWdlSW5saW5lcy5oCmluZGV4IGExNDllMTA4ZDEzN2M5NDFlOTAwYjU3
M2U5OGZkMzVlMWIwMTRiOTguLjdjZWFiOGI2YTY0YWU3YzNjNmJmODJmNjg3MTBkY2I1MmU5ZWIw
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5UGFnZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeVBhZ2VJbmxp
bmVzLmgKQEAgLTM5LDcgKzM5LDEwIEBAIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6SXNvRGly
ZWN0b3J5UGFnZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwLCB1bnNpZ25lZCBpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+CiBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIElzb0RpcmVjdG9y
eVBhZ2U8Q29uZmlnPjo6cGFnZUZvcihJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlcz4qIHBh
eWxvYWQpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvRGlyZWN0b3J5UGFnZTxD
b25maWc+Kj4oCisgICAgLy8gdGhlIGNoYXIqIGNhc3QgaXMgb25seSB1c2VkIHRvIGRvIGEgcG9p
bnRlciBjYWxjdWxhdGlvbiwgYW5kIHNhaWQKKyAgICAvLyBjYWxjdWxhdGlvbiByZXN1bHRzIGlu
IGEgcG9pbnRlciB0byBhbiBleGlzdGluZywgY29ycmVjdGx5IGFsaWduZWQKKyAgICAvLyBJc29E
aXJlY3RvcnlQYWdlLgorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SXNvRGlyZWN0b3J5UGFnZTxD
b25maWc+Kj4oCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBheWxvYWQpIC0gQk9G
RlNFVE9GKElzb0RpcmVjdG9yeVBhZ2UsIHBheWxvYWQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29QYWdlSW5saW5lcy5oCmluZGV4IDBjNDc4NjRjN2I0OWEwZWVjOGEyNjEwY2VmNjdm
YTMyOGE0ZWY0YzQuLmFjNTcyNjY3NzgxM2Y4NzdkNTMxMjZhYWY4OWZhMTkwZmM3ODE5NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKQEAgLTE4OCw3ICsxODgsMTAg
QEAgRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQogICAgICAgICBj
aGFyKiBjZWxsQnl0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgaW5kZXggKiBD
b25maWc6Om9iamVjdFNpemU7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIlcDogcHV0dGluZyAlcCBvbiBmcmVlIGxpc3QuXG4iLCB0aGlzLCBjZWxs
Qnl0ZSk7Ci0gICAgICAgIEZyZWVDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdDxGcmVlQ2Vs
bCo+KGNlbGxCeXRlKTsKKworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoQ29uZmlnOjpvYmplY3RT
aXplICUgYWxpZ25vZihGcmVlQ2VsbCkpLCAiQ29uZmlnOjpvYmplY3RTaXplIHNob3VsZCByZXNw
ZWN0IGFsaWdubWVudCBvZiBGcmVlQ2VsbCIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoYWxp
Z25vZihJc29QYWdlPENvbmZpZz4pICUgYWxpZ25vZihGcmVlQ2VsbCkpLCAiQWxpZ25tZW50IG9m
IElzb1BhZ2U8Q29uZmlnPiBzaG91bGQgbWF0Y2ggdGhhdCBvZiBGcmVlQ2VsbCIpOworICAgICAg
ICBGcmVlQ2VsbCogY2VsbCA9IGJpdHdpc2VfY2FzdDxGcmVlQ2VsbCo+KGNlbGxCeXRlKTsKICAg
ICAgICAgY2VsbC0+c2V0TmV4dChoZWFkLCBzZWNyZXQpOwogICAgICAgICBoZWFkID0gY2VsbDsK
ICAgICAgICAgYnl0ZXMgKz0gQ29uZmlnOjpvYmplY3RTaXplOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>