<?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>205239</bug_id>
          
          <creation_ts>2019-12-14 14:06:53 -0800</creation_ts>
          <short_desc>Add WKWebView SPI to evaluate a function with arguments</short_desc>
          <delta_ts>2020-02-19 00:18:50 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>krzysztof.modras</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.org</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1598669</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-14 14:06:53 -0800</bug_when>
    <thetext>More ScriptController refactoring in preparation for async functions

- Bundle everything needed for script evaluation into a &quot;JavaScriptExecutionParameters&quot; object
- Instead of returning a value, make evaluateInWorld take a completion handler to callback with the result

(For this patch, the completion handler will always be called synchronously)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598771</commentid>
    <comment_count>1</comment_count>
      <attachid>385725</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-15 15:33:02 -0800</bug_when>
    <thetext>Created attachment 385725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598772</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-15 15:37:30 -0800</bug_when>
    <thetext>Going to be going through a series of EWS runs to find failures on the other platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598773</commentid>
    <comment_count>3</comment_count>
      <attachid>385726</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-15 15:46:17 -0800</bug_when>
    <thetext>Created attachment 385726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598798</commentid>
    <comment_count>4</comment_count>
      <attachid>385736</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-15 21:48:28 -0800</bug_when>
    <thetext>Created attachment 385736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598799</commentid>
    <comment_count>5</comment_count>
      <attachid>385737</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-15 22:07:17 -0800</bug_when>
    <thetext>Created attachment 385737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598800</commentid>
    <comment_count>6</comment_count>
      <attachid>385738</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-15 22:42:36 -0800</bug_when>
    <thetext>Created attachment 385738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598992</commentid>
    <comment_count>7</comment_count>
      <attachid>385789</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 11:15:01 -0800</bug_when>
    <thetext>Created attachment 385789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599042</commentid>
    <comment_count>8</comment_count>
      <attachid>385797</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 12:47:52 -0800</bug_when>
    <thetext>Created attachment 385797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599055</commentid>
    <comment_count>9</comment_count>
      <attachid>385800</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 13:11:23 -0800</bug_when>
    <thetext>Created attachment 385800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599084</commentid>
    <comment_count>10</comment_count>
      <attachid>385808</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 13:59:36 -0800</bug_when>
    <thetext>Created attachment 385808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599172</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 15:36:31 -0800</bug_when>
    <thetext>The changes further required to make this a no-behavior change are becoming problematic. Resetting a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599225</commentid>
    <comment_count>12</comment_count>
      <attachid>385835</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 17:12:44 -0800</bug_when>
    <thetext>Created attachment 385835
WIP to take home might not even build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599275</commentid>
    <comment_count>13</comment_count>
      <attachid>385852</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-16 21:00:40 -0800</bug_when>
    <thetext>Created attachment 385852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599471</commentid>
    <comment_count>14</comment_count>
      <attachid>385852</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-17 11:26:50 -0800</bug_when>
    <thetext>Comment on attachment 385852
Patch

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

I don&apos;t think this accomplishes anything.  It just makes a Function that must be called immediately.  The whole point of Functions is that they don&apos;t need to be called immediately.  Do you have plans to push this asynchrony lower?  If not, then your intended caller could just take a Function, do the work synchronously, then call the Function with the result.

&gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt; -    String sourceURL;
&gt; +    String sourceURL { };

This does nothing because String has a default constructor.

&gt; Source/WebCore/bindings/js/ScriptController.h:93
&gt; +    using ResolveFunction = WTF::Function&lt;void(ValueOrException)&gt;;

CompletionHandler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599492</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-17 12:01:55 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; Comment on attachment 385852 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385852&amp;action=review
&gt; 
&gt; I don&apos;t think this accomplishes anything.  It just makes a Function that
&gt; must be called immediately.  The whole point of Functions is that they don&apos;t
&gt; need to be called immediately.  Do you have plans to push this asynchrony
&gt; lower?  If not, then your intended caller could just take a Function, do the
&gt; work synchronously, then call the Function with the result.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt; &gt; -    String sourceURL;
&gt; &gt; +    String sourceURL { };
&gt; 
&gt; This does nothing because String has a default constructor.

Actually it does!

On older compilers (such as High Sierra which the bots run), you can&apos;t do a partial struct initialization when some members have default initializers but others don&apos;t.

See the build failure from the penultimate patch that this ultimate patch fixes (https://ews-build.webkit.org/#/builders/7/builds/15941)

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.h:93
&gt; &gt; +    using ResolveFunction = WTF::Function&lt;void(ValueOrException)&gt;;
&gt; 
&gt; CompletionHandler?

ResolveFunction is a carryover from a future patch - as the asynchrnocity will be waiting for a promise to resolve.

If you insist it be called CompletionHandler now I can change it, but I&apos;ll be changing it back two patches from now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599523</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-17 13:05:23 -0800</bug_when>
    <thetext>Discussed IRL - This was broken out from a completed larger patch, but the discussion inspired me to reanalyze the completed larger patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600630</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-19 22:08:11 -0800</bug_when>
    <thetext>Repurposing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600631</commentid>
    <comment_count>18</comment_count>
      <attachid>386182</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-19 22:09:55 -0800</bug_when>
    <thetext>Created attachment 386182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600632</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-19 22:10:28 -0800</bug_when>
    <thetext>Patch not quite for review - Trying the EWS builds, and also getting feedback from JS folks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600635</commentid>
    <comment_count>20</comment_count>
      <attachid>386182</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-12-19 22:39:55 -0800</bug_when>
    <thetext>Comment on attachment 386182
Patch

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

&gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt; +    String sourceURL { };

Does this do anything? String has a default initializer.

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:32
&gt; +enum class RunAsAsyncFunction {

I think this can be `enum class RunAsAsyncFunction : uint8_t`? But maybe EnumTraits will do this for you when XPCing?

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:62
&gt; +    String source;
&gt; +    RunAsAsyncFunction runAsAsyncFunction;
&gt; +    Optional&lt;WebCore::ScriptController::ArgumentWireBytesMap&gt; arguments;
&gt; +    ForceUserGesture forceUserGesture;

Isn&apos;t it standard WebKit practice to put the members of a struct/class at the bottom of the struct/class?

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:66
&gt; +        encoder &lt;&lt; source &lt;&lt; runAsAsyncFunction &lt;&lt; arguments &lt;&lt; forceUserGesture;

Out of curiosity, why does encoder use &lt;&lt; and not a variadic template call?

&gt; Source/WebCore/bindings/js/ScriptController.cpp:643
&gt; +        JSValue functionObject = JSExecState::profiledEvaluate(&amp;globalObject, JSC::ProfilingReason::Other, jsSourceCode, &amp;proxy, evaluationException);

You probably to check for an exception after this call. Then you don&apos;t need to check for !functionObject below.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:647
&gt; +        // FIXME: JS guys say there&apos;s a more correct way to do this
&gt; +        if (!functionObject || !functionObject.isFunction(world.vm()))
&gt; +            break;

I leave this to Saam. I&apos;m not exactly sure which method he was thinking of right now... maybe isCallable?

&gt; Source/WebCore/bindings/js/ScriptController.cpp:656
&gt; +        returnValue = JSExecState::profiledCall(&amp;globalObject, JSC::ProfilingReason::Other, functionObject, callType, callData, &amp;proxy, markedArguments, evaluationException);

Ugh, getting the CallData/CallType shouldn&apos;t be required to make a call into JS... Unfortunately, we don&apos;t have a profiling version of call for places where we haven&apos;t already entered the VM. Can you file a bug against JSC to add this and FIXME link to it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600766</commentid>
    <comment_count>21</comment_count>
      <attachid>386182</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-20 09:44:44 -0800</bug_when>
    <thetext>Comment on attachment 386182
Patch

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

&gt;&gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt;&gt; +    String sourceURL { };
&gt; 
&gt; Does this do anything? String has a default initializer.

https://bugs.webkit.org/show_bug.cgi?id=205239#c15

&gt;&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:32
&gt;&gt; +enum class RunAsAsyncFunction {
&gt; 
&gt; I think this can be `enum class RunAsAsyncFunction : uint8_t`? But maybe EnumTraits will do this for you when XPCing?

These should use bool as their storage type.  Then you don&apos;t need EnumTraits at all because our IPC code knows bool enum types only have two possible values.

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:77
&gt; +        RunAsAsyncFunction runAsAsyncFunction;
&gt; +        if (!decoder.decode(runAsAsyncFunction))
&gt; +            return WTF::nullopt;

Could you use Decoder&apos;s operator&gt;&gt; into an Optional&lt;RunAsAsyncFunction&gt;?  That&apos;s what we&apos;re trying to push our decoders towards.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:599
&gt; +    StringBuilder functionStringBuilder;

There&apos;s got to be a more efficient way of doing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600920</commentid>
    <comment_count>22</comment_count>
      <attachid>386182</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-20 14:08:08 -0800</bug_when>
    <thetext>Comment on attachment 386182
Patch

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

&gt; Source/WebCore/bindings/js/ScriptController.cpp:619
&gt; +            functionStringBuilder.append(&quot;,&quot;);

Can append a character instead of a one-character string literal. Slightly more efficient.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:627
&gt; +    functionStringBuilder.append(&quot;){&quot;);
&gt; +    functionStringBuilder.append(parameters.source);
&gt; +    functionStringBuilder.append(&quot;})&quot;);

Can do all three of these with a single call to append and three arguments. Slightly more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601262</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 10:18:34 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #21)

&gt; 
&gt; &gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:77
&gt; &gt; +        RunAsAsyncFunction runAsAsyncFunction;
&gt; &gt; +        if (!decoder.decode(runAsAsyncFunction))
&gt; &gt; +            return WTF::nullopt;
&gt; 
&gt; Could you use Decoder&apos;s operator&gt;&gt; into an Optional&lt;RunAsAsyncFunction&gt;? 
&gt; That&apos;s what we&apos;re trying to push our decoders towards.

For pods like an enum, isn&apos;t that more code and more storage space?

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:599
&gt; &gt; +    StringBuilder functionStringBuilder;
&gt; 
&gt; There&apos;s got to be a more efficient way of doing this.

I&apos;ll implement Darin&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601263</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 10:25:01 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #20)
&gt; Comment on attachment 386182 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386182&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt; &gt; +    String sourceURL { };
&gt; 
&gt; Does this do anything? String has a default initializer.

Alex already covered this by linking to a past comment.
But for those following along that don&apos;t click his link:

When using partial initialion lists with struct in older compilers they require explicit default initialization of all members, even if they are a class that has a default constructor.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:62
&gt; &gt; +    String source;
&gt; &gt; +    RunAsAsyncFunction runAsAsyncFunction;
&gt; &gt; +    Optional&lt;WebCore::ScriptController::ArgumentWireBytesMap&gt; arguments;
&gt; &gt; +    ForceUserGesture forceUserGesture;
&gt; 
&gt; Isn&apos;t it standard WebKit practice to put the members of a struct/class at
&gt; the bottom of the struct/class?

I don&apos;t think we have any such guideline. I&apos;ve definitely seen it all ways.
Maybe more structs lean one way than the other and we should formalize the style.

&gt; &gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:66
&gt; &gt; +        encoder &lt;&lt; source &lt;&lt; runAsAsyncFunction &lt;&lt; arguments &lt;&lt; forceUserGesture;
&gt; 
&gt; Out of curiosity, why does encoder use &lt;&lt; and not a variadic template call?

We started on WK2 before C++11 was formalized and available everywhere, and IPC encoder/decoder were kind of a core feature.

So the answer is &quot;appeal to ancient wisdom&quot;


&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:643
&gt; &gt; +        JSValue functionObject = JSExecState::profiledEvaluate(&amp;globalObject, JSC::ProfilingReason::Other, jsSourceCode, &amp;proxy, evaluationException);
&gt; 
&gt; You probably to check for an exception after this call. Then you don&apos;t need
&gt; to check for !functionObject below.

Okay.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:647
&gt; &gt; +        // FIXME: JS guys say there&apos;s a more correct way to do this
&gt; &gt; +        if (!functionObject || !functionObject.isFunction(world.vm()))
&gt; &gt; +            break;
&gt; 
&gt; I leave this to Saam. I&apos;m not exactly sure which method he was thinking of
&gt; right now... maybe isCallable?

I guess I&apos;ll go with isCallable.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:656
&gt; &gt; +        returnValue = JSExecState::profiledCall(&amp;globalObject, JSC::ProfilingReason::Other, functionObject, callType, callData, &amp;proxy, markedArguments, evaluationException);
&gt; 
&gt; Ugh, getting the CallData/CallType shouldn&apos;t be required to make a call into
&gt; JS... Unfortunately, we don&apos;t have a profiling version of call for places
&gt; where we haven&apos;t already entered the VM. Can you file a bug against JSC to
&gt; add this and FIXME link to it here?

Can do. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601264</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 10:28:01 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #24)
&gt; (In reply to Keith Miller from comment #20)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:647
&gt; &gt; &gt; +        // FIXME: JS guys say there&apos;s a more correct way to do this
&gt; &gt; &gt; +        if (!functionObject || !functionObject.isFunction(world.vm()))
&gt; &gt; &gt; +            break;
&gt; &gt; 
&gt; &gt; I leave this to Saam. I&apos;m not exactly sure which method he was thinking of
&gt; &gt; right now... maybe isCallable?
&gt; 
&gt; I guess I&apos;ll go with isCallable.

Actually it looks like isCallable requires the CallData stuff, which you later suggest shouldn&apos;t really be required.

So I&apos;ll leave it as isFunction for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601267</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 10:35:10 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #20)
&gt; Comment on attachment 386182 [details]
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:656
&gt; &gt; +        returnValue = JSExecState::profiledCall(&amp;globalObject, JSC::ProfilingReason::Other, functionObject, callType, callData, &amp;proxy, markedArguments, evaluationException);
&gt; 
&gt; Ugh, getting the CallData/CallType shouldn&apos;t be required to make a call into
&gt; JS... Unfortunately, we don&apos;t have a profiling version of call for places
&gt; where we haven&apos;t already entered the VM. Can you file a bug against JSC to
&gt; add this and FIXME link to it here?


Added to the patch, and: https://bugs.webkit.org/show_bug.cgi?id=205562</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601268</commentid>
    <comment_count>27</comment_count>
      <attachid>386345</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 10:38:28 -0800</bug_when>
    <thetext>Created attachment 386345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601327</commentid>
    <comment_count>28</comment_count>
      <attachid>386362</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 15:50:16 -0800</bug_when>
    <thetext>Created attachment 386362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601330</commentid>
    <comment_count>29</comment_count>
      <attachid>386365</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 16:09:10 -0800</bug_when>
    <thetext>Created attachment 386365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601352</commentid>
    <comment_count>30</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 18:51:17 -0800</bug_when>
    <thetext>The build failures on the bots:
Undefined symbols for architecture arm64:
  &quot;JSC::getVM(JSC::JSGlobalObject*)&quot;, referenced from:
      API::SerializedScriptValue::wireBytesFromNSObject(objc_object*) in UnifiedSource19-mm.o

Unfortunately, wireBytesFromNSObject() doesn&apos;t directly call getVM, *and* both debug and release are building great for me locally.

Will explore in a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601363</commentid>
    <comment_count>31</comment_count>
      <attachid>386373</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 21:39:09 -0800</bug_when>
    <thetext>Created attachment 386373
Patch

Commenting out the suspicious GetVM.h to try on EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601364</commentid>
    <comment_count>32</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 21:45:29 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #31)
&gt; Created attachment 386373 [details]
&gt; Patch
&gt; 
&gt; Commenting out the suspicious GetVM.h to try on EWS

So that clearly didn&apos;t work.

GetVM.h declares the existence of getVM(), but there is no actual definition anywhere but inline in JSGlobalObjectInlines.h

Which is fine... Except the bizarre linker error says it can&apos;t be found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601365</commentid>
    <comment_count>33</comment_count>
      <attachid>386374</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 21:47:13 -0800</bug_when>
    <thetext>Created attachment 386374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601367</commentid>
    <comment_count>34</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-23 22:21:28 -0800</bug_when>
    <thetext>The linux build failures are now similar to an earlier much different patch in this series:

In file included from DerivedSources/WebCore/unified-sources/UnifiedSource-42f7b70e-2.cpp:6:
WebCore/xml/XPathGrammar.y: In function ‘int xpathyyparse(WebCore::XPath::Parser&amp;)’:
WebCore/xml/XPathGrammar.y:404:34: error: expected type-specifier before ‘Path’
In file included from DerivedSources/WebCore/unified-sources/UnifiedSource-42f7b70e-2.cpp:6:
WebCore/xml/XPathGrammar.y:411:34: error: expected type-specifier before ‘Path’

I&apos;m... really not sure how to proceed resolving that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601374</commentid>
    <comment_count>35</comment_count>
      <attachid>386380</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-23 23:33:21 -0800</bug_when>
    <thetext>Created attachment 386380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601375</commentid>
    <comment_count>36</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-12-23 23:34:22 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601376</commentid>
    <comment_count>37</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-23 23:35:56 -0800</bug_when>
    <thetext>That patch fixes the XPath complaints for me locally, and then fixes the rest of the subsequent GTK build errors (Headers.cmake, WebKitWebView, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601423</commentid>
    <comment_count>38</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-24 13:19:17 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #37)
&gt; That patch fixes the XPath complaints for me locally, and then fixes the
&gt; rest of the subsequent GTK build errors (Headers.cmake, WebKitWebView, etc.)

Thanks for your help!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601424</commentid>
    <comment_count>39</comment_count>
      <attachid>386393</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-24 13:27:43 -0800</bug_when>
    <thetext>Created attachment 386393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601552</commentid>
    <comment_count>40</comment_count>
      <attachid>386393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-26 17:51:19 -0800</bug_when>
    <thetext>Comment on attachment 386393
Patch

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

Did not review the entire patch, but one thought.

&gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt; -    String sourceURL;
&gt; +    String sourceURL { };

Should not make this change. This doesn’t make a difference ... sourceURL will be a null string with or without this new set of braces. Also note that the data member above named &quot;message&quot; behaves the same and we are not changing it.

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:48
&gt; +    RunJavaScriptParameters(const String&amp; source, RunAsAsyncFunction runAsAsyncFunction, Optional&lt;ArgumentWireBytesMap&gt; arguments, ForceUserGesture forceUserGesture)

Need an overload with String&amp;&amp; and Optional&lt;ArgumentWireBytesMap&gt;&amp;&amp;. That can be used in the decode function template below. Without the &amp;&amp; on the arguments, the WTFMove does not good. Without the &amp;&amp; on source, then WTFMove can’t be done to save a little reference count churn.

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:84
&gt; +        return { { source, runAsAsyncFunction, WTFMove(arguments), forceUserGesture } };

Should add a WTFMove around source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601571</commentid>
    <comment_count>41</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-26 21:34:54 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #40)
&gt; Comment on attachment 386393 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386393&amp;action=review
&gt; 
&gt; Did not review the entire patch, but one thought.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt; &gt; -    String sourceURL;
&gt; &gt; +    String sourceURL { };
&gt; 
&gt; Should not make this change. This doesn’t make a difference ... sourceURL
&gt; will be a null string with or without this new set of braces. Also note that
&gt; the data member above named &quot;message&quot; behaves the same and we are not
&gt; changing it.

This is the third time I&apos;ve had to reply to this very same comment.

This change is required by older compilers (e.g. High Sierra on the bots) because they improperly handle initialization lists without it.

Here is a direct link to an error caused by omitting this change:
https://ews-build.webkit.org/#/builders/7/builds/15941/steps/7/logs/errors

&gt; 
&gt; &gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:48
&gt; &gt; +    RunJavaScriptParameters(const String&amp; source, RunAsAsyncFunction runAsAsyncFunction, Optional&lt;ArgumentWireBytesMap&gt; arguments, ForceUserGesture forceUserGesture)
&gt; 
&gt; Need an overload with String&amp;&amp; and Optional&lt;ArgumentWireBytesMap&gt;&amp;&amp;. That
&gt; can be used in the decode function template below. Without the &amp;&amp; on the
&gt; arguments, the WTFMove does not good. Without the &amp;&amp; on source, then WTFMove
&gt; can’t be done to save a little reference count churn.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:84
&gt; &gt; +        return { { source, runAsAsyncFunction, WTFMove(arguments), forceUserGesture } };
&gt; 
&gt; Should add a WTFMove around source.

Will do both of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601576</commentid>
    <comment_count>42</comment_count>
      <attachid>386432</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-26 21:52:33 -0800</bug_when>
    <thetext>Created attachment 386432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601577</commentid>
    <comment_count>43</comment_count>
      <attachid>386433</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-26 22:00:29 -0800</bug_when>
    <thetext>Created attachment 386433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601578</commentid>
    <comment_count>44</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-26 22:07:14 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #43)
&gt; Created attachment 386433 [details]
&gt; Patch

Confirmed with this patch that removing the sourceURL intializer definitely still breaks things on the older compilers :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601579</commentid>
    <comment_count>45</comment_count>
      <attachid>386434</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-26 22:08:11 -0800</bug_when>
    <thetext>Created attachment 386434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601629</commentid>
    <comment_count>46</comment_count>
      <attachid>386393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-27 09:59:57 -0800</bug_when>
    <thetext>Comment on attachment 386393
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/ExceptionDetails.h:36
&gt;&gt;&gt; +    String sourceURL { };
&gt;&gt; 
&gt;&gt; Should not make this change. This doesn’t make a difference ... sourceURL will be a null string with or without this new set of braces. Also note that the data member above named &quot;message&quot; behaves the same and we are not changing it.
&gt; 
&gt; This is the third time I&apos;ve had to reply to this very same comment.
&gt; 
&gt; This change is required by older compilers (e.g. High Sierra on the bots) because they improperly handle initialization lists without it.
&gt; 
&gt; Here is a direct link to an error caused by omitting this change:
&gt; https://ews-build.webkit.org/#/builders/7/builds/15941/steps/7/logs/errors

Given your experience having to respond to this comment three times, I think a brief comment on that line of source code is called for. That way someone won’t remove this in the future and then learn about why it’s there only when a High Sierra build fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601654</commentid>
    <comment_count>47</comment_count>
      <attachid>386461</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-27 19:05:49 -0800</bug_when>
    <thetext>Created attachment 386461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601655</commentid>
    <comment_count>48</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-27 19:07:41 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #46)
&gt; Comment on attachment 386393 [details]
&gt; 
&gt; Given your experience having to respond to this comment three times, I think
&gt; a brief comment on that line of source code is called for. That way someone
&gt; won’t remove this in the future and then learn about why it’s there only
&gt; when a High Sierra build fails.

Indeed! Done.

Perhaps we can all band together for a small Christmas miracle and review the parts of this patch not contained in ExceptionDetails.h :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601657</commentid>
    <comment_count>49</comment_count>
      <attachid>386461</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-27 19:56:29 -0800</bug_when>
    <thetext>Comment on attachment 386461
Patch

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

r=me with lots of nits.

&gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:40
&gt; +    RunJavaScriptParameters(const String&amp; source, bool runAsAsyncFunction, Optional&lt;ArgumentWireBytesMap&gt; arguments, bool forceUserGesture)

I think if we remove both of these constructors and just use WTFMove in the decoder, it should do everything Darin hoped.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:569
&gt; +    auto result = executeScriptInWorld(world, { script, false, WTF::nullopt, forceUserGesture });

It would probably be worth putting RunJavaScriptParameters here so we find it easier when we add more members to RunJavaScriptParameters that have initializers and this will continue to successfully compile.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:589
&gt; +    default:
&gt; +        RELEASE_ASSERT_NOT_REACHED();

I think it would be better to not have a default here.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:614
&gt; +            errorMessage = &quot;Unable to deserialize argument to execute asynchronous JavaScript function&quot;;
&gt; +            break;

Should we return the exception here?

&gt; Source/WebCore/bindings/js/ScriptController.h:99
&gt; +    using ResolveFunction = WTF::Function&lt;void(ValueOrException)&gt;;

Could this be a CompletionHandler, because it needs to be called once?
WTF:: unnecessary in either case.

&gt; Source/WebCore/xml/XPathGrammar.y:404
&gt; +        $$ = new XPath::Path(std::unique_ptr&lt;Expression&gt;($1), std::unique_ptr&lt;LocationPath&gt;($3));

This could use a comment in the ChangeLog saying it&apos;s unrelated but necessary to continue compiling for some reason.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:904
&gt; +    _page-&gt;runJavaScriptInMainFrame({ javaScriptString, (bool)asAsyncFunction, WTFMove(argumentsMap), (bool)forceUserGesture }, [handler](API::SerializedScriptValue* serializedScriptValue, Optional&lt;WebCore::ExceptionDetails&gt; details, WebKit::ScriptValueCallback::Error errorCode) {

I think we prefer !! or static_cast&lt;bool&gt; over c-style casting to bool.
Also, we should move handler into the capture list.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:319
&gt; +- (void)_callAsyncFunction:(NSString *)javaScriptString withArguments:(NSDictionary *)arguments completionHandler:(void (^)(id, NSError *error))completionHandler;

Could this be NSDictionary&lt;NSString *, id&gt; *?  It seems the keys are the variable names.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3382
&gt; +        send(Messages::WebPageProxy::ScriptValueCallback(dataReference, details, callbackID));

Maybe as a followup we could use sendWithAsyncReply instead of two messages and manually generating and keeping track of this identifier.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/AsyncFunction.mm:92
&gt; +    // Values can only be NSString, NSNumber, NSDate, NSArray, NSDictionary, and may only contain those 5 types.

The return value seems to be able to be NSNull.  Can a parameter? Either way,  I think that would be a great test case.
Also, what about NSMutableDictionary?  Also, what about custom classes that inherit from these types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601664</commentid>
    <comment_count>50</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-27 21:56:53 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #49)
&gt; Comment on attachment 386461 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386461&amp;action=review
&gt; 
&gt; r=me with lots of nits.

Accepting all of the nits except for where I comment:

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:589
&gt; &gt; +    default:
&gt; &gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; I think it would be better to not have a default here.

This was to placate one of the windows or linux compilers that complained about lack of return statement. *sigh*

&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:614
&gt; &gt; +            errorMessage = &quot;Unable to deserialize argument to execute asynchronous JavaScript function&quot;;
&gt; &gt; +            break;
&gt; 
&gt; Should we return the exception here?

I waffled on this.

Certainly not just the raw exception, as it would appear as if the function executed with a bizarre error.

So I decided to skip it because - since we validate the arguments up front in the UI process - I don&apos;t think we&apos;ll ever actually hit this.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/AsyncFunction.mm:92
&gt; &gt; +    // Values can only be NSString, NSNumber, NSDate, NSArray, NSDictionary, and may only contain those 5 types.
&gt; 
&gt; The return value seems to be able to be NSNull.  Can a parameter? 

Totally. Dunno how I missed that since I literally copied the comment from WKScriptMessage.h

&gt; Also, what about NSMutableDictionary?

Since it&apos;s a subclass of NSDictionary, yes. I&apos;ll add a test.

&gt; Also, what about custom classes that inherit from these types?

For string, number, and date. subclasses will work fine. The base class accessors will be used to serialize the argument to the javascript type.

Custom subclassing of NSArray and NSDictionary is a nonstarter for outside devs because of class clustering, etc etc.

I&apos;ll update the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601665</commentid>
    <comment_count>51</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-27 22:00:44 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #50)
&gt; (In reply to Alex Christensen from comment #49)
&gt; 
&gt; &gt; Also, what about custom classes that inherit from these types?
&gt; 
&gt; For string, number, and date. subclasses will work fine. The base class
&gt; accessors will be used to serialize the argument to the javascript type.
&gt; 
&gt; Custom subclassing of NSArray and NSDictionary is a nonstarter for outside
&gt; devs because of class clustering, etc etc.
&gt; 
&gt; I&apos;ll update the comment.

I was totally wrong; NSString, NSNumber, and NSDate are also all class clusters that are difficult to subclass.

I&apos;m gonna leave it as-is (besides adding NSNull)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601821</commentid>
    <comment_count>52</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-29 22:03:41 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #49)
&gt; 
&gt; &gt; Source/WebCore/bindings/js/RunJavaScriptParameters.h:40
&gt; &gt; +    RunJavaScriptParameters(const String&amp; source, bool runAsAsyncFunction, Optional&lt;ArgumentWireBytesMap&gt; arguments, bool forceUserGesture)
&gt; 
&gt; I think if we remove both of these constructors and just use WTFMove in the
&gt; decoder, it should do everything Darin hoped.

More followup:

The key to having these at all was the constructor that took the bools (which the API layers speak) and converted them to the enums (which IPC and WebCore now speak)

By adding the bool form, you lose the implicit constructor, so I needed to add that one too.

I&apos;ve left them and added all the WTFMoves</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601822</commentid>
    <comment_count>53</comment_count>
      <attachid>386509</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-29 22:11:06 -0800</bug_when>
    <thetext>Created attachment 386509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601877</commentid>
    <comment_count>54</comment_count>
      <attachid>386535</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-30 08:40:53 -0800</bug_when>
    <thetext>Created attachment 386535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601878</commentid>
    <comment_count>55</comment_count>
      <attachid>386536</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-30 08:53:50 -0800</bug_when>
    <thetext>Created attachment 386536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601908</commentid>
    <comment_count>56</comment_count>
      <attachid>386536</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-30 12:23:27 -0800</bug_when>
    <thetext>Comment on attachment 386536
Patch

Clearing flags on attachment: 386536

Committed r253950: &lt;https://trac.webkit.org/changeset/253950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601909</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-30 12:23:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601911</commentid>
    <comment_count>58</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-30 12:27:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/58245873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601923</commentid>
    <comment_count>59</comment_count>
      <attachid>386536</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-30 12:50:12 -0800</bug_when>
    <thetext>Comment on attachment 386536
Patch

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

&gt; Source/WebCore/bindings/js/ScriptController.cpp:649
&gt; +        if (!functionObject || !functionObject.isFunction(world.vm())) {

This check is ok. I was mistaken. This isn&apos;t the correct way to check if an arbitrary value is &quot;callable&quot;. However, the value here isn&apos;t arbitrary. You&apos;re using a function in your text that you&apos;re evaluating. So isFunction is sufficient. Sorry for getting confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602459</commentid>
    <comment_count>60</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-03 09:07:01 -0800</bug_when>
    <thetext>*** Bug 134330 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385725</attachid>
            <date>2019-12-15 15:33:02 -0800</date>
            <delta_ts>2019-12-15 15:46:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191215153301.patch</filename>
            <type>text/plain</type>
            <size>55765</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4OGI4MDE2YTE3M2E4
ZjllMzgxOGQ3NzllZTRjYmJiMmMwZWJlODNjLi5kNjdkNDU4YTkwNDQxMjA1NjU2NDFiNjFjNzI2
OGE0NzViZGJjYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNTI0LDYgKzE1MjQsNyBAQAogCQk1MUE5RDlFQTE5NUI5MzFG
MDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTlEOUU4MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFu
YWdlci5oICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFGNTAz
NjE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4
IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MUI0MEQ4QzIzQTU0ODk1MDBFMDUyNDEgLyogSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQjQwRDhCMjNBNTQ4NTkwMEUwNTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQjQ1RDIxMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0NUQxRjFB
QjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDEwMUZEMjc4MkQwMEVFMjg1OSAv
KiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCOTE0MEMxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFCOTE0MTExRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQjFGRDI3ODI1
MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjYyOCw3ICsyNjI5LDcgQEAKIAkJOTM0M0NCODIx
MkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDNDQjgwMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0
Q29kZWNVVEY4LmggKi87IH07CiAJCTkzNDQyQzlFMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmggKi87IH07CiAJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRl
eHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0
OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM0Q0MxMEEwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3Vy
Y2VDb2RlLmggKi87IH07CisJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3Vy
Y2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEY3MTNBMEQ1QTZGMTAw
MDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTM5MEQ1QTZGMTAwMDAxOEQ2OSAv
KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVz
b3VyY2VFcnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTAwRjMy
MTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MDBGMzExM0ZERTNCRTAwOTlFQzI0
IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NTMsNyArMzg1NCw3IEBACiAJCUJDQjE2QzFDMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
MTZDMjAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwNzA5NzlDM0JEMDA0Njc3NDEg
LyogQ2FjaGVkUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMyMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzA5MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
ci5oICovOyB9OwotCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IH07CisJCUJDQjE2QzI0MDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3Jp
cHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
Q0IxNkMyODA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEYwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMkEwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5MkQ0RTEy
OTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NjcsNyArMzg2OCw3IEBACiAJCUJDQ0ZCQUU4
MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERv
Y3VtZW50UGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEMEUwRkIwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwRTBGODBFOTcy
QzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QwRTBGQzBFOTcyQzM1MDAyNjVERUEgLyogU2Vj
dXJpdHlPcmlnaW5IYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QwRTBGOTBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW5IYXNoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNENTMz
NjQwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5
MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgfTsKKwkJQkNENTMz
NjQwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5
MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMTBDMTdCNjlFMDA1Qzkw
QTIgLyogSlNOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRDlDMkJEMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDlD
MkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
b2RlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RENDU0RDEyMzZDOTVDMDA5QTc5
ODUgLyogQ29sdW1uSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC04MzE4LDYgKzgzMTksNyBAQAogCQk1MUFCRjY0QzE2MzkyRTI4MDAxMzJB
N0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9hZGVyU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUFGNTAzNTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRlclR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lX
ZWJBcmNoaXZlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFC
NDBEOEIyM0E1NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRFeGVjdXRpb25QYXJh
bWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1RDFFMUFCOEQxRTIw
MDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUI0NUQxRjFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdp
c3RyYXRpb25TdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3Ry
YXRpb25TdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUzMzUsNiArMjUz
MzcsNyBAQAogCQkJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAq
LywKIAkJCQlDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgKi8sCiAJCQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRp
ZXMuaCAqLywKKwkJCQk1MUI0MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYyODcyMDA1MDY1
QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJN0M1N0JGRTYxRURFMkY1
QjAwNTM0QTQ4IC8qIEpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggKi8sCkBAIC0zMDM3OSw2ICsz
MDM4Miw3IEBACiAJCQkJQ0Q1RkY0OUIyMTYyRTRCNzAwNEJEODZGIC8qIElTT1NjaGVtZVR5cGVC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUZGNDk3MjE2MkUyQjcwMDRCRDg2RiAvKiBJU09U
cmFja0VuY3J5cHRpb25Cb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMjQ3RTM4MUZFQTVGODYw
MDhDMDhDRSAvKiBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxQjQwRDhDMjNBNTQ4OTUwMEUwNTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMEQ5ODQxRjgxNUFFQzAwMjY4MzU2IC8qIEpT
QWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzMwRDk4NjFGODE1QUVDMDAy
NjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4Rjg4MDUwRkY5
NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcwMjBlZGU0NDk2ODFlOTY0YjAyOTE2NDYxMjQ5Y2Qy
ZjE2N2JmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ph
dmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIHsK
KyAgICBObywKKyAgICBZZXMsCit9OworCitzdHJ1Y3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMgeworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZTsKKyAgICBFeGVjdXRlV2l0
aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeyBFeGVjdXRlV2l0aFVzZXJHZXN0
dXJlOjpObyB9OworCisgICAgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMoY29uc3QgU3Ry
aW5nJiBzb3VyY2UpCisgICAgICAgIDogc291cmNlQ29kZShzb3VyY2UpCisgICAgeworICAgIH0K
KworICAgIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNl
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgICAgIDogc291cmNlQ29kZShzb3VyY2UpCisg
ICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlID8gRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6WWVzIDogRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8pCisgICAg
eworICAgIH0KKworICAgIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzKFNjcmlwdFNvdXJj
ZUNvZGUmJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdp
dGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vKQorICAgICAgICA6IHNv
dXJjZUNvZGUoV1RGTW92ZShpbnB1dFNvdXJjZUNvZGUpKQorICAgICAgICAsIGV4ZWN1dGVXaXRo
VXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgaW5w
dXRTb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRoVXNlckdlc3R1
cmUgPSBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICAgICAgOiBzb3VyY2VDb2RlKGlu
cHV0U291cmNlQ29kZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlKGV4ZWN1dGVX
aXRoVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBlbmNvZGVyIDw8IHNvdXJjZUNvZGUgPDwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEph
dmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IHNvdXJjZUNvZGUgPSBTY3Jp
cHRTb3VyY2VDb2RlOjpkZWNvZGU8RGVjb2Rlcj4oZGVjb2Rlcik7CisgICAgICAgIGlmICghc291
cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgRXhl
Y3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlOworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gSmF2YVNjcmlwdEV4ZWN1dGlvblBh
cmFtZXRlcnMgeyBXVEZNb3ZlKCpzb3VyY2VDb2RlKSwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSB9
OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNv
cmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmUsCisgICAgICAgIFdlYkNvcmU6OkV4ZWN1dGVXaXRo
VXNlckdlc3R1cmU6Ok5vLAorICAgICAgICBXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJl
OjpZZXMKKyAgICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggOGU0YzdiMzgxMjQ0ZTc3NmJkZDU4MzRhZTQxOTM2ZDdk
Y2M2MjI4Zi4uMTllMzRiMWUyMzRmNGM0OWE0YTM0YTRlMzU4MTc5ODNlZTU1MWNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIGlmIChtX2Z1bmN0aW9uKQogICAgICAgICBleGVjdXRlRnVuY3Rpb25JbkNvbnRl
eHQod2luZG93LCB3aW5kb3ctPnByb3h5KCksIGRvY3VtZW50KTsKICAgICBlbHNlCi0gICAgICAg
IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKG1f
aXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRl
SW5Xb3JsZChtX2lzb2xhdGVkV29ybGQsIHsgeyBtX2NvZGUgfSwgRXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZTo6Tm8gfSwgW10gKFZhbHVlT3JFeGNlcHRpb24pIHsgfSk7CiB9CiAKIHZvaWQgU2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggNWY1YmFhMjA2MzgzNThjMGJiODJiMzdiY2VhMjZjYWQ5OGVmNjRhYS4uNTQ5MWJlMTNiNjIz
N2FlMzk2YTIzYTE1ZTZkNDI2ZmM3MjFjZTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2LDggKzU2LDEwIEBACiAjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAj
aW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRp
bk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDQnVpbHRpbnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KQEAgLTY4LDYgKzcwLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vha0dD
TWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TZXRG
b3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0UG9zaXRpb24uaD4KQEAgLTEwOSwxNSArMTEyLDM5IEBAIFNjcmlwdENvbnRyb2xsZXI6
On5TY3JpcHRDb250cm9sbGVyKCkKIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBl
dmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAgIGF1dG8gcGFyYW1ldGVycyA9
IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHsgc291cmNlQ29kZSwgRXhlY3V0ZVdpdGhV
c2VyR2VzdHVyZTo6Tm8gfTsKKworICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7CisgICAgVmFsdWVP
ckV4Y2VwdGlvbiByZXN1bHQ7CisgICAgZXZhbHVhdGVJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJz
LCBbJl0oVmFsdWVPckV4Y2VwdGlvbiBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBp
bm5lclJlc3VsdDsKKyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICBBU1NFUlQo
Y2FsbGVkKTsKKwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNW
YWx1ZSB7IH07CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24pCiB7CisgICAg
QVNTRVJUKHJlc29sdmVGdW5jdGlvbik7CisKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yKHBhcmFtZXRlcnMuZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9PSBFeGVjdXRl
V2l0aFVzZXJHZXN0dXJlOjpZZXMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0
ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CisKKyAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgeworICAgICAgICByZXNvbHZl
RnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJTY3JpcHQgZXhlY3V0
aW9uIGlzIGN1cnJlbnRseSBkaXNhYmxlZCJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoaXNQYXVzZWQoKSkgeworICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVu
ZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJTY3JpcHQgZXhlY3V0aW9uIGlzIGN1cnJlbnRs
eSBwYXVzZWQiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNv
ZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOworICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpz
U291cmNlQ29kZSA9IHBhcmFtZXRlcnMuc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKICAgICBT
dHJpbmcgc291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOwogCiAgICAg
Ly8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0aGUgSlMgcmV0dXJuIHZhbHVlIG9yIDAKQEAgLTEz
NCw3ICsxNjEsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyYwogCiAgICAgUmVmPEZyYW1lPiBw
cm90ZWN0b3IobV9mcmFtZSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCks
IHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBwYXJhbWV0ZXJzLnNvdXJj
ZUNvZGUuc3RhcnRMaW5lKCksIHBhcmFtZXRlcnMuc291cmNlQ29kZS5zdGFydENvbHVtbigpKTsK
IAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAg
IEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xv
YmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzU291cmNlQ29kZSwgJnBy
b3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKQEAgLTE0NCwxNSArMTcxLDE2IEBAIFZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjCiAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxE
ZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIEV4Y2VwdGlv
bkRldGFpbHMgZGV0YWlsczsKLSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3Qs
IGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxz
KTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNl
cHRpb24sIHBhcmFtZXRlcnMuc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOwog
ICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOwogICAgIH0KIAogICAg
IG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgaWYgKG9wdGlvbmFsRGV0YWlscykK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOwogCi0gICAg
cmV0dXJuIHJldHVyblZhbHVlOworICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAgIHJl
c29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKSk7CisgICAgZWxz
ZQorICAgICAgICByZXNvbHZlRnVuY3Rpb24ocmV0dXJuVmFsdWUpOwogfQogCiBKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtNTU4LDQyICs1ODYsNDcgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9CiAKLUpTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgSmF2
YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGV4
ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxk
KCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHBhcmFtZXRl
cnMpOwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwg
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAg
IFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFy
YW1ldGVycywgWyZdKFZhbHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVz
dWx0ID0gaW5uZXJSZXN1bHQ7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAg
QVNTRVJUKGNhbGxlZCk7CisKICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBK
U0M6OkpTVmFsdWUgeyB9OwogfQogCi1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0
ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0gICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkp
LCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0s
IENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQo
KSkpOwotCi0gICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IEpTVmFs
dWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KLSAgICBpZiAoIWNhbkV4ZWN1
dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQotICAgICAgICBy
ZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3Js
ZCk7Ci19CisgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJl
c3VsdDsKKyAgICBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVy
cywgWyZdKFZhbHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0g
V1RGTW92ZShpbm5lclJlc3VsdCk7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CiAK
LUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0
dXJlKTsKKyAgICBBU1NFUlQoY2FsbGVkKTsKICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZh
bHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorCit2b2lk
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24pCiB7CiAgICAgYXV0byYg
ZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIGlmICghc2hvdWxkQWxsb3dVc2Vy
QWdlbnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4
Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhp
cyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgIGlm
ICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50KSkgeworICAgICAgICByZXNv
bHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
cnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFz
b25zIl9zLCAwLCAwLCB7IH0gfSkpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgZG9j
dW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVj
dXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBl
dmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9u
KSk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3Jp
cHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKQEAgLTY0MSw3ICs2NzQsNyBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNo
b3VsZFJlcGxhY2VEb2N1bQogICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0g
c2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKIAogICAgIFN0cmluZyBkZWNvZGVkVVJMID0gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5zdHJpbmcoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBl
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNj
cmlwdFNjaGVtZUxlbmd0aCkpOworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKHsgeyBkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVu
Z3RoKSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKIAogICAgIC8vIElmIGV4ZWN1
dGluZyBzY3JpcHQgY2F1c2VkIHRoaXMgZnJhbWUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWdl
LCB3ZQogICAgIC8vIGRvbid0IHdhbnQgdG8gdHJ5IHRvIHJlcGxhY2UgaXRzIGRvY3VtZW50IQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGEz
ZjZjM2FmNThjMDFhMDE3MDgzNTIzOWJhYWY1OTU2MzM5MGNmNGEuLjc5MjFiZTBkZDk0YzFiMmIy
ODg3ZmVjNzZiN2ZiYzhmM2Q3NWYyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDYgKzIzLDggQEAKIAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiSmF2
YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpAQCAtOTAs
MTEgKzkyLDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0
b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGV4ZWN1
dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBWYWx1
ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVPckV4Y2VwdGlv
biBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICB1c2luZyBSZXNvbHZl
RnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+OworCisgICAg
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0
ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVy
cyYsIFJlc29sdmVGdW5jdGlvbiYmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBKYXZhU2NyaXB0
RXhlY3V0aW9uUGFyYW1ldGVycyYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5n
RXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZh
bHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERP
TVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQgZXZhbHVhdGVJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVzb2x2ZUZ1bmN0aW9u
JiYpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmKSBj
b25zdDsKIApAQCAtMTA1LDEwICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFu
IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBm
cm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNl
cHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3Jh
cHBlcldvcmxkJik7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAgdm9pZCBsb2FkTW9k
dWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3JhcHBlcldvcmxkJik7
CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3Qg
U3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsKICAgICB2
b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4IGZjYTU3NGNmZGFhYzQ5YmFkZjRk
ODI5ZjE5MjAwMjExMTQzNzE5OGIuLjU4MWQ4NmRmYzNjZDMwZjhmNDk3NTBlYjljNjU2NDAyMjE5
NWFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJj
ZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgKQEAgLTYzLDYgKzYzLDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgU2NyaXB0
U291cmNlQ29kZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBvdGhlcikKKyAgICAgICAgOiBtX3By
b3ZpZGVyKG90aGVyLm1fcHJvdmlkZXIuY29weVJlZigpKQorICAgICAgICAsIG1fY29kZShvdGhl
ci5tX2NvZGUpCisgICAgICAgICwgbV9jYWNoZWRTY3JpcHQob3RoZXIubV9jYWNoZWRTY3JpcHQp
CisgICAgeworICAgIH0KKworICAgIFNjcmlwdFNvdXJjZUNvZGUmIG9wZXJhdG9yPShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvdmlkZXIgPSBvdGhl
ci5tX3Byb3ZpZGVyLmNvcHlSZWYoKTsKKyAgICAgICAgbV9jb2RlID0gb3RoZXIubV9jb2RlOwor
ICAgICAgICBtX2NhY2hlZFNjcmlwdCA9IG90aGVyLm1fY2FjaGVkU2NyaXB0OworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlLmxlbmd0aCgpID09IDA7IH0KIAogICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYganNT
b3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CkBAIC03NSw3ICs5MCwzNyBAQCBw
dWJsaWM6CiAgICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFNjcmlwdC5nZXQoKTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3ZpZGVyLT51cmwoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVu
Y29kZXIgPDwgc291cmNlKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpIDw8IHVybCgpIDw8IHN0
YXJ0TGluZSgpIDw8IHN0YXJ0Q29sdW1uKCkgPDwgbV9wcm92aWRlci0+c291cmNlVHlwZSgpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxT
Y3JpcHRTb3VyY2VDb2RlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IFN0cmluZyBzb3VyY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgVVJMIHVybDsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBpbnQgc3RhcnRMaW5lOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXJ0TGluZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGludCBzdGFydENvbHVtbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGFydENv
bHVtbikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGU7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHNvdXJjZVR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICAKKyAgICAgICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUgeyBzb3VyY2UsIFdURk1v
dmUodXJsKSwgVGV4dFBvc2l0aW9uIHsgT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0
YXJ0TGluZSksIE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydENvbHVtbikgfSwg
c291cmNlVHlwZSB9OworICAgIH0KKwogcHJpdmF0ZToKICAgICBSZWY8SlNDOjpTb3VyY2VQcm92
aWRlcj4gbV9wcm92aWRlcjsKICAgICBKU0M6OlNvdXJjZUNvZGUgbV9jb2RlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCmluZGV4IDBkODMxOTI1Mjc4MmRhOTVhNzJlZDM2Y2E1ZjA0OGM3Y2Q4Yzg0NjEuLjE0
ZDI1YTg1YTU2Njk1MDM2ZmU1NTcxZTYyODljMWE2ZTIxYWJmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OmRpc3BhdGNoTWVzc2FnZUFzeW5jKGNvbnN0IFN0cmluZyYgbWVzc2FnZU9iagogYm9vbCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbihjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pCiB7CiAgICAgYXV0byYgc3RhdGUgPSAqbWFpbldvcmxkRXhlY1N0YXRlKCZt
X2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGV4cHJl
c3Npb24pLnRvV1RGU3RyaW5nKCZzdGF0ZSkgPT0gInRydWUiOworICAgIHJldHVybiBtX2Zyb250
ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKHsgeyBleHByZXNzaW9uIH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH0pLnRvV1RG
U3RyaW5nKCZzdGF0ZSkgPT0gInRydWUiOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmV2YWx1YXRlT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA2ZWFmY2EzNGU4MWEzOTkyZGQx
ZmI4MGY5MDMyZWI5NmM4YjliNzc2Li4wNDI3ODY1YTBkY2U3YTFhZWU5NWMzNzI1ZDA3NDY0Y2Zi
YjRhNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMs
NyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAg
ICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsK
ICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENv
bnRyb2xsZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAg
ICAgICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNj
cmlwdCk7CisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKHsgeyBzY3JpcHQgfSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8g
fSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBtX2RvY3VtZW50TG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFu
ZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMGMx
NWY4YjkzYzc4MDdlZmQ3NGJiZTQwMDgyODQ0NDFjNTZmYWRiZi4uY2NiNWY0N2RmYzRkOGQwZTU5
NWI1NjgyMTcyZWY5YjVmYTA5Mzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCkBAIC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNs
aWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiAKIHZv
aWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0
cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5j
dGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIHRydWUsIFtjb250ZXh0LCBjYWxs
YmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewor
ICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNj
cmlwdFJlZiktPnN0cmluZygpLCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBjYWxsYmFj
ayh0b0FQSShyZXR1cm5WYWx1ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggYWI4OTc4MGUyZWUzNmVmY2YzYmIxYjI1MjRiMzVkNDRmYzZlMWU2MS4uNGM3YTA0
NWQ4ZjY3ODM2MDAxODU4MDMxYzA3NTVmMTM4OTQ3NmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCAt
ICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBm
b3JjZVVzZXJHZXN0dXJlOihCT09MKQogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoamF2YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxs
YmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh7IGphdmFTY3JpcHRTdHJpbmcsIChib29sKWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRs
ZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0
VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikK
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggOTgwYmZiOWU2OTA3OGZmMDRhZDVjNmU3ZDg1OGU0OGYxZjQ0OTg2Ni4uZThk
MzY5NDI1ZDgzZDAyZTdkMzBhYTA4ODg2OTNlZGI5YzU0YmI1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDEyICszODQ1LDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1
bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKEphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChKYXZhU2NyaXB0
RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3Vw
cG9ydCBydW5uaW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBs
b2FkcyB5ZXRzLgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4
NjEsMTQgKzM4NjEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICB9CiAKICAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOworCisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChwYXJhbWV0ZXJzLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlEKCkgIT0gZnJhbWVJ
RCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgc2NyaXB0LCBmb3JjZVVz
ZXJHZXN0dXJlLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVu
SmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgeyBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwg
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAwMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlkYTQz
YzI5Y2Q1Li5hNGQwM2UxYjQ3NDY0ZDJiYjFkMWM4YzcxYmEzN2ZmMGQyZDZlZWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODEsNiArODEsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+IC8vIEZJWE1FOiBNb3ZlIExheW91dFZpZXdwb3J0Q29u
c3RyYWludCB0byBpdHMgb3duIGZpbGUgYW5kIHN0b3AgaW5jbHVkaW5nIHRoaXMuCiAjaW5jbHVk
ZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
cHV0TW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRl
cnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgpAQCAtMTA2MSw4ICsxMDYyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29u
c3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbik7CisKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpK
YXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6SmF2YVNjcmlwdEV4
ZWN1dGlvblBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CisKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWM4NWZjMTU0OTRlMWIyMjMxNTZhMzU0
Y2FhOWQyYjJmNmU4OWI5ZC4uYTcwZTFlM2E2NmY1YTQxMmI5ZGZmZjNiNjZmMGI1NjMwOTc2YjRm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zNTI1LDYgKzM1MjUsOCBAQAogCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2Vi
Q29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4
dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4QUNBRTkxMkFFRTZCQjAw
QjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDcmVkZW50aWFsVHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTgyMzg2MDEwRjAwODA4NEMzIC8q
IFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5KYXZhU2NyaXB0QXJndW1l
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkphdmFTY3JpcHRBcmd1
bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4RDJDQUIxMkQ1MTUzQjAw
M0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxOEQyQ0FDMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4RThFRjMx
NkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUzNyw2ICs1NTM5LDggQEAKIAkJCQk0MTA0ODJD
QzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovLAogCQkJCTQxQjI4QjA5MUY4M0FE
M0UwMEZCNTJBQyAvKiBSVENQYWNrZXRPcHRpb25zLmNwcCAqLywKIAkJCQk0MUIyOEIwODFGODNB
RDNFMDBGQjUyQUMgLyogUlRDUGFja2V0T3B0aW9ucy5oICovLAorCQkJCTUxOEI1MDU4MjM4NjAx
MEYwMDgwODRDMyAvKiBSdW5KYXZhU2NyaXB0QXJndW1lbnRzLmNwcCAqLywKKwkJCQk1MThCNTA1
OTIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oICovLAogCQkJCUJD
MkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oICov
LAogCQkJCTFBQUI0QThDMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggKi8s
CiAJCQkJRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJjMjUz
MC4uN2M1Y2NhNzFiODZhZDQ5YWY4NjhkMzFjZjUyNGUzMjNjNmVmYTAyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNTMsNyAr
MTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVS
TFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFTY3JpcHQgY29kZS4g
Tm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNlIHRoZSBwbHVnLWlu
IHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5jZXMgdG8gdGhlIHBs
dWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdpbjsKLSAgICBh
dXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIGF1dG8gcmVzdWx0ID0g
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IGpzU3RyaW5n
LCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpIH0pOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNjQ0NWFhNWE3MjU2ZDZiYTg3ZDczNmYyNmJhZGM3MWE5ODA4ZTRkMC4uZDhmZTUyNWU4
ODFjMmU2NmJkZmZhNmM2Y2U3OGE1ZWZiMTliMGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzNTIsNDUgKzMzNTIsNDYgQEAgS2V5Ym9h
cmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFj
Y2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJv
YXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwg
V2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMg
dGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVy
aW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgp
KTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7Ci0KICAgICBhdXRvKiB3b3JsZCA9IHdv
cmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVl
KCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7Ci0gICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICByZXN1bHQg
PSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxk
KSwKLSAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmds
b2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIp
OwotICAgICAgICB9CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3
b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVl
Q2FsbGJhY2soeyB9LCB7IHsgIlVuYWJsZSB0byBkZXRlcm1pbmUgY29udGV4dCBmb3IgZXhlY3V0
aW5nIHNjcmlwdCJfcyB9IH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChzZXJpYWxp
emVkUmVzdWx0VmFsdWUpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0
VmFsdWUtPmRhdGEoKTsKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHByb3RlY3RlZFdvcmxkID0gbWFrZVJlZigqd29ybGQp
LCB3b3JsZCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGZyYW1lLCBjYWxsYmFj
a0lEXSAoVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIHNlcmlhbGl6ZWRSZXN1bHREYXRhUmVmZXJlbmNlOworICAgICAgICBFeGNlcHRpb25EZXRh
aWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKSkgeworICAg
ICAgICAgICAgYXV0byBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLCB0b1JlZihmcmFtZS0+
Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCBy
ZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZSkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0RGF0YVJlZmVyZW5jZSA9
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSB7ICJFcnJvciBzZXJpYWxpemluZyByZXN1bHQg
b2YgZXhlY3V0aW5nIEphdmFTY3JpcHQiX3MgfTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBleGNlcHRpb25EZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBkZXRhaWxz
ID0gcmVzdWx0LmVycm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2NyaXB0VmFsdWVDYWxsYmFjayhzZXJpYWxpemVkUmVzdWx0RGF0YVJlZmVyZW5jZSwgZXhjZXB0
aW9uRGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywg
Y2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOworICAgIGZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQo
d29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVG
dW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3Jl
OjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIHJ1
bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29y
bGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFp
bldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHNjcmlwdCwg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZh
U2NyaXB0KGZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGNhbGxiYWNr
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDE1ZGI0Yjg5ZDZjOGE3YjgyZDFkZGY2YjY3NDU0NDA1NTYyZjE4ODguLmUxZDNkMDVmNTQ2
NTM4ZjBhMDMyZDZmZjRmZDZlMjU4Y2I2NDg4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5NSw2ICsxOTUsNyBAQCBzdHJ1Y3QgRWxlbWVudENv
bnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwogc3RydWN0IEdsb2JhbFdpbmRv
d0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Oworc3RydWN0IEphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzOwogc3RydWN0IEtleXByZXNzQ29tbWFuZDsKIHN0cnVjdCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKQEAgLTE0MzQsOSArMTQz
NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0
KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQp
OwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJD
b3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9u
UGFyYW1ldGVycyYmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVj
dCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFj
a0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggOTliMzJmZWY3ODQ5YTBkNWY4YjNiNTNmNmQ0MjUwZmY1NDE1
MDUwMS4uMGFlNmNjMDlmNWVkMGVlMjcyMzRlZWViNzE1MjZhZjI2MzM5YzM3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0yMDQsOCArMjA0LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OkphdmFTY3JpcHRFeGVj
dXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OkphdmFTY3Jp
cHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IAogICAgIFNlbGVjdEFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggZWE1MDc4ZWQx
OGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYy4uN2FhOTAxYWM0MTViY2MzZDQ5NDk2MDFj
ZjAzYjQzMzE4MTRmNTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzc5LDcgKzM3
OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgY29yZShbbV9m
cm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxV
UkwuYWJzb2x1dGVTdHJpbmddKTsKKyAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRy
b2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmlu
Z10gfSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC00MjUsNyAr
NDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpb
Y29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFto
YW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVy
IGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9u
dGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5n
XV0pOworICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmll
d10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
eyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVu
ZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSB9KTsKIH0KIAog
Ly8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggNzhjYzMzZWJhMTVhNmUwZjE2MmE2MDlkMzhiMmU3Y2UwODVjM2YwOC4uMWYxODNhNGQ5
Y2YxODM2ZmU1M2RmNTc4ZjU0NmJmMzE2NWQyOTZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyArNzAwLDcgQEAgLSAoTlNTdHJpbmcg
Kilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNv
cmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywg
Zm9yY2VVc2VyR2VzdHVyZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IHN0cmlu
ZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9KTsKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVG
cmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBh
Z2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2LDcgKzIwOTYsNyBAQCAtIChOU1N0cmlu
ZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilz
dHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWlu
UHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkg
SmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCBzdHJpbmcsIHRydWUpOworICAgIEpTQzo6SlNWYWx1
ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbigqY29yZSh3b3JsZCksIHsgc3RyaW5nLCB0cnVlIH0pOwogCiAgICAg
aWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0
IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTYxZTA1Y2Yx
YzIyOWRlMTEwNDZiN2M0ZmI4MzRmNTMzOWJiODIyNS4uNmFlYjZmYTQ4ZTQyNmZjMGU1ODEzYmEw
ZmM0YTNkNTk5NTNlOGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcgQEAgLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAq
KWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXMKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0LCB0cnVlKTsKKyAgICBK
U0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oeyBzY3JpcHQsIHRydWUgfSk7CiAgICAgaWYgKCFyZXN1bHQpIC8vIEZJ
WE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KFdlYkNvcmU6Om1haW5UaHJl
YWROb3JtYWxXb3JsZCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385726</attachid>
            <date>2019-12-15 15:46:17 -0800</date>
            <delta_ts>2019-12-15 21:48:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191215154617.patch</filename>
            <type>text/plain</type>
            <size>56273</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4OGI4MDE2YTE3M2E4
ZjllMzgxOGQ3NzllZTRjYmJiMmMwZWJlODNjLi5kNjdkNDU4YTkwNDQxMjA1NjU2NDFiNjFjNzI2
OGE0NzViZGJjYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNTI0LDYgKzE1MjQsNyBAQAogCQk1MUE5RDlFQTE5NUI5MzFG
MDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTlEOUU4MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFu
YWdlci5oICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFGNTAz
NjE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4
IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MUI0MEQ4QzIzQTU0ODk1MDBFMDUyNDEgLyogSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQjQwRDhCMjNBNTQ4NTkwMEUwNTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQjQ1RDIxMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0NUQxRjFB
QjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDEwMUZEMjc4MkQwMEVFMjg1OSAv
KiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCOTE0MEMxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFCOTE0MTExRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQjFGRDI3ODI1
MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjYyOCw3ICsyNjI5LDcgQEAKIAkJOTM0M0NCODIx
MkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDNDQjgwMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0
Q29kZWNVVEY4LmggKi87IH07CiAJCTkzNDQyQzlFMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmggKi87IH07CiAJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRl
eHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0
OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM0Q0MxMEEwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3Vy
Y2VDb2RlLmggKi87IH07CisJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3Vy
Y2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEY3MTNBMEQ1QTZGMTAw
MDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTM5MEQ1QTZGMTAwMDAxOEQ2OSAv
KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVz
b3VyY2VFcnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTAwRjMy
MTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MDBGMzExM0ZERTNCRTAwOTlFQzI0
IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NTMsNyArMzg1NCw3IEBACiAJCUJDQjE2QzFDMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
MTZDMjAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwNzA5NzlDM0JEMDA0Njc3NDEg
LyogQ2FjaGVkUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMyMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzA5MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
ci5oICovOyB9OwotCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IH07CisJCUJDQjE2QzI0MDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3Jp
cHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
Q0IxNkMyODA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEYwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMkEwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5MkQ0RTEy
OTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NjcsNyArMzg2OCw3IEBACiAJCUJDQ0ZCQUU4
MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERv
Y3VtZW50UGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEMEUwRkIwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwRTBGODBFOTcy
QzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QwRTBGQzBFOTcyQzM1MDAyNjVERUEgLyogU2Vj
dXJpdHlPcmlnaW5IYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QwRTBGOTBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW5IYXNoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNENTMz
NjQwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5
MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgfTsKKwkJQkNENTMz
NjQwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5
MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMTBDMTdCNjlFMDA1Qzkw
QTIgLyogSlNOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRDlDMkJEMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDlD
MkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
b2RlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RENDU0RDEyMzZDOTVDMDA5QTc5
ODUgLyogQ29sdW1uSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC04MzE4LDYgKzgzMTksNyBAQAogCQk1MUFCRjY0QzE2MzkyRTI4MDAxMzJB
N0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9hZGVyU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUFGNTAzNTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRlclR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lX
ZWJBcmNoaXZlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFC
NDBEOEIyM0E1NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRFeGVjdXRpb25QYXJh
bWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1RDFFMUFCOEQxRTIw
MDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUI0NUQxRjFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdp
c3RyYXRpb25TdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3Ry
YXRpb25TdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUzMzUsNiArMjUz
MzcsNyBAQAogCQkJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAq
LywKIAkJCQlDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgKi8sCiAJCQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRp
ZXMuaCAqLywKKwkJCQk1MUI0MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYyODcyMDA1MDY1
QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJN0M1N0JGRTYxRURFMkY1
QjAwNTM0QTQ4IC8qIEpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggKi8sCkBAIC0zMDM3OSw2ICsz
MDM4Miw3IEBACiAJCQkJQ0Q1RkY0OUIyMTYyRTRCNzAwNEJEODZGIC8qIElTT1NjaGVtZVR5cGVC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUZGNDk3MjE2MkUyQjcwMDRCRDg2RiAvKiBJU09U
cmFja0VuY3J5cHRpb25Cb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMjQ3RTM4MUZFQTVGODYw
MDhDMDhDRSAvKiBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxQjQwRDhDMjNBNTQ4OTUwMEUwNTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMEQ5ODQxRjgxNUFFQzAwMjY4MzU2IC8qIEpT
QWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzMwRDk4NjFGODE1QUVDMDAy
NjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4Rjg4MDUwRkY5
NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBh
MmQ3OTUyZmQwYzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjExNDExOThkMmJjM2I5ZDMzZDQ1NzMy
YWVlMWQ0YzY0OTFlNmY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0V4Y2VwdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNl
cHRpb25EZXRhaWxzLmgKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFpbHMg
ewogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwogICAgIGlu
dCBjb2x1bW5OdW1iZXIgeyAwIH07Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICBTdHJpbmcg
c291cmNlVVJMIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3MDIwZWRlNDQ5NjgxZTk2NGIwMjkxNjQ2MTI0OWNkMmYxNjdi
ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSB7CisgICAg
Tm8sCisgICAgWWVzLAorfTsKKworc3RydWN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
IHsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGU7CisgICAgRXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlIHsgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6
Tm8gfTsKKworICAgIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYg
c291cmNlKQorICAgICAgICA6IHNvdXJjZUNvZGUoc291cmNlKQorICAgIHsKKyAgICB9CisKKyAg
ICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZUNvZGUoc291cmNlKQorICAgICAg
ICAsIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSA/IEV4ZWN1dGVXaXRo
VXNlckdlc3R1cmU6OlllcyA6IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vKQorICAgIHsKKyAg
ICB9CisKKyAgICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhTY3JpcHRTb3VyY2VDb2Rl
JiYgaW5wdXRTb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRoVXNl
ckdlc3R1cmUgPSBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICAgICAgOiBzb3VyY2VD
b2RlKFdURk1vdmUoaW5wdXRTb3VyY2VDb2RlKSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVzZXJH
ZXN0dXJlKGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIEphdmFT
Y3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIGlucHV0U291
cmNlQ29kZSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0g
RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShpbnB1dFNv
dXJjZUNvZGUpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0aFVz
ZXJHZXN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5j
b2RlciA8PCBzb3VyY2VDb2RlIDw8IGV4ZWN1dGVXaXRoVXNlckdlc3R1cmU7CisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxTY3JpcHRTb3VyY2VDb2RlPiBzb3VyY2VDb2RlID0gU2NyaXB0U291
cmNlQ29kZTo6ZGVjb2RlPERlY29kZXI+KGRlY29kZXIpOworICAgICAgICBpZiAoIXNvdXJjZUNv
ZGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIEV4ZWN1dGVX
aXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShleGVjdXRlV2l0aFVzZXJHZXN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0
ZXJzIHsgV1RGTW92ZSgqc291cmNlQ29kZSksIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgfTsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1
cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpF
eGVjdXRlV2l0aFVzZXJHZXN0dXJlLAorICAgICAgICBXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJH
ZXN0dXJlOjpObywKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6WWVz
CisgICAgPjsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwCmluZGV4IDhlNGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIy
OGYuLjE5ZTM0YjFlMjM0ZjRjNDlhNGEzNGE0ZTM1ODE3OTgzZWU1NTFjYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICBpZiAobV9mdW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdp
bmRvdywgd2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAgICAgZWxzZQotICAgICAgICBmcmFt
ZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtX2lzb2xh
dGVkV29ybGQsIG1fY29kZSk7CisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUluV29y
bGQobV9pc29sYXRlZFdvcmxkLCB7IHsgbV9jb2RlIH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6
Ok5vIH0sIFtdIChWYWx1ZU9yRXhjZXB0aW9uKSB7IH0pOwogfQogCiB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDVm
NWJhYTIwNjM4MzU4YzBiYjgyYjM3YmNlYTI2Y2FkOThlZjY0YWEuLjU0OTFiZTEzYjYyMzdhZTM5
NmEyM2ExNWU2ZDQyNmZjNzIxY2UwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01Niw4ICs1NiwxMCBAQAogI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1
ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0J1aWx0aW5zLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC02OCw2ICs3MCw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElu
bGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFBvc2l0aW9uLmg+CkBAIC0xMDksMTUgKzExMiwzOSBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2Ny
aXB0Q29udHJvbGxlcigpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVh
dGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBKYXZh
U2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7IHNvdXJjZUNvZGUsIEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmU6Ok5vIH07CisKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNl
cHRpb24gcmVzdWx0OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVycywgWyZd
KFZhbHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5uZXJS
ZXN1bHQ7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgQVNTRVJUKGNhbGxl
ZCk7CisKICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUg
eyB9OwogfQogCi1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5X
b3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQm
IHdvcmxkKQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQogeworICAgIEFTU0VS
VChyZXNvbHZlRnVuY3Rpb24pOworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihwYXJhbWV0ZXJzLmV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgPT0gRXhlY3V0ZVdpdGhV
c2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworCisgICAgaWYgKCFjYW5FeGVj
dXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1bmN0
aW9uKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiU2NyaXB0IGV4ZWN1dGlvbiBp
cyBjdXJyZW50bHkgZGlzYWJsZWQiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGlzUGF1c2VkKCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKG1ha2VVbmV4cGVj
dGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiU2NyaXB0IGV4ZWN1dGlvbiBpcyBjdXJyZW50bHkgcGF1
c2VkIl9zIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHdvcmxkLnZtKCkpOwogCi0gICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0g
c291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJj
ZUNvZGUgPSBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5n
IHNvdXJjZVVSTCA9IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIC8vIGV2
YWx1YXRlIGNvZGUuIFJldHVybnMgdGhlIEpTIHJldHVybiB2YWx1ZSBvciAwCkBAIC0xMzQsNyAr
MTYxLDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29y
bGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmMKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVj
dG9yKG1fZnJhbWUpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVh
dGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3Vy
Y2VDb2RlLnN0YXJ0Q29sdW1uKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwgcGFyYW1ldGVycy5zb3VyY2VDb2Rl
LnN0YXJ0TGluZSgpLCBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1Zh
bHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9i
amVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0xNDQsMTUgKzE3MSwxNiBAQCBWYWx1ZU9yRXhjZXB0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyYwogICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWls
czsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAgICBFeGNlcHRpb25EZXRh
aWxzIGRldGFpbHM7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7Cisg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9u
LCBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKICAgICAg
ICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3Nv
dXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIGlmIChvcHRpb25hbERldGFpbHMpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKIAotICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKKyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXNvbHZl
RnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscykpOworICAgIGVsc2UKKyAg
ICAgICAgcmVzb2x2ZUZ1bmN0aW9uKHJldHVyblZhbHVlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKQEAgLTU1OCw0MiArNTg2LDQ3IEBAIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNlbmRpZgogfQogCi1KU0M6OkpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3Jp
cHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBleGVjdXRl
U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBwYXJhbWV0ZXJzKTsK
IH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
SWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1
ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBldmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRl
cnMsIFsmXShWYWx1ZU9yRXhjZXB0aW9uIGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9
IGlubmVyUmVzdWx0OworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIEFTU0VS
VChjYWxsZWQpOworCiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpK
U1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7Ci0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihm
b3JjZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwotICAgIFNjcmlwdFNvdXJjZUNv
ZGUgc291cmNlQ29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4
dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNo
ZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsK
LQotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBz
aG91bGQgcmV0dXJuIGFuIEV4Y2VwdGlvbkRldGFpbHMuCi0gICAgaWYgKCFjYW5FeGVjdXRlU2Ny
aXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKLSAgICAgICAgcmV0dXJu
IHsgfTsKLQotICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwot
fQorICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7CisgICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7
CisgICAgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsm
XShWYWx1ZU9yRXhjZXB0aW9uIGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IFdURk1v
dmUoaW5uZXJSZXN1bHQpOworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH0pOwogCi1KU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQotewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7
CisgICAgQVNTRVJUKGNhbGxlZCk7CiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgp
IDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKwordm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQogewogICAgIGF1dG8mIGRvY3Vt
ZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBpZiAoIXNob3VsZEFsbG93VXNlckFnZW50
U2NyaXB0cyhkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRp
b25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9j
dW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KTsKKyAgICBpZiAoIXNo
b3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhkb2N1bWVudCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1
bmN0aW9uKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1
c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJf
cywgMCwgMCwgeyB9IH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGRvY3VtZW50
LnNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNj
cmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgZXZhbHVh
dGVJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwog
fQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC02NDEsNyArNjc0LDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGRlY29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRT
Y2hlbWVMZW5ndGgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4
Y2VwdGlvbih7IHsgZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkg
fSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcg
c2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UK
ICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhM2Y2YzNh
ZjU4YzAxYTAxNzA4MzUyMzliYWFmNTk1NjMzOTBjZjRhLi43OTIxYmUwZGQ5NGMxYjJiMjg4N2Zl
Yzc2YjdmYmM4ZjNkNzVmMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgorI2luY2x1ZGUgIkphdmFTY3Jp
cHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTkwLDExICs5
MiwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJl
ZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVl
IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2Ny
aXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgVmFsdWVPckV4
Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFdFQkNPUkVf
RVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgdXNpbmcgUmVzb2x2ZUZ1bmN0
aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKKworICAgIFdFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29u
c3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBK
U0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihET01XcmFwcGVyV29ybGQmLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmLCBS
ZXNvbHZlRnVuY3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxk
SWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2Vw
dGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFw
cGVyV29ybGQmKTsKKyAgICB2b2lkIGV2YWx1YXRlSW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBj
b25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYsIFJlc29sdmVGdW5jdGlvbiYmKTsK
IAogICAgIGJvb2wgc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JikgY29uc3Q7
CiAKQEAgLTEwNSwxMCArMTExLDYgQEAgcHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNl
cHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBh
bnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVU
aHJlYWRpbmcoKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJX
b3JsZCYpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLQogICAgIHZvaWQgbG9hZE1vZHVsZVNj
cmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5h
bWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYsIERPTVdyYXBwZXJXb3JsZCYpOwogICAg
IHZvaWQgbG9hZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmlu
ZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAgICAgdm9pZCBs
b2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCBmY2E1NzRjZmRhYWM0OWJhZGY0ZDgyOWYx
OTIwMDIxMTE0MzcxOThiLi41ODFkODZkZmMzY2QzMGY4ZjQ5NzUwZWI5YzY1NjQwMjIxOTVhYWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBA
IC02Myw2ICs2MywyMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIFNjcmlwdFNvdXJj
ZUNvZGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgb3RoZXIpCisgICAgICAgIDogbV9wcm92aWRl
cihvdGhlci5tX3Byb3ZpZGVyLmNvcHlSZWYoKSkKKyAgICAgICAgLCBtX2NvZGUob3RoZXIubV9j
b2RlKQorICAgICAgICAsIG1fY2FjaGVkU2NyaXB0KG90aGVyLm1fY2FjaGVkU2NyaXB0KQorICAg
IHsKKyAgICB9CisKKyAgICBTY3JpcHRTb3VyY2VDb2RlJiBvcGVyYXRvcj0oY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgb3RoZXIpCisgICAgeworICAgICAgICBtX3Byb3ZpZGVyID0gb3RoZXIubV9w
cm92aWRlci5jb3B5UmVmKCk7CisgICAgICAgIG1fY29kZSA9IG90aGVyLm1fY29kZTsKKyAgICAg
ICAgbV9jYWNoZWRTY3JpcHQgPSBvdGhlci5tX2NhY2hlZFNjcmlwdDsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZS5sZW5ndGgoKSA9PSAwOyB9CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNl
Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQpAQCAtNzUsNyArOTAsMzcgQEAgcHVibGlj
OgogICAgIENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRTY3JpcHQuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV9wcm92aWRlci0+dXJsKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IHNvdXJjZSgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSA8PCB1cmwoKSA8PCBzdGFydExp
bmUoKSA8PCBzdGFydENvbHVtbigpIDw8IG1fcHJvdmlkZXItPnNvdXJjZVR5cGUoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2NyaXB0
U291cmNlQ29kZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBTdHJp
bmcgc291cmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFVSTCB1cmw7CisgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodXJsKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgaW50IHN0YXJ0TGluZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGFydExpbmUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBp
bnQgc3RhcnRDb2x1bW47CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRDb2x1bW4p
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBKU0M6OlNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShzb3VyY2VUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgCisgICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlIHsgc291cmNlLCBXVEZNb3ZlKHVy
bCksIFRleHRQb3NpdGlvbiB7IE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydExp
bmUpLCBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRDb2x1bW4pIH0sIHNvdXJj
ZVR5cGUgfTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmPEpTQzo6U291cmNlUHJvdmlkZXI+
IG1fcHJvdmlkZXI7CiAgICAgSlNDOjpTb3VyY2VDb2RlIG1fY29kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cAppbmRleCAwZDgzMTkyNTI3ODJkYTk1YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxLi4xNGQyNWE4
NWE1NjY5NTAzNmZlNTU3MWU2Mjg5YzFhNmUyMWFiZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBA
IC00MjAsNyArNDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNw
YXRjaE1lc3NhZ2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uKQogewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9u
dGVuZFBhZ2UtPm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihleHByZXNzaW9u
KS50b1dURlN0cmluZygmc3RhdGUpID09ICJ0cnVlIjsKKyAgICByZXR1cm4gbV9mcm9udGVuZFBh
Z2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7
IHsgZXhwcmVzc2lvbiB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KS50b1dURlN0cmlu
Zygmc3RhdGUpID09ICJ0cnVlIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpldmFsdWF0ZU9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNmVhZmNhMzRlODFhMzk5MmRkMWZiODBm
OTAzMmViOTZjOGI5Yjc3Ni4uMDQyNzg2NWEwZGNlN2ExYWVlOTVjMzcyNWQwNzQ2NGNmYmI0YTVh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIz
Myw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXRlKQogICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKSB7CiAgICAg
ICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9s
bGVyID0gbWFrZVdlYWtQdHIoZnJhbWUtPnNjcmlwdCgpKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAg
ICAgICBpZiAoIXVuYmxvY2tlZCAmJiBzY3JpcHRDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OworICAgICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbih7IHsgc2NyaXB0IH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH0pOwog
ICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5j
bGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDBjMTVmOGI5
M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2ZmFkYmYuLmNjYjVmNDdkZmM0ZDhkMGU1OTViNTY4
MjE3MmVmOWI1ZmEwOTM4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdL
UGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24g
Y2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRS
ZWYpLT5zdHJpbmcoKSwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2sodG9B
UEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0
b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IGFiODk3ODBlMmVlMzZlZmNmM2JiMWIyNTI0YjM1ZDQ0ZmM2ZTFlNjEuLjRjN2EwNDVkOGY2
NzgzNjAwMTg1ODAzMWMwNzU1ZjEzODk0NzZiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgLSAodm9p
ZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgZm9yY2VV
c2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0
aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6
OkVycm9yIGVycm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
eyBqYXZhU2NyaXB0U3RyaW5nLCAoYm9vbClmb3JjZVVzZXJHZXN0dXJlIH0sIFtoYW5kbGVyXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVl
Q2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDk4MGJmYjllNjkwNzhmZjA0YWQ1YzZlN2Q4NThlNDhmMWY0NDk4NjYuLmU4ZDM2OTQy
NWQ4M2QwMmU3ZDMwYWEwODg4NjkzZWRiOWM1NGJiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0NSwxMiArMzg0NSwxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5jaFBy
b2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVsbG9wdCwgV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQg
cnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMg
eWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODYxLDE0
ICszODYxLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBm
b3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKKworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQocGFyYW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRJbkZyYW1lKGZyYW1lSUQsIHsgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggMDI3NGQ3Y2UyZjQzNjgxNTRjY2I2NzkyNWNkMGY5ZGE0M2MyOWNk
NS4uYTRkMDNlMWI0NzQ2NGQyYmIxZDFjOGM3MWJhMzdmZjBkMmQ2ZWVjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBGSVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFp
bnQgdG8gaXRzIG93biBmaWxlIGFuZCBzdG9wIGluY2x1ZGluZyB0aGlzLgogI2luY2x1ZGUgPFdl
YkNvcmUvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1v
ZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0phdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
b3V0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aD4KQEAgLTEwNjEsOCArMTA2MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0
cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOworCisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6SmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pOworCiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCiAgICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWlu
dChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjODVmYzE1NDk0ZTFiMjIzMTU2YTM1NGNhYTlk
MmIyZjZlODliOWQuLmE3MGUxZTNhNjZmNWE0MTJiOWRmZmYzYjY2ZjBiNTYzMDk3NmI0ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzUyNSw2ICszNTI1LDggQEAKIAkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRl
eHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4
MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE4QUNGMTAxMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3JlZGVudGlhbFR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOEI1MDU4MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5K
YXZhU2NyaXB0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MThCNTA1OTIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5KYXZhU2NyaXB0QXJndW1lbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEQyQ0FCMTJENTE1M0IwMDNCQjkz
QiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MThEMkNBQzEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEU4RUYzMTZCMjA5
MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1MzcsNiArNTUzOSw4IEBACiAJCQkJNDEwNDgyQ0MxRERE
MkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLywKIAkJCQk0MUIyOEIwOTFGODNBRDNFMDBG
QjUyQUMgLyogUlRDUGFja2V0T3B0aW9ucy5jcHAgKi8sCiAJCQkJNDFCMjhCMDgxRjgzQUQzRTAw
RkI1MkFDIC8qIFJUQ1BhY2tldE9wdGlvbnMuaCAqLywKKwkJCQk1MThCNTA1ODIzODYwMTBGMDA4
MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCisJCQkJNTE4QjUwNTkyMzg2
MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLywKIAkJCQlCQzJEMDIx
NjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLywKIAkJ
CQkxQUFCNEE4QzEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oICovLAogCQkJ
CUUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IDNlYTAwNmIzY2UzOGUzODk0MWZkYmQ1ODY3M2NkODFhNjgyYzI1MzAuLjdj
NWNjYTcxYjg2YWQ0OWFmODY4ZDMxY2Y1MjRlMzIzYzZlZmEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMjUzLDcgKzEyNTMs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdChVUkxSZXF1
ZXN0KiByZXF1ZXN0KQogICAgIC8vIEV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IGNvZGUuIE5vdGUg
dGhhdCBydW5uaW5nIEphdmFTY3JpcHQgaGVyZSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiB0byBi
ZSBkZXN0cm95ZWQsIHNvIHdlCiAgICAgLy8gZ3JhYiByZWZlcmVuY2VzIHRvIHRoZSBwbHVnLWlu
IGhlcmUuCiAgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9wbHVnaW47Ci0gICAgYXV0byBy
ZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGpz
U3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZyYW1l
LT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBqc1N0cmluZywgcmVx
dWVzdC0+YWxsb3dQb3B1cHMoKSB9KTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDY0NDVhYTVhNzI1NmQ2YmE4N2Q3MzZmMjZiYWRjNzFhOTgwOGU0ZDAuLmQ4ZmU1MjVlODgxYzJl
NjZiZGZmYTZjNmNlNzhhNWVmYjE5YjBmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzUyLDQ1ICszMzUyLDQ2IEBAIEtleWJvYXJkVUlN
b2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5
Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NG
dWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFj
Y2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQo
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFdlYkNv
cmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
Ly8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQg
dGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBz
Y3JpcHQgZXhlY3V0aW9uLgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0g
ICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5h
bWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6
ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJh
bWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3
b3JsZC0+Y29yZVdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAgICAgIGlm
IChyZXN1bHQpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZCksCi0g
ICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxP
YmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LnZhbHVlKCkpLCBudWxscHRyKTsKLSAg
ICAgICAgfQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSB8fCAhd29ybGQp
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxi
YWNrKHsgfSwgeyB7ICJVbmFibGUgdG8gZGV0ZXJtaW5lIGNvbnRleHQgZm9yIGV4ZWN1dGluZyBz
Y3JpcHQiX3MgfSB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoc2VyaWFsaXplZFJl
c3VsdFZhbHVlKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVl
LT5kYXRhKCk7CisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0aGlzLCBwcm90ZWN0ZWRXb3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgd29y
bGQsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBmcmFtZSwgY2FsbGJhY2tJRF0g
KFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBz
ZXJpYWxpemVkUmVzdWx0RGF0YVJlZmVyZW5jZTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBl
eGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwgdG9SZWYoZnJhbWUtPmNvcmVG
cmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0
LnZhbHVlKCkpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFs
dWUpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdERhdGFSZWZlcmVuY2UgPSBzZXJp
YWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBleGNlcHRpb25EZXRhaWxzID0geyAiRXJyb3Igc2VyaWFsaXppbmcgcmVzdWx0IG9mIGV4
ZWN1dGluZyBKYXZhU2NyaXB0Il9zIH07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXhj
ZXB0aW9uRGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9u
RGV0YWlscz4gZGV0YWlsczsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZGV0YWlscyA9IHJl
c3VsdC5lcnJvcigpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlw
dFZhbHVlQ2FsbGJhY2soc2VyaWFsaXplZFJlc3VsdERhdGFSZWZlcmVuY2UsIGV4Y2VwdGlvbkRl
dGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICB9OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxi
YWNrSUQpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+
Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxk
LT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rp
b24pKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6SmF2
YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZh
U2NyaXB0KG1haW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFt
ZSwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgQVNTRVJUKG1haW5XZWJG
cmFtZSgpICE9IGZyYW1lKTsKLSAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUsIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlw
dChmcmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAx
NWRiNGI4OWQ2YzhhN2I4MmQxZGRmNmI2NzQ1NDQwNTU2MmYxODg4Li5lMWQzZDA1ZjU0NjUzOGYw
YTAzMmQ2ZmY0ZmQ2ZTI1OGNiNjQ4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTUsNiArMTk1LDcgQEAgc3RydWN0IEVsZW1lbnRDb250ZXh0
Owogc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmllcjsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyOwogc3RydWN0IEhpZ2hsaWdodDsKK3N0cnVjdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVyczsKIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2ht
ZW50SW5mbzsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CkBAIC0xNDM0LDkgKzE0MzUsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJG
cmFtZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9u
YWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lk
IHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6
SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMmJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdl
YkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDk5YjMyZmVmNzg0OWEwZDVmOGIzYjUzZjZkNDI1MGZmNTQxNTA1MDEu
LjBhZTZjYzA5ZjVlZDBlZTI3MjM0ZWVlYjcxNTI2YWYyNjMzOWMzN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MjA0LDggKzIwNCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRT
b3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhl
Y3V0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKICAg
ICBTZWxlY3RBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGVhNTA3OGVkMThmNTUw
NTJkZjJlNDI4MTNlMmE2ZjcwODU1Y2U3Y2MuLjdhYTkwMWFjNDE1YmNjM2Q0OTQ5NjAxY2YwM2I0
MzMxODE0ZjU5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2Nv
bnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRl
bmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFi
c29sdXRlU3RyaW5nXSk7CisgICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVy
IGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZy
b250ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddIH0p
OwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRl
bnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxl
IGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9u
dGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsK
KyAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsgW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRv
VVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXV0gfSk7CiB9CiAKIC8vIE1B
Uks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IDc4Y2MzM2ViYTE1YTZlMGYxNjJhNjA5ZDM4YjJlN2NlMDg1YzNmMDguLjFmMTgzYTRkOWNmMTgz
NmZlNTNkZjU3OGY1NDZiZjMxNjVkMjk2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5nICopX3N0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBm
b3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzdHJpbmcsIGZvcmNl
VXNlckdlc3R1cmUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBzdHJpbmcsIChi
b29sKWZvcmNlVXNlckdlc3R1cmUgfSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUp
IC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgog
ICAgICAgICByZXR1cm4gQCIiOwpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilf
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IHdpdGhHbG8KICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxX
ZWJGcmFtZT4gd2ViRnJhbWUoa2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFT
Y3JpcHQgY2FuIGRlc3Ryb3kgdGhlIGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9
IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCB7IHN0cmluZywgdHJ1ZSB9KTsKIAogICAgIGlmICgh
d2ViRnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1v
dmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDk2MWUwNWNmMWMyMjlk
ZTExMDQ2YjdjNGZiODM0ZjUzMzliYjgyMjUuLjZhZWI2ZmE0OGU0MjZmYzBlNTgxM2JhMGZjNGEz
ZDU5OTUzZThiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURl
c2NCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCwgdHJ1ZSk7CisgICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKHsgc2NyaXB0LCB0cnVlIH0pOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTog
cGFzcyBlcnJvcnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayhjb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9y
bWFsV29ybGQoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385736</attachid>
            <date>2019-12-15 21:48:28 -0800</date>
            <delta_ts>2019-12-15 22:07:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191215214827.patch</filename>
            <type>text/plain</type>
            <size>56860</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLjQ1MjBhZjE4YmFm
NzUzMjJiMzgyZTZiZWVmYWQ2ZWY0NmZlODg0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjM5
LDYgKzIzOSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBi
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uaAogICAgIGJpbmRpbmdzL2pzL0pTVmFsdWVJ
bldyYXBwZWRPYmplY3QuaAogICAgIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAorICAgIGJp
bmRpbmdzL2pzL0phdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgKICAgICBiaW5kaW5ncy9q
cy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRDYWNoZWRGcmFtZURhdGEuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg4YjgwMTZhMTczYThmOWUzODE4ZDc3OWVlNGNiYmIyYzBlYmU4M2MuLmQ2N2Q0NThhOTA0
NDEyMDU2NTY0MWI2MWM3MjY4YTQ3NWJkYmNiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MjQsNiArMTUyNCw3IEBACiAJ
CTUxQTlEOUVBMTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBOUQ5RTgxOTVCOTMxRjAwMUIy
QjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmggKi87IH07CiAJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFGNTAz
NTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxQjQwRDhDMjNBNTQ4OTUwMEUw
NTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDBEOEIyM0E1NDg1OTAwRTA1MjQxIC8q
IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCNDVEMjExQUI4RDFFMjAwMTE3Q0QyIC8qIENv
bnRlbnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQjQ1RDFGMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCOTE0MTAx
RkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQzFGRDI3ODI1MDBFRTI4NTkg
LyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUI5MTQxMTFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0
aW9uU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjI4LDcgKzI2Mjks
NyBAQAogCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0M0NCODAxMkYyNUU1
MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCAqLzsgfTsKIAkJOTM0NDJDOUUwRDJCMzM1QzAw
MzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0Ew
IC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0
Q0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5
MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgfTsKKwkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VD
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTM0RjcxM0EwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxMzkw
RDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEY3MTNDMEQ1QTZG
MTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxM0IwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291
cmNlRXJyb3JCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM1MDBGMzIxM0ZERTNCRTAwOTlFQzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUwMEYz
MTEzRkRFM0JFMDA5OUVDMjQgLyogTlNTY3JvbGxlckltcERldGFpbHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg1Myw3ICszODU0LDcgQEAK
IAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMyMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzA3
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIyMDk3OUMzQkQwMDQ2Nzc0MSAv
KiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDkwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmggKi87IH07Ci0JCUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0MSAv
KiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLzsgfTsK
KwkJQkNCMTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3
NzQxIC8qIENhY2hlZFNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQjE2QzI4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHls
ZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0IxNkMwRjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oICovOyB9Owog
CQlCQ0IxNkMyQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzExMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjkyRDRGMTI5MzU1MEIwMEM4Mzg3RiAv
KiBGb250QmFzZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQjkyRDRFMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg2Nyw3ICszODY4
LDcgQEAKIAkJQkNDRkJBRTgwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NGQkFFNzBCNTE1
MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QwRTBGQjBFOTcyQzM1MDAyNjVERUEgLyogU2Vj
dXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDBFMEY4MEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDBFMEZDMEU5NzJD
MzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbkhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDBFMEY5MEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1
cml0eU9yaWdpbkhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
ICovOyB9OworCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDlD
MkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEOUMyQkQwQzE3QjY5RTAwNUM5MEEyIC8q
IEpTTmFtZWROb2RlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkNEOUMyQzMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMkJGMEMxN0I2
OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbklu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREQ0
NTREMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzMTgsNiArODMxOSw3IEBACiAJCTUxQUJG
NjRDMTYzOTJFMjgwMDEzMkE3QSAvKiBMb2FkZXJTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkZXJTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRl
clR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVy
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYzRjAw
RTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUI0MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCNDVEMUUxQUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1RDFGMUFCOEQxRTIwMDExN0NEMiAvKiBDb250
ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRF
eHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCOTE0MEIxRkQyNzgy
NTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ2lzdHJhdGlvblN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTMzNSw2ICsyNTMzNyw3IEBACiAJCQkJMTQzMkU4NDYwQzUxNDkzODAwQjE1MDBGIC8q
IEdDQ29udHJvbGxlci5oICovLAogCQkJCUM1ODVBNjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJREJC
aW5kaW5nVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlDNTg1QTY2MTExRDRGQUM1MDA0QzNFNEIgLyog
SURCQmluZGluZ1V0aWxpdGllcy5oICovLAorCQkJCTUxQjQwRDhCMjNBNTQ4NTkwMEUwNTI0MSAv
KiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTlCRDRFOTE0MUM0NjI4
NzIwMDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICovLAogCQkJCTlCRDRF
OTE1MUM0NjI4NzIwMDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCAqLywKIAkJ
CQk3QzU3QkZFNjFFREUyRjVCMDA1MzRBNDggLyogSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCAq
LywKQEAgLTMwMzc5LDYgKzMwMzgyLDcgQEAKIAkJCQlDRDVGRjQ5QjIxNjJFNEI3MDA0QkQ4NkYg
LyogSVNPU2NoZW1lVHlwZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1RkY0OTcyMTYyRTJC
NzAwNEJEODZGIC8qIElTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzEyNDdFMzgxRkVBNUY4NjAwOEMwOENFIC8qIEl0ZXJhdGlvbkNvbXBvc2l0ZU9wZXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTFCNDBEOEMyM0E1NDg5NTAwRTA1MjQxIC8qIEphdmFTY3Jp
cHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzMwRDk4NDFGODE1
QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
MzBEOTg2MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRp
b25EZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxz
LmgKaW5kZXggZTgwYTk5MGEyZDc5NTJmZDBjMjYxZGNlMTU0YWJkY2VhNzNlM2M1YS4uMTE0MTE5
OGQyYmMzYjlkMzNkNDU3MzJhZWUxZDRjNjQ5MWU2Zjg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaApAQCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3Qg
RXhjZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgaW50IGxpbmVOdW1i
ZXIgeyAwIH07CiAgICAgaW50IGNvbHVtbk51bWJlciB7IDAgfTsKLSAgICBTdHJpbmcgc291cmNl
VVJMOworICAgIFN0cmluZyBzb3VyY2VVUkwgeyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4
ZWN1dGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3Jp
cHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcwMjBlZGU0NDk2ODFlOTY0YjAy
OTE2NDYxMjQ5Y2QyZjE2N2JmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0phdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw5NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBFeGVjdXRlV2l0aFVz
ZXJHZXN0dXJlIHsKKyAgICBObywKKyAgICBZZXMsCit9OworCitzdHJ1Y3QgSmF2YVNjcmlwdEV4
ZWN1dGlvblBhcmFtZXRlcnMgeworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZTsKKyAg
ICBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeyBFeGVjdXRl
V2l0aFVzZXJHZXN0dXJlOjpObyB9OworCisgICAgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRl
cnMoY29uc3QgU3RyaW5nJiBzb3VyY2UpCisgICAgICAgIDogc291cmNlQ29kZShzb3VyY2UpCisg
ICAgeworICAgIH0KKworICAgIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzKGNvbnN0IFN0
cmluZyYgc291cmNlLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgICAgIDogc291cmNlQ29k
ZShzb3VyY2UpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0
dXJlID8gRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6WWVzIDogRXhlY3V0ZVdpdGhVc2VyR2VzdHVy
ZTo6Tm8pCisgICAgeworICAgIH0KKworICAgIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
KFNjcmlwdFNvdXJjZUNvZGUmJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVXaXRoVXNlckdlc3R1
cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vKQor
ICAgICAgICA6IHNvdXJjZUNvZGUoV1RGTW92ZShpbnB1dFNvdXJjZUNvZGUpKQorICAgICAgICAs
IGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7Cisg
ICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgaW5wdXRTb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVX
aXRoVXNlckdlc3R1cmUgPSBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICAgICAgOiBz
b3VyY2VDb2RlKGlucHV0U291cmNlQ29kZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVzZXJHZXN0
dXJlKGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZUNvZGUgPDwgZXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IHNvdXJj
ZUNvZGUgPSBTY3JpcHRTb3VyY2VDb2RlOjpkZWNvZGU8RGVjb2Rlcj4oZGVjb2Rlcik7CisgICAg
ICAgIGlmICghc291cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlOwor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUpKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMgeyBXVEZNb3ZlKCpzb3VyY2VDb2RlKSwgZXhlY3V0ZVdpdGhV
c2VyR2VzdHVyZSB9OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RXhl
Y3V0ZVdpdGhVc2VyR2VzdHVyZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgICAgIFdlYkNvcmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmUsCisgICAgICAgIFdlYkNvcmU6
OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vLAorICAgICAgICBXZWJDb3JlOjpFeGVjdXRlV2l0
aFVzZXJHZXN0dXJlOjpZZXMKKyAgICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggOGU0YzdiMzgxMjQ0ZTc3NmJkZDU4
MzRhZTQxOTM2ZDdkY2M2MjI4Zi4uMTllMzRiMWUyMzRmNGM0OWE0YTM0YTRlMzU4MTc5ODNlZTU1
MWNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIGlmIChtX2Z1bmN0aW9uKQogICAgICAgICBleGVjdXRlRnVu
Y3Rpb25JbkNvbnRleHQod2luZG93LCB3aW5kb3ctPnByb3h5KCksIGRvY3VtZW50KTsKICAgICBl
bHNlCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlw
dCgpLmV2YWx1YXRlSW5Xb3JsZChtX2lzb2xhdGVkV29ybGQsIHsgeyBtX2NvZGUgfSwgRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSwgW10gKFZhbHVlT3JFeGNlcHRpb24pIHsgfSk7CiB9CiAK
IHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNWY1YmFhMjA2MzgzNThjMGJiODJiMzdiY2VhMjZjYWQ5OGVmNjRhYS4u
NTQ5MWJlMTNiNjIzN2FlMzk2YTIzYTE1ZTZkNDI2ZmM3MjFjZTBlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2LDggKzU2LDEw
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIm5wcnVudGlt
ZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFBy
b21pc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KQEAgLTY4LDYgKzcw
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1
ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTEwOSwxNSArMTEyLDM5IEBAIFNjcmlw
dENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAgIGF1dG8g
cGFyYW1ldGVycyA9IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHsgc291cmNlQ29kZSwg
RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfTsKKworICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7
CisgICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7CisgICAgZXZhbHVhdGVJbldvcmxkKHdvcmxk
LCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVPckV4Y2VwdGlvbiBpbm5lclJlc3VsdCkgeworICAgICAg
ICByZXN1bHQgPSBpbm5lclJlc3VsdDsKKyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsK
KyAgICBBU1NFUlQoY2FsbGVkKTsKKwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUo
KSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGVJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rp
b24pCiB7CisgICAgQVNTRVJUKHJlc29sdmVGdW5jdGlvbik7CisKKyAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHBhcmFtZXRlcnMuZXhlY3V0ZVdpdGhVc2VyR2VzdHVy
ZSA9PSBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpZZXMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNl
ckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CisK
KyAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgeworICAg
ICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJT
Y3JpcHQgZXhlY3V0aW9uIGlzIGN1cnJlbnRseSBkaXNhYmxlZCJfcyB9KSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoaXNQYXVzZWQoKSkgeworICAgICAgICByZXNvbHZlRnVu
Y3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJTY3JpcHQgZXhlY3V0aW9u
IGlzIGN1cnJlbnRseSBwYXVzZWQiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBjb25zdCBTb3VyY2VDb2Rl
JiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOworICAgIGNvbnN0IFNv
dXJjZUNvZGUmIGpzU291cmNlQ29kZSA9IHBhcmFtZXRlcnMuc291cmNlQ29kZS5qc1NvdXJjZUNv
ZGUoKTsKICAgICBTdHJpbmcgc291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVy
bCgpOwogCiAgICAgLy8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0aGUgSlMgcmV0dXJuIHZhbHVl
IG9yIDAKQEAgLTEzNCw3ICsxNjEsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyYwogCiAgICAg
UmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUu
c3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBwYXJh
bWV0ZXJzLnNvdXJjZUNvZGUuc3RhcnRMaW5lKCksIHBhcmFtZXRlcnMuc291cmNlQ29kZS5zdGFy
dENvbHVtbigpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhj
ZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRF
dmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzU291
cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKQEAgLTE0NCwxNSArMTcxLDE2
IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjCiAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWls
cz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAg
ICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKLSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZn
bG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0
KCksICZkZXRhaWxzKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2
YWx1YXRpb25FeGNlcHRpb24sIHBhcmFtZXRlcnMuc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwg
JmRldGFpbHMpOwogICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOwog
ICAgIH0KIAogICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgaWYgKG9wdGlv
bmFsRGV0YWlscykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFp
bHMpOwogCi0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIGlmIChvcHRpb25hbERldGFpbHMp
CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxz
KSk7CisgICAgZWxzZQorICAgICAgICByZXNvbHZlRnVuY3Rpb24ocmV0dXJuVmFsdWUpOwogfQog
CiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtNTU4LDQyICs1ODYsNDcg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9
CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pT
Qzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVh
ZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgcmV0dXJuIGV4
ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxk
KCksIHBhcmFtZXRlcnMpOwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5X
b3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBib29sIGNhbGxlZCA9
IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV2YWx1YXRlSW5Xb3Js
ZCh3b3JsZCwgcGFyYW1ldGVycywgWyZdKFZhbHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsK
KyAgICAgICAgcmVzdWx0ID0gaW5uZXJSZXN1bHQ7CisgICAgICAgIGNhbGxlZCA9IHRydWU7Cisg
ICAgfSk7CisgICAgQVNTRVJUKGNhbGxlZCk7CisKICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0
LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCi1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNl
ckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0g
ICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5
cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50
KCktPmNoYXJzZXQoKSkpOwotCi0gICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFu
IGVtcHR5IEpTVmFsdWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KLSAgICBp
ZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgp
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3Vy
Y2VDb2RlLCB3b3JsZCk7Ci19CisgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9y
RXhjZXB0aW9uIHJlc3VsdDsKKyAgICBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgcGFyYW1ldGVycywgWyZdKFZhbHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAg
ICAgcmVzdWx0ID0gV1RGTW92ZShpbm5lclJlc3VsdCk7CisgICAgICAgIGNhbGxlZCA9IHRydWU7
CisgICAgfSk7CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCi17Ci0gICAgYXV0
byByZXN1bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBm
b3JjZVVzZXJHZXN0dXJlKTsKKyAgICBBU1NFUlQoY2FsbGVkKTsKICAgICByZXR1cm4gcmVzdWx0
ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQotVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlKQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24pCiB7
CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIGlmICghc2hv
dWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNj
cmlwdHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9
IH0pOworICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50KSkgewor
ICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7
ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBz
ZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSkpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAg
IHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0
dXJlKTsKKyAgICBldmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFdURk1vdmUocmVz
b2x2ZUZ1bmN0aW9uKSk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dV
c2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKQEAgLTY0MSw3ICs2NzQs
NyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3Qg
VVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2No
ZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKIAogICAgIFN0cmluZyBkZWNv
ZGVkVVJMID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5zdHJpbmcoKSk7Ci0gICAgYXV0
byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVSTC5zdWJz
dHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsgeyBkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2Ny
aXB0U2NoZW1lTGVuZ3RoKSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKIAogICAg
IC8vIElmIGV4ZWN1dGluZyBzY3JpcHQgY2F1c2VkIHRoaXMgZnJhbWUgdG8gYmUgcmVtb3ZlZCBm
cm9tIHRoZSBwYWdlLCB3ZQogICAgIC8vIGRvbid0IHdhbnQgdG8gdHJ5IHRvIHJlcGxhY2UgaXRz
IGRvY3VtZW50IQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCmluZGV4IGEzZjZjM2FmNThjMDFhMDE3MDgzNTIzOWJhYWY1OTU2MzM5MGNmNGEuLjc5MjFi
ZTBkZDk0YzFiMmIyODg3ZmVjNzZiN2ZiYzhmM2Q3NWYyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDYgKzIzLDggQEAKIAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisj
aW5jbHVkZSAiSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9u
Zy5oPgpAQCAtOTAsMTEgKzkyLDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFs
bFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgSlNDOjpK
U1ZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldv
cmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNl
KTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxz
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmFs
dWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICB1
c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlv
bik+OworCisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbihjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVj
dXRpb25QYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycyYsIFJlc29sdmVGdW5jdGlvbiYmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXhl
Y3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25z
dCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQgZXZhbHVhdGVJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVz
b2x2ZUZ1bmN0aW9uJiYpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMo
RG9jdW1lbnQmKSBjb25zdDsKIApAQCAtMTA1LDEwICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgLy8g
RGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhp
cyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUlu
V29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAg
dm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0
IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3Jh
cHBlcldvcmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2Ny
aXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
PiYmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2Ny
aXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4IGZjYTU3NGNm
ZGFhYzQ5YmFkZjRkODI5ZjE5MjAwMjExMTQzNzE5OGIuLjU4MWQ4NmRmYzNjZDMwZjhmNDk3NTBl
YjljNjU2NDAyMjE5NWFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTb3VyY2VDb2RlLmgKQEAgLTYzLDYgKzYzLDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
CisgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBvdGhlcikKKyAg
ICAgICAgOiBtX3Byb3ZpZGVyKG90aGVyLm1fcHJvdmlkZXIuY29weVJlZigpKQorICAgICAgICAs
IG1fY29kZShvdGhlci5tX2NvZGUpCisgICAgICAgICwgbV9jYWNoZWRTY3JpcHQob3RoZXIubV9j
YWNoZWRTY3JpcHQpCisgICAgeworICAgIH0KKworICAgIFNjcmlwdFNvdXJjZUNvZGUmIG9wZXJh
dG9yPShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJv
dmlkZXIgPSBvdGhlci5tX3Byb3ZpZGVyLmNvcHlSZWYoKTsKKyAgICAgICAgbV9jb2RlID0gb3Ro
ZXIubV9jb2RlOworICAgICAgICBtX2NhY2hlZFNjcmlwdCA9IG90aGVyLm1fY2FjaGVkU2NyaXB0
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlLmxlbmd0aCgpID09IDA7IH0KIAogICAgIGNvbnN0IEpTQzo6U291
cmNlQ29kZSYganNTb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CkBAIC03NSw3
ICs5MCwzNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLT51cmwoKTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpIDw8
IHVybCgpIDw8IHN0YXJ0TGluZSgpIDw8IHN0YXJ0Q29sdW1uKCkgPDwgbV9wcm92aWRlci0+c291
cmNlVHlwZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxTY3JpcHRTb3VyY2VDb2RlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIFN0cmluZyBzb3VyY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c291cmNlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgVVJM
IHVybDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpbnQgc3RhcnRMaW5lOworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0YXJ0TGluZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIGludCBzdGFydENvbHVtbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdGFydENvbHVtbikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGU7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHNvdXJjZVR5cGUpKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICAKKyAgICAgICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUgeyBz
b3VyY2UsIFdURk1vdmUodXJsKSwgVGV4dFBvc2l0aW9uIHsgT3JkaW5hbE51bWJlcjo6ZnJvbU9u
ZUJhc2VkSW50KHN0YXJ0TGluZSksIE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFy
dENvbHVtbikgfSwgc291cmNlVHlwZSB9OworICAgIH0KKwogcHJpdmF0ZToKICAgICBSZWY8SlND
OjpTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICBKU0M6OlNvdXJjZUNvZGUgbV9jb2Rl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDBkODMxOTI1Mjc4MmRhOTVhNzJlZDM2Y2E1ZjA0OGM3
Y2Q4Yzg0NjEuLjE0ZDI1YTg1YTU2Njk1MDM2ZmU1NTcxZTYyODljMWE2ZTIxYWJmZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OmRpc3BhdGNoTWVzc2FnZUFzeW5jKGNvbnN0IFN0cmluZyYgbWVzc2FnZU9i
agogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbihj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiB7CiAgICAgYXV0byYgc3RhdGUgPSAqbWFpbldvcmxk
RXhlY1N0YXRlKCZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2Zy
b250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKGV4cHJlc3Npb24pLnRvV1RGU3RyaW5nKCZzdGF0ZSkgPT0gInRydWUiOworICAgIHJl
dHVybiBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKHsgeyBleHByZXNzaW9uIH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6
Ok5vIH0pLnRvV1RGU3RyaW5nKCZzdGF0ZSkgPT0gInRydWUiOwogfQogCiB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA2ZWFmY2Ez
NGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2Li4wNDI3ODY1YTBkY2U3YTFhZWU5NWMz
NzI1ZDA3NDY0Y2ZiYjRhNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3Rh
dGUgc3RhdGUpCiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkg
JiYgZnJhbWUpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRs
ZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3Jp
cHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJs
b2NrZWQpIHsKICAgICAgICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKHNjcmlwdCk7CisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsgeyBzY3JpcHQgfSwgRXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZTo6Tm8gfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBtX2RvY3VtZW50TG9hZGVy
LmZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92
ZSh1bmJsb2NrSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKaW5kZXggMGMxNWY4YjkzYzc4MDdlZmQ3NGJiZTQwMDgyODQ0NDFjNTZmYWRiZi4uY2NiNWY0
N2RmYzRkOGQwZTU5NWI1NjgyMTcyZWY5YjVmYTA5Mzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBj
bGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkph
dmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIHRydWUsIFtj
b250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVl
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFj
a10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAg
ICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNv
bnRleHQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggYWI4OTc4MGUyZWUzNmVmY2YzYmIxYjI1MjRiMzVkNDRmYzZl
MWU2MS4uNGM3YTA0NWQ4ZjY3ODM2MDAxODU4MDMxYzA3NTVmMTM4OTQ3NmJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDQ2LDcg
KzEwNDYsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNj
cmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKQogewogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoamF2YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hh
bmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2Ny
aXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgX3BhZ2UtPnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZSh7IGphdmFTY3JpcHRTdHJpbmcsIChib29sKWZvcmNlVXNlckdlc3R1
cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdl
YktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlm
ICghaGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOTgwYmZiOWU2OTA3OGZmMDRhZDVjNmU3ZDg1OGU0OGYx
ZjQ0OTg2Ni4uZThkMzY5NDI1ZDgzZDAyZTdkMzBhYTA4ODg2OTNlZGI5YzU0YmI1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDEyICszODQ1LDEy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkK
ICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQ
cm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKEphdmFTY3Jp
cHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpGdW5jdGlvbjx2b2lkIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQs
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBh
dGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5v
dCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3Nh
cnkoKTsKQEAgLTM4NjEsMTQgKzM4NjEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAg
ICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkp
OworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChwYXJhbWV0ZXJzLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlE
KCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgeyBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUgfSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwMjc0ZDdjZTJmNDM2ODE1NGNjYjY3
OTI1Y2QwZjlkYTQzYzI5Y2Q1Li5hNGQwM2UxYjQ3NDY0ZDJiYjFkMWM4YzcxYmEzN2ZmMGQyZDZl
ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODEsNiArODEs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+IC8vIEZJWE1FOiBNb3ZlIExheW91
dFZpZXdwb3J0Q29uc3RyYWludCB0byBpdHMgb3duIGZpbGUgYW5kIHN0b3AgaW5jbHVkaW5nIHRo
aXMuCiAjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0lucHV0TW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFBvaW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oPgpAQCAtMTA2MSw4ICsxMDYyLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJh
bWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBi
b29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29y
bGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7CisKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
OworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6
SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAg
IHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWM4NWZjMTU0OTRl
MWIyMjMxNTZhMzU0Y2FhOWQyYjJmNmU4OWI5ZC4uYTcwZTFlM2E2NmY1YTQxMmI5ZGZmZjNiNjZm
MGI1NjMwOTc2YjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNTI1LDYgKzM1MjUsOCBAQAogCQk1MTg3MUI1QTEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4QUNB
RTkxMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVk
ZW50aWFsVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDcmVkZW50
aWFsVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTgyMzg2MDEw
RjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5KYXZh
U2NyaXB0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkph
dmFTY3JpcHRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4RDJD
QUIxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEQyQ0FDMTJENTE1M0IwMDNCQjkzQiAv
KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE4RThFRjMxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUzNyw2ICs1NTM5LDggQEAK
IAkJCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovLAogCQkJCTQx
QjI4QjA5MUY4M0FEM0UwMEZCNTJBQyAvKiBSVENQYWNrZXRPcHRpb25zLmNwcCAqLywKIAkJCQk0
MUIyOEIwODFGODNBRDNFMDBGQjUyQUMgLyogUlRDUGFja2V0T3B0aW9ucy5oICovLAorCQkJCTUx
OEI1MDU4MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5KYXZhU2NyaXB0QXJndW1lbnRzLmNwcCAqLywK
KwkJCQk1MThCNTA1OTIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5o
ICovLAogCQkJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oICovLAogCQkJCTFBQUI0QThDMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0
ZW5zaW9uLmggKi8sCiAJCQkJRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4Njcz
Y2Q4MWE2ODJjMjUzMC4uN2M1Y2NhNzFiODZhZDQ5YWY4NjhkMzFjZjUyNGUzMjNjNmVmYTAyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRV
UkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFT
Y3JpcHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNl
IHRoZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5j
ZXMgdG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3Bs
dWdpbjsKLSAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIGF1
dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bih7IGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpIH0pOwogCiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNjQ0NWFhNWE3MjU2ZDZiYTg3ZDczNmYyNmJhZGM3MWE5ODA4ZTRk
MC4uZDhmZTUyNWU4ODFjMmU2NmJkZmZhNmM2Y2U3OGE1ZWZiMTliMGY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzNTIsNDUgKzMzNTIs
NDYgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQg
PyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9M
aW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5u
aW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBk
aXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBKU0xvY2tIb2xkZXIgbG9j
ayhjb21tb25WTSgpKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKLSAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7Ci0KICAgICBhdXRv
KiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29y
bGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCk7Ci0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAg
ICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0
dXJlKTsKLSAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgc2VyaWFsaXplZFJlc3Vs
dFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZv
cldvcmxkKHdvcmxkKSwKLSAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCkt
PnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUo
KSksIG51bGxwdHIpOwotICAgICAgICB9CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVG
cmFtZSgpIHx8ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCB7IHsgIlVuYWJsZSB0byBkZXRlcm1pbmUgY29udGV4
dCBmb3IgZXhlY3V0aW5nIHNjcmlwdCJfcyB9IH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAg
IGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJp
YWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHByb3RlY3RlZFdvcmxkID0gbWFr
ZVJlZigqd29ybGQpLCB3b3JsZCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGZy
YW1lLCBjYWxsYmFja0lEXSAoVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIHNlcmlhbGl6ZWRSZXN1bHREYXRhUmVmZXJlbmNlOworICAgICAgICBF
eGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAgICAgIGlmIChyZXN1bHQudmFs
dWUoKSkgeworICAgICAgICAgICAgYXV0byBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLCB0
b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29y
ZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKHNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0RGF0
YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSB7ICJFcnJvciBzZXJpYWxp
emluZyByZXN1bHQgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQiX3MgfTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwotICAgIGlmICghcmVzdWx0KQotICAg
ICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhzZXJpYWxpemVkUmVzdWx0RGF0YVJlZmVy
ZW5jZSwgZXhjZXB0aW9uRGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5j
ZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZN
KCkpOworICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZN
b3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMs
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewotICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwgZm9yY2VVc2Vy
R2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KG1haW5X
ZWJGcmFtZSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBBU1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJh
bWUsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsK
KyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxv
cHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmco
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDE1ZGI0Yjg5ZDZjOGE3YjgyZDFkZGY2YjY3NDU0NDA1NTYyZjE4ODgu
LmUxZDNkMDVmNTQ2NTM4ZjBhMDMyZDZmZjRmZDZlMjU4Y2I2NDg4YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5NSw2ICsxOTUsNyBAQCBzdHJ1
Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwogc3RydWN0
IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Oworc3RydWN0IEphdmFT
Y3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IEtleXByZXNzQ29tbWFuZDsKIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKQEAg
LTE0MzQsOSArMTQzNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFy
Y2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBy
dW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxi
YWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OkphdmFT
Y3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvcmNlUmVw
YWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0
IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRp
b25zLCBDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOTliMzJmZWY3ODQ5YTBkNWY4YjNiNTNm
NmQ0MjUwZmY1NDE1MDUwMS4uMGFlNmNjMDlmNWVkMGVlMjcyMzRlZWViNzE1MjZhZjI2MzM5YzM3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yMDQsOCArMjA0LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZl
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQo
U3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdv
cmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlw
dEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6Okph
dmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmluZz4g
d29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2Ny
aXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNv
cmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIAogICAgIFNlbGVjdEFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYy4uN2FhOTAxYWM0MTVi
Y2MzZDQ5NDk2MDFjZjAzYjQzMzE4MTRmNTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpA
QCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxs
eTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAg
ICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1h
aW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiJUBc
IikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsKKyAgICAgICAgY29yZShbbV9mcm9udGVu
ZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5h
YnNvbHV0ZVN0cmluZ10gfSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7
CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAgICBbaGFuZGxl
IHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJvbnRlbmRXaW5k
b3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJ
bnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXV0pOworICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZy
b250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250
ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmdd
XSB9KTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KaW5kZXggNzhjYzMzZWJhMTVhNmUwZjE2MmE2MDlkMzhiMmU3Y2UwODVjM2Yw
OC4uMWYxODNhNGQ5Y2YxODM2ZmU1M2RmNTc4ZjU0NmJmMzE2NWQyOTZhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyArNzAwLDcgQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5T
U3RyaW5nICopc3RyaW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9
IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2Vw
dGlvbih7IHN0cmluZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9KTsKIAogICAgIGlmICghX3By
aXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1l
IGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2LDcgKzIwOTYsNyBA
QCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7
CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsgLy8gUnVubmlu
ZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAKLSAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCBzdHJpbmcsIHRydWUpOworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigqY29yZSh3b3JsZCksIHsgc3RyaW5nLCB0cnVl
IH0pOwogCiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2Fz
ZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJl
dHVybiBAIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggOTYxZTA1Y2YxYzIyOWRlMTEwNDZiN2M0ZmI4MzRmNTMzOWJiODIyNS4uNmFlYjZmYTQ4ZTQy
NmZjMGU1ODEzYmEwZmM0YTNkNTk5NTNlOGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcgQEAgLSAoTlNBcHBsZUV2ZW50
RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0
cmluZyAqKXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29y
ZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0LCB0
cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBzY3JpcHQsIHRydWUgfSk7CiAgICAgaWYgKCFy
ZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KFdlYkNv
cmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385737</attachid>
            <date>2019-12-15 22:07:17 -0800</date>
            <delta_ts>2019-12-15 22:42:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191215220716.patch</filename>
            <type>text/plain</type>
            <size>57005</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLjQxN2U2ZWNmOGZl
Yjc5ZDE1ODc0ZjBlYWJjYTRkYjcxNDE2ZWYyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjM5
LDkgKzIzOSwxMSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKyAgICBi
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
KyAgICBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4OGI4MDE2YTE3M2E4ZjllMzgxOGQ3
NzllZTRjYmJiMmMwZWJlODNjLi5kNjdkNDU4YTkwNDQxMjA1NjU2NDFiNjFjNzI2OGE0NzViZGJj
YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNTI0LDYgKzE1MjQsNyBAQAogCQk1MUE5RDlFQTE5NUI5MzFGMDAxQjJCNUMg
LyogR2FtZXBhZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQTlEOUU4MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5oICov
OyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFF
MUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFGNTAzNjE2RjEwMEY2
MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291
cmNlTG9hZGVyVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MUI0MEQ4QzIzQTU0ODk1MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlv
blBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQjQwRDhCMjNBNTQ4NTkwMEUwNTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxQjQ1RDIxMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0NUQxRjFBQjhEMUUyMDAx
MTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDEwMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3Ry
YXRpb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCOTE0MEMxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCOTE0
MTExRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkg
LyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMjYyOCw3ICsyNjI5LDcgQEAKIAkJOTM0M0NCODIxMkYyNUU1MTAw
MzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNDNDQjgwMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4
LmggKi87IH07CiAJCTkzNDQyQzlFMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggKi87
IH07CiAJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVC
QkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8q
IFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmgg
Ki87IH07CisJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzEwOTBF
REIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEY3MTNBMEQ1QTZGMTAwMDAxOEQ2OSAv
KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTM5MEQ1QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJv
ckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
NEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTAwRjMyMTNGREUzQkUw
MDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MDBGMzExM0ZERTNCRTAwOTlFQzI0IC8qIE5TU2Ny
b2xsZXJJbXBEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM4NTMsNyArMzg1NCw3IEBACiAJCUJDQjE2QzFDMDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNCMTZDMDMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjAwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
UmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0IxNkMyMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2
QzA5MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oICovOyB9
OwotCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5NzlDM0JEMDA0
Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IH07CisJCUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyODA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEYwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMkEwOTc5QzNCRDAwNDY3NzQx
IC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5MkQ0RTEyOTM1NTBCMDBD
ODM4N0YgLyogRm9udEJhc2VsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM4NjcsNyArMzg2OCw3IEBACiAJCUJDQ0ZCQUU4MEI1MTUyRUQw
MDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNEMEUwRkIwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwRTBGODBFOTcyQzM1MDAyNjVE
RUEgLyogU2VjdXJpdHlPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQ0QwRTBGQzBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmln
aW5IYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0QwRTBGOTBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW5IYXNoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNENTMzNjQwRUQ2ODQ4
OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0Njgg
LyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgfTsKKwkJQkNENTMzNjQwRUQ2ODQ4
OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0Njgg
LyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMTBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
YW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDlDMkJEMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDlDMkMzMEMxN0I2
OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDREQ0
NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RENDU0RDEyMzZDOTVDMDA5QTc5ODUgLyogQ29s
dW1uSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04MzE4LDYgKzgzMTksNyBAQAogCQk1MUFCRjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9h
ZGVyU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9h
ZGVyU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFGNTAzNTE2
RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2Vi
QXJjaGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBEOEIyM0E1
NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1RDFFMUFCOEQxRTIwMDExN0NEMiAv
KiBDb250ZW50RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUI0NUQxRjFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25T
dG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYXRpb25TdG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUzMzUsNiArMjUzMzcsNyBAQAog
CQkJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAqLywKIAkJCQlD
NTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgKi8sCiAJ
CQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAqLywK
KwkJCQk1MUI0MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMuaCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYyODcyMDA1MDY1QkMgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJN0M1N0JGRTYxRURFMkY1QjAwNTM0QTQ4
IC8qIEpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggKi8sCkBAIC0zMDM3OSw2ICszMDM4Miw3IEBA
CiAJCQkJQ0Q1RkY0OUIyMTYyRTRCNzAwNEJEODZGIC8qIElTT1NjaGVtZVR5cGVCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNENUZGNDk3MjE2MkUyQjcwMDRCRDg2RiAvKiBJU09UcmFja0VuY3J5
cHRpb25Cb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMjQ3RTM4MUZFQTVGODYwMDhDMDhDRSAv
KiBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQjQw
RDhDMjNBNTQ4OTUwMEUwNTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0MzMEQ5ODQxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzMwRDk4NjFGODE1QUVDMDAyNjgzNTYgLyog
SlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4Rjg4MDUwRkY5NTdBRjAwODBG
MDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3OTUyZmQw
YzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjExNDExOThkMmJjM2I5ZDMzZDQ1NzMyYWVlMWQ0YzY0
OTFlNmY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlv
bkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRh
aWxzLmgKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFpbHMgewogICAgIFN0
cmluZyBtZXNzYWdlOwogICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwogICAgIGludCBjb2x1bW5O
dW1iZXIgeyAwIH07Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICBTdHJpbmcgc291cmNlVVJM
IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3MDIwZWRlNDQ5NjgxZTk2NGIwMjkxNjQ2MTI0OWNkMmYxNjdiZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2VudW0gY2xhc3MgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSB7CisgICAgTm8sCisgICAg
WWVzLAorfTsKKworc3RydWN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHsKKyAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGU7CisgICAgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBl
eGVjdXRlV2l0aFVzZXJHZXN0dXJlIHsgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfTsKKwor
ICAgIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlKQor
ICAgICAgICA6IHNvdXJjZUNvZGUoc291cmNlKQorICAgIHsKKyAgICB9CisKKyAgICBKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZUNvZGUoc291cmNlKQorICAgICAgICAsIGV4ZWN1
dGVXaXRoVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSA/IEV4ZWN1dGVXaXRoVXNlckdlc3R1
cmU6OlllcyA6IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAg
ICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhTY3JpcHRTb3VyY2VDb2RlJiYgaW5wdXRT
b3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUg
PSBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICAgICAgOiBzb3VyY2VDb2RlKFdURk1v
dmUoaW5wdXRTb3VyY2VDb2RlKSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlKGV4
ZWN1dGVXaXRoVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIEphdmFTY3JpcHRFeGVj
dXRpb25QYXJhbWV0ZXJzKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIGlucHV0U291cmNlQ29kZSwg
RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0gRXhlY3V0ZVdp
dGhVc2VyR2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShpbnB1dFNvdXJjZUNvZGUp
CisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0aFVzZXJHZXN0dXJl
KQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBz
b3VyY2VDb2RlIDw8IGV4ZWN1dGVXaXRoVXNlckdlc3R1cmU7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBP
cHRpb25hbDxTY3JpcHRTb3VyY2VDb2RlPiBzb3VyY2VDb2RlID0gU2NyaXB0U291cmNlQ29kZTo6
ZGVjb2RlPERlY29kZXI+KGRlY29kZXIpOworICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShleGVjdXRlV2l0aFVzZXJHZXN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHsgV1RG
TW92ZSgqc291cmNlQ29kZSksIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgfTsKKyAgICB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpFeGVjdXRlV2l0
aFVzZXJHZXN0dXJlLAorICAgICAgICBXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpO
bywKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6WWVzCisgICAgPjsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCmluZGV4IDhlNGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIyOGYuLjE5ZTM0
YjFlMjM0ZjRjNDlhNGEzNGE0ZTM1ODE3OTgzZWU1NTFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZv
aWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAo
bV9mdW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdpbmRvdywgd2lu
ZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtX2lzb2xhdGVkV29ybGQs
IG1fY29kZSk7CisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUluV29ybGQobV9pc29s
YXRlZFdvcmxkLCB7IHsgbV9jb2RlIH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH0sIFtd
IChWYWx1ZU9yRXhjZXB0aW9uKSB7IH0pOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhl
Y3V0ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDVmNWJhYTIwNjM4
MzU4YzBiYjgyYjM3YmNlYTI2Y2FkOThlZjY0YWEuLjU0OTFiZTEzYjYyMzdhZTM5NmEyM2ExNWU2
ZDQyNmZjNzIxY2UwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCkBAIC01Niw4ICs1NiwxMCBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRp
bWVfcm9vdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNMb2NrLmg+CkBAIC02OCw2ICs3MCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25n
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4K
KyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9u
Lmg+CkBAIC0xMDksMTUgKzExMiwzOSBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJv
bGxlcigpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVJbldvcmxk
KHNvdXJjZUNvZGUsIHdvcmxkKTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBKYXZhU2NyaXB0RXhl
Y3V0aW9uUGFyYW1ldGVycyB7IHNvdXJjZUNvZGUsIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5v
IH07CisKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVz
dWx0OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVycywgWyZdKFZhbHVlT3JF
eGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5uZXJSZXN1bHQ7Cisg
ICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgQVNTRVJUKGNhbGxlZCk7CisKICAg
ICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQog
Ci1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQor
Cit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChET01XcmFwcGVyV29ybGQm
IHdvcmxkLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
UmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQogeworICAgIEFTU0VSVChyZXNvbHZl
RnVuY3Rpb24pOworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihw
YXJhbWV0ZXJzLmV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgPT0gRXhlY3V0ZVdpdGhVc2VyR2VzdHVy
ZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0
cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiU2NyaXB0IGV4ZWN1dGlvbiBpcyBjdXJyZW50
bHkgZGlzYWJsZWQiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlz
UGF1c2VkKCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKG1ha2VVbmV4cGVjdGVkKEV4Y2Vw
dGlvbkRldGFpbHMgeyAiU2NyaXB0IGV4ZWN1dGlvbiBpcyBjdXJyZW50bHkgcGF1c2VkIl9zIH0p
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxk
LnZtKCkpOwogCi0gICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29k
ZS5qc1NvdXJjZUNvZGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBw
YXJhbWV0ZXJzLnNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVS
TCA9IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIC8vIGV2YWx1YXRlIGNv
ZGUuIFJldHVybnMgdGhlIEpTIHJldHVybiB2YWx1ZSBvciAwCkBAIC0xMzQsNyArMTYxLDcgQEAg
VmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmMKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJh
bWUpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQo
bV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0
YXJ0Q29sdW1uKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRl
U2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwgcGFyYW1ldGVycy5zb3VyY2VDb2RlLnN0YXJ0TGlu
ZSgpLCBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVy
blZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlND
OjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7CkBAIC0xNDQsMTUgKzE3MSwxNiBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
YwogICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFp
bHM7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhj
ZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBwYXJhbWV0
ZXJzLnNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKICAgICAgICAgb3B0aW9u
YWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9
IHNhdmVkU291cmNlVVJMOwotICAgIGlmIChvcHRpb25hbERldGFpbHMpCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKIAotICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKKyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXNvbHZlRnVuY3Rpb24o
bWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscykpOworICAgIGVsc2UKKyAgICAgICAgcmVz
b2x2ZUZ1bmN0aW9uKHJldHVyblZhbHVlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSkKQEAgLTU1OCw0MiArNTg2LDQ3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNlbmRpZgogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHQsIGZv
cmNlVXNlckdlc3R1cmUpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBwYXJhbWV0ZXJzKTsKIH0KIAotSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAg
IGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VV
c2VyR2VzdHVyZSk7CisgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0
aW9uIHJlc3VsdDsKKyAgICBldmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShW
YWx1ZU9yRXhjZXB0aW9uIGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IGlubmVyUmVz
dWx0OworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIEFTU0VSVChjYWxsZWQp
OworCiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsg
fTsKIH0KIAotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7Ci0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJH
ZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwotICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNl
Q29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9u
KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKLQotICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91bGQgcmV0
dXJuIGFuIEV4Y2VwdGlvbkRldGFpbHMuCi0gICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQot
ICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwotfQorICAgIGJv
b2wgY2FsbGVkID0gZmFsc2U7CisgICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7CisgICAgZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShWYWx1ZU9y
RXhjZXB0aW9uIGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoaW5uZXJS
ZXN1bHQpOworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH0pOwogCi1KU0M6OkpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlKQotewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2Vu
dFNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgQVNT
RVJUKGNhbGxlZCk7CiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpK
U1ZhbHVlIHsgfTsKIH0KLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKwordm9pZCBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVzb2x2
ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gKm1f
ZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBpZiAoIXNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhk
b2N1bWVudCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxz
IHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9y
IHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KTsKKyAgICBpZiAoIXNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhkb2N1bWVudCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKG1h
a2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50
IHNjcmlwdHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwg
eyB9IH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGRvY3VtZW50LnNldEhhc0V2
YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29y
bGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgZXZhbHVhdGVJbldvcmxk
KHdvcmxkLCBwYXJhbWV0ZXJzLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCiBib29s
IFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYg
ZG9jdW1lbnQpIGNvbnN0CkBAIC02NDEsNyArNjc0LDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9j
dW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNj
cmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKGRlY29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5n
dGgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7
IHsgZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkgfSwgRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNh
dXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBk
b24ndCB3YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhM2Y2YzNhZjU4YzAxYTAx
NzA4MzUyMzliYWFmNTk1NjMzOTBjZjRhLi43OTIxYmUwZGQ5NGMxYjJiMjg4N2ZlYzc2YjdmYmM4
ZjNkNzVmMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgi
CiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTkwLDExICs5MiwxNSBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFw
cGVyV29ybGQ+PiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVT
Y3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBl
eGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpT
Qzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgdXNpbmcgUmVzb2x2ZUZ1bmN0aW9uID0gV1RG
OjpGdW5jdGlvbjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKKworICAgIFdFQkNPUkVfRVhQT1JU
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFw
cGVyV29ybGQmLCBjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmLCBSZXNvbHZlRnVu
Y3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZEln
bm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQm
KTsKKyAgICB2b2lkIGV2YWx1YXRlSW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBKYXZh
U2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYsIFJlc29sdmVGdW5jdGlvbiYmKTsKIAogICAgIGJv
b2wgc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JikgY29uc3Q7CiAKQEAgLTEw
NSwxMCArMTExLDYgQEAgcHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8g
dGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFk
LCBldmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKIAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwot
ICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLQogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29y
bGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxN
b2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYsIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgbG9h
ZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAgICAgdm9pZCBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmLCBET01XcmFwcGVyV29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFNvdXJjZUNvZGUuaAppbmRleCBmY2E1NzRjZmRhYWM0OWJhZGY0ZDgyOWYxOTIwMDIxMTE0
MzcxOThiLi41ODFkODZkZmMzY2QzMGY4ZjQ5NzUwZWI5YzY1NjQwMjIxOTVhYWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC02Myw2ICs2
MywyMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIFNjcmlwdFNvdXJjZUNvZGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgb3RoZXIpCisgICAgICAgIDogbV9wcm92aWRlcihvdGhlci5t
X3Byb3ZpZGVyLmNvcHlSZWYoKSkKKyAgICAgICAgLCBtX2NvZGUob3RoZXIubV9jb2RlKQorICAg
ICAgICAsIG1fY2FjaGVkU2NyaXB0KG90aGVyLm1fY2FjaGVkU2NyaXB0KQorICAgIHsKKyAgICB9
CisKKyAgICBTY3JpcHRTb3VyY2VDb2RlJiBvcGVyYXRvcj0oY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgb3RoZXIpCisgICAgeworICAgICAgICBtX3Byb3ZpZGVyID0gb3RoZXIubV9wcm92aWRlci5j
b3B5UmVmKCk7CisgICAgICAgIG1fY29kZSA9IG90aGVyLm1fY29kZTsKKyAgICAgICAgbV9jYWNo
ZWRTY3JpcHQgPSBvdGhlci5tX2NhY2hlZFNjcmlwdDsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5sZW5ndGgo
KSA9PSAwOyB9CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZTsgfQpAQCAtNzUsNyArOTAsMzcgQEAgcHVibGljOgogICAgIENh
Y2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQu
Z2V0KCk7IH0KIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
ci0+dXJsKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHNvdXJj
ZSgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSA8PCB1cmwoKSA8PCBzdGFydExpbmUoKSA8PCBz
dGFydENvbHVtbigpIDw8IG1fcHJvdmlkZXItPnNvdXJjZVR5cGUoKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2NyaXB0U291cmNlQ29k
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBTdHJpbmcgc291cmNl
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFVSTCB1cmw7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodXJsKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgaW50IHN0YXJ0TGluZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGFydExpbmUp
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpbnQgc3RhcnRD
b2x1bW47CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRDb2x1bW4pKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBKU0M6OlNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZSBzb3VyY2VUeXBlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShz
b3VyY2VUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCisgICAg
ICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlIHsgc291cmNlLCBXVEZNb3ZlKHVybCksIFRleHRQ
b3NpdGlvbiB7IE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydExpbmUpLCBPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRDb2x1bW4pIH0sIHNvdXJjZVR5cGUgfTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmPEpTQzo6U291cmNlUHJvdmlkZXI+IG1fcHJvdmlk
ZXI7CiAgICAgSlNDOjpTb3VyY2VDb2RlIG1fY29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAw
ZDgzMTkyNTI3ODJkYTk1YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxLi4xNGQyNWE4NWE1NjY5NTAz
NmZlNTU3MWU2Mjg5YzFhNmUyMWFiZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihleHByZXNzaW9uKS50b1dURlN0
cmluZygmc3RhdGUpID09ICJ0cnVlIjsKKyAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IHsgZXhwcmVz
c2lvbiB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KS50b1dURlN0cmluZygmc3RhdGUp
ID09ICJ0cnVlIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFs
dWF0ZU9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKaW5kZXggNmVhZmNhMzRlODFhMzk5MmRkMWZiODBmOTAzMmViOTZj
OGI5Yjc3Ni4uMDQyNzg2NWEwZGNlN2ExYWVlOTVjMzcyNWQwNzQ2NGNmYmI0YTVhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZv
aWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXRlKQogICAgIGlmICghdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKSB7CiAgICAgICAgIHVuYmxv
Y2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gbWFr
ZVdlYWtQdHIoZnJhbWUtPnNjcmlwdCgpKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAo
IXVuYmxvY2tlZCAmJiBzY3JpcHRDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIHNjcmlwdENv
bnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOworICAgICAg
ICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bih7IHsgc2NyaXB0IH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH0pOwogICAgICAgICB9
KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKS5j
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDBjMTVmOGI5M2M3ODA3ZWZk
NzRiYmU0MDA4Mjg0NDQxYzU2ZmFkYmYuLmNjYjVmNDdkZmM0ZDhkMGU1OTViNTY4MjE3MmVmOWI1
ZmEwOTM4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAt
MjQ3Miw3ICsyNDcyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVm
IHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdLUGFnZVJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2sp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBs
KHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJp
bmcoKSwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJu
VmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6
OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGFiODk3
ODBlMmVlMzZlZmNmM2JiMWIyNTI0YjM1ZDQ0ZmM2ZTFlNjEuLjRjN2EwNDVkOGY2NzgzNjAwMTg1
ODAzMWMwNzU1ZjEzODk0NzZiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgLSAodm9pZClfZXZhbHVh
dGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVy
ZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxl
ciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3Jp
cHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVy
cm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBqYXZhU2Ny
aXB0U3RyaW5nLCAoYm9vbClmb3JjZVVzZXJHZXN0dXJlIH0sIFtoYW5kbGVyXShBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6
OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDk4
MGJmYjllNjkwNzhmZjA0YWQ1YzZlN2Q4NThlNDhmMWY0NDk4NjYuLmU4ZDM2OTQyNWQ4M2QwMmU3
ZDMwYWEwODg4NjkzZWRiOWM1NGJiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMzg0NSwxMiArMzg0NSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1
bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9
LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZShKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV1RG
TW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdU
Rjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVubmluZyBz
Y3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0cy4KICAg
ICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODYxLDE0ICszODYxLDE1
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFy
YW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5GcmFtZSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1
bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2Fs
bGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZy
YW1lKGZyYW1lSUQsIHsgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMDI3NGQ3Y2UyZjQzNjgxNTRjY2I2NzkyNWNkMGY5ZGE0M2MyOWNkNS4uYTRkMDNl
MWI0NzQ2NGQyYmIxZDFjOGM3MWJhMzdmZjBkMmQ2ZWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lVmlldy5oPiAvLyBGSVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRz
IG93biBmaWxlIGFuZCBzdG9wIGluY2x1ZGluZyB0aGlzLgogI2luY2x1ZGUgPFdlYkNvcmUvR2xv
YmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0phdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9MYXlvdXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0U2l6ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTEw
NjEsOCArMTA2MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2
b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJv
b2wsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworCisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0
ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwor
CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDVjODVmYzE1NDk0ZTFiMjIzMTU2YTM1NGNhYTlkMmIyZjZlODli
OWQuLmE3MGUxZTNhNjZmNWE0MTJiOWRmZmYzYjY2ZjBiNTYzMDk3NmI0ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUyNSw2ICsz
NTI1LDggQEAKIAkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1By
b3RlY3Rpb25TcGFjZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UHJvdGVjdGlvblNwYWNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
QUNGMTAxMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3JlZGVudGlhbFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxOEI1MDU4MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5KYXZhU2NyaXB0
QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkph
dmFTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MThC
NTA1OTIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5KYXZhU2NyaXB0QXJndW1lbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEQyQ0FCMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MThEMkNBQzEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEU4RUYzMTZCMjA5MUMwMEU5MTQy
OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU1MzcsNiArNTUzOSw4IEBACiAJCQkJNDEwNDgyQ0MxREREMkZCNTAwRjAw
NkQwIC8qIFJUQ05ldHdvcmsuaCAqLywKIAkJCQk0MUIyOEIwOTFGODNBRDNFMDBGQjUyQUMgLyog
UlRDUGFja2V0T3B0aW9ucy5jcHAgKi8sCiAJCQkJNDFCMjhCMDgxRjgzQUQzRTAwRkI1MkFDIC8q
IFJUQ1BhY2tldE9wdGlvbnMuaCAqLywKKwkJCQk1MThCNTA1ODIzODYwMTBGMDA4MDg0QzMgLyog
UnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCisJCQkJNTE4QjUwNTkyMzg2MDEwRjAwODA4
NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLywKIAkJCQlCQzJEMDIxNjEyQUM0MUNC
MDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLywKIAkJCQkxQUFCNEE4
QzEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oICovLAogCQkJCUUxRTU1MkMz
MTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IDNlYTAwNmIzY2UzOGUzODk0MWZkYmQ1ODY3M2NkODFhNjgyYzI1MzAuLjdjNWNjYTcxYjg2
YWQ0OWFmODY4ZDMxY2Y1MjRlMzIzYzZlZmEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMjUzLDcgKzEyNTMsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1
ZXN0KQogICAgIC8vIEV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IGNvZGUuIE5vdGUgdGhhdCBydW5u
aW5nIEphdmFTY3JpcHQgaGVyZSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiB0byBiZSBkZXN0cm95
ZWQsIHNvIHdlCiAgICAgLy8gZ3JhYiByZWZlcmVuY2VzIHRvIHRoZSBwbHVnLWluIGhlcmUuCiAg
ICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9wbHVnaW47Ci0gICAgYXV0byByZXN1bHQgPSBm
cmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCBy
ZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBqc1N0cmluZywgcmVxdWVzdC0+YWxs
b3dQb3B1cHMoKSB9KTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDY0NDVhYTVh
NzI1NmQ2YmE4N2Q3MzZmMjZiYWRjNzFhOTgwOGU0ZDAuLmQ4ZmU1MjVlODgxYzJlNjZiZGZmYTZj
NmNlNzhhNWVmYjE5YjBmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zMzUyLDQ1ICszMzUyLDQ2IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBh
Z2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1v
ZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5
Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNU
b0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFdlYkNvcmU6OkphdmFT
Y3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTog
V2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVj
dHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhl
Y3V0aW9uLgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVP
ckV4Y2VwdGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFt
ZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVG
cmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29y
ZVdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAgICAgIGlmIChyZXN1bHQp
IHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZCksCi0gICAgICAgICAg
ICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29y
bGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LnZhbHVlKCkpLCBudWxscHRyKTsKLSAgICAgICAgfQor
ICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwg
eyB7ICJVbmFibGUgdG8gZGV0ZXJtaW5lIGNvbnRleHQgZm9yIGV4ZWN1dGluZyBzY3JpcHQiX3Mg
fSB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVl
KQotICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7
CisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0aGlzLCBwcm90ZWN0ZWRXb3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgd29ybGQsIHByb3Rl
Y3RlZEZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBmcmFtZSwgY2FsbGJhY2tJRF0gKFZhbHVlT3JF
eGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBzZXJpYWxpemVk
UmVzdWx0RGF0YVJlZmVyZW5jZTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25E
ZXRhaWxzOworICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
c2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJh
bWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LnZhbHVlKCkp
LCBudWxscHRyKTsKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCisgICAg
ICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdERhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVz
dWx0VmFsdWUtPmRhdGEoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleGNl
cHRpb25EZXRhaWxzID0geyAiRXJyb3Igc2VyaWFsaXppbmcgcmVzdWx0IG9mIGV4ZWN1dGluZyBK
YXZhU2NyaXB0Il9zIH07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXhjZXB0aW9uRGV0
YWlscyA9IHJlc3VsdC5lcnJvcigpOwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlsczsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJv
cigpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2Fs
bGJhY2soc2VyaWFsaXplZFJlc3VsdERhdGFSZWZlcmVuY2UsIGV4Y2VwdGlvbkRldGFpbHMsIGNh
bGxiYWNrSUQpKTsKKyAgICB9OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1l
KCktPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29y
bGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6SmF2YVNjcmlwdEV4
ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1h
aW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJh
Y2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgQVNTRVJUKG1haW5XZWJGcmFtZSgpICE9
IGZyYW1lKTsKLSAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChmcmFtZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNWRiNGI4OWQ2
YzhhN2I4MmQxZGRmNmI2NzQ1NDQwNTU2MmYxODg4Li5lMWQzZDA1ZjU0NjUzOGYwYTAzMmQ2ZmY0
ZmQ2ZTI1OGNiNjQ4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xOTUsNiArMTk1LDcgQEAgc3RydWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0
IEdsb2JhbEZyYW1lSWRlbnRpZmllcjsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwog
c3RydWN0IEhpZ2hsaWdodDsKK3N0cnVjdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczsK
IHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsK
IHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CkBAIC0xNDM0LDkgKzE0MzUsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIGNv
bnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1
bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6SmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6Oklu
dFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDk5YjMyZmVmNzg0OWEwZDVmOGIzYjUzZjZkNDI1MGZmNTQxNTA1MDEuLjBhZTZjYzA5
ZjVlZDBlZTI3MjM0ZWVlYjcxNTI2YWYyNjMzOWMzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjA0LDggKzIw
NCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycyBwYXJhbWV0ZXJzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBG
b3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKICAgICBTZWxlY3RB
bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGVhNTA3OGVkMThmNTUwNTJkZjJlNDI4
MTNlMmE2ZjcwODU1Y2U3Y2MuLjdhYTkwMWFjNDE1YmNjM2Q0OTQ5NjAxY2YwM2I0MzMxODE0ZjU5
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJM
LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5
IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dD
b250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNw
ZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3Ry
aW5nXSk7CisgICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5k
V2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNl
cHRpb24oeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJ
LnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddIH0pOwogICAgIH07
CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmls
ZV07CiAKLSAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZp
ZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5k
ZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKKyAgICBjb3Jl
KFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsgW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBc
IikiLCBbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXV0gfSk7CiB9CiAKIC8vIE1BUks6IC0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDc4Y2MzM2Vi
YTE1YTZlMGYxNjJhNjA5ZDM4YjJlN2NlMDg1YzNmMDguLjFmMTgzYTRkOWNmMTgzNmZlNTNkZjU3
OGY1NDZiZjMxNjVkMjk2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBmb3JjZVVzCiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICNlbmRp
ZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzdHJpbmcsIGZvcmNlVXNlckdlc3R1
cmUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBzdHJpbmcsIChib29sKWZvcmNl
VXNlckdlc3R1cmUgfSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNh
c2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICBy
ZXR1cm4gQCIiOwpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8K
ICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4g
d2ViRnJhbWUoa2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2Fu
IGRlc3Ryb3kgdGhlIGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKCpj
b3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oKmNvcmUod29ybGQpLCB7IHN0cmluZywgdHJ1ZSB9KTsKIAogICAgIGlmICghd2ViRnJhbWUt
Pl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBm
cmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDk2MWUwNWNmMWMyMjlkZTExMDQ2Yjdj
NGZiODM0ZjUzMzliYjgyMjUuLjZhZWI2ZmE0OGU0MjZmYzBlNTgxM2JhMGZjNGEzZDU5OTUzZThi
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTc5
MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURlc2NCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCwgdHJ1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KHsgc2NyaXB0LCB0cnVlIH0pOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBlcnJv
cnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhjb3JlRnJh
bWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQo
KSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385738</attachid>
            <date>2019-12-15 22:42:36 -0800</date>
            <delta_ts>2019-12-16 11:14:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191215224235.patch</filename>
            <type>text/plain</type>
            <size>57339</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLmZhNjNlZWZiMzk1
MTQ2NmJkMzVmNTAxMmE0NzBhOTQ5YTA2MjIyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjM5
LDkgKzIzOSwxMSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKyAgICBi
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
KyAgICBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKQEAgLTczOSw2ICs3NDEsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlSGFuZGxlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKICAgICBsb2FkZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaAogICAgIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODhiODAxNmExNzNhOGY5ZTM4MThkNzc5ZWU0Y2Ji
YjJjMGViZTgzYy4uZDY3ZDQ1OGE5MDQ0MTIwNTY1NjQxYjYxYzcyNjhhNDc1YmRiY2IzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTUyNCw2ICsxNTI0LDcgQEAKIAkJNTFBOUQ5RUExOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVw
YWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUE5RDlFODE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCAqLzsgfTsKIAkJ
NTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5
MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4
IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRl
clR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFCNDBEOEMyM0E1NDg5NTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0
MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI0NUQy
MTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8q
IENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4
MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lz
dHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI2MjgsNyArMjYyOSw3IEBACiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAv
KiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9
OwogCQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlE
MEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5
MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDkwN0UzMTI1QkJCQzgwMDdG
MjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRT
b3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyB9Owor
CQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzRGNzEzOTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzQjBE
NUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zODUzLDcgKzM4NTQsNyBAQAogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCMTZDMDcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
MTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNC
MTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFNjcmlwdC5oICovOyB9OworCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRY
U0xTdHlsZVNoZWV0LmggKi87IH07CiAJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
OTJENEYxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8q
IEZvbnRCYXNlbGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zODY3LDcgKzM4NjgsNyBAQAogCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcg
LyogRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDBFMEZC
MEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjgwRTk3MkMzNTAwMjY1REVBIC8qIFNl
Y3VyaXR5T3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEMEUwRkMwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjkw
RTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2
OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IH07CisJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2
OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2Rl
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5
QzJCRDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1Qzkw
QTIgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0RENDU0RTEyMzZD
OTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMx
OCw2ICs4MzE5LDcgQEAKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0cmF0
ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBRjUwMzUxNkYxMDBGNjAw
OTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQjQwRDhCMjNBNTQ4NTkwMEUw
NTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NUQxRTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVu
dEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUYx
QUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmF0aW9uU3RvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzM1LDYgKzI1MzM3LDcgQEAKIAkJCQkxNDMy
RTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi8sCiAJCQkJQzU4NUE2NjAx
MUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovLAogCQkJCUM1ODVB
NjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCisJCQkJNTFC
NDBEOEIyM0E1NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgg
Ki8sCiAJCQkJOUJENEU5MTQxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHAgKi8sCiAJCQkJOUJENEU5MTUxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5oICovLAogCQkJCTdDNTdCRkU2MUVERTJGNUIwMDUzNEE0OCAvKiBKU0RP
TUFic3RyYWN0T3BlcmF0aW9ucy5oICovLApAQCAtMzAzNzksNiArMzAzODIsNyBAQAogCQkJCUNE
NUZGNDlCMjE2MkU0QjcwMDRCRDg2RiAvKiBJU09TY2hlbWVUeXBlQm94LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDVGRjQ5NzIxNjJFMkI3MDA0QkQ4NkYgLyogSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTI0N0UzODFGRUE1Rjg2MDA4QzA4Q0UgLyogSXRlcmF0
aW9uQ29tcG9zaXRlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUI0MEQ4QzIzQTU0
ODk1MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMEQ5ODYxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRT
aWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2Ux
NTRhYmRjZWE3M2UzYzVhLi4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBA
IC0zMyw3ICszMyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVz
c2FnZTsKICAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsg
MCB9OwotICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzAyMGVkZTQ0OTY4MWU5NjRiMDI5MTY0NjEyNDljZDJmMTY3YmZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
bnVtIGNsYXNzIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeworICAgIE5vLAorICAgIFllcywKK307
CisKK3N0cnVjdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7CisgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlOworICAgIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdp
dGhVc2VyR2VzdHVyZSB7IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH07CisKKyAgICBKYXZh
U2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSkKKyAgICAgICAg
OiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKKyAgICAgICAgOiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVz
ZXJHZXN0dXJlKGZvcmNlVXNlckdlc3R1cmUgPyBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpZZXMg
OiBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMoU2NyaXB0U291cmNlQ29kZSYmIGlucHV0U291cmNlQ29k
ZSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0gRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShXVEZNb3ZlKGlucHV0
U291cmNlQ29kZSkpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0
aFVzZXJHZXN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycyhjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVX
aXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmU6Ok5vKQorICAgICAgICA6IHNvdXJjZUNvZGUoaW5wdXRTb3VyY2VDb2RlKQorICAgICAg
ICAsIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlQ29k
ZSA8PCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
U2NyaXB0U291cmNlQ29kZT4gc291cmNlQ29kZSA9IFNjcmlwdFNvdXJjZUNvZGU6OmRlY29kZTxE
ZWNvZGVyPihkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4
ZWN1dGVXaXRoVXNlckdlc3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7IFdURk1vdmUoKnNv
dXJjZUNvZGUpLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlIH07CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZSwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8sCisgICAg
ICAgIFdlYkNvcmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcworICAgID47Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCA4ZTRjN2IzODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmLi4xOWUzNGIxZTIzNGY0
YzQ5YTRhMzRhNGUzNTgxNzk4M2VlNTUxY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNjaGVk
dWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1fZnVuY3Rp
b24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRvdy0+cHJv
eHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUp
OworICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKG1faXNvbGF0ZWRXb3Js
ZCwgeyB7IG1fY29kZSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9LCBbXSAoVmFsdWVP
ckV4Y2VwdGlvbikgeyB9KTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1ZjViYWEyMDYzODM1OGMwYmI4
MmIzN2JjZWEyNmNhZDk4ZWY2NGFhLi41NDkxYmUxM2I2MjM3YWUzOTZhMjNhMTVlNmQ0MjZmYzcy
MWNlMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtNTYsOCArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3Qu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRp
YWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTTG9jay5oPgpAQCAtNjgsNiArNzAsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAt
MTA5LDE1ICsxMTIsMzkgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQog
CiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VD
b2RlLCB3b3JsZCk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gSmF2YVNjcmlwdEV4ZWN1dGlvblBh
cmFtZXRlcnMgeyBzb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9OworCisg
ICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAg
ICBldmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShWYWx1ZU9yRXhjZXB0aW9u
IGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IGlubmVyUmVzdWx0OworICAgICAgICBj
YWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIEFTU0VSVChjYWxsZWQpOworCiAgICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVP
ckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKwordm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVG
dW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKIHsKKyAgICBBU1NFUlQocmVzb2x2ZUZ1bmN0aW9u
KTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVy
cy5leGVjdXRlV2l0aFVzZXJHZXN0dXJlID09IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcyA/
IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogV1RGOjpudWxsb3B0KTsKKworICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRU
b0V4ZWN1dGVTY3JpcHQpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3Rl
ZChFeGNlcHRpb25EZXRhaWxzIHsgIlNjcmlwdCBleGVjdXRpb24gaXMgY3VycmVudGx5IGRpc2Fi
bGVkIl9zIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpc1BhdXNlZCgp
KSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRh
aWxzIHsgIlNjcmlwdCBleGVjdXRpb24gaXMgY3VycmVudGx5IHBhdXNlZCJfcyB9KSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsK
IAotICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3Vy
Y2VDb2RlKCk7CisgICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gcGFyYW1ldGVy
cy5zb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1Nv
dXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CiAKICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1
cm5zIHRoZSBKUyByZXR1cm4gdmFsdWUgb3IgMApAQCAtMTM0LDcgKzE2MSw3IEBAIFZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjCiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKIAot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUs
IHNvdXJjZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVt
bigpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdCht
X2ZyYW1lLCBzb3VyY2VVUkwsIHBhcmFtZXRlcnMuc291cmNlQ29kZS5zdGFydExpbmUoKSwgcGFy
YW1ldGVycy5zb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9
IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmls
aW5nUmVhc29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNlcHRp
b24pOwpAQCAtMTQ0LDE1ICsxNzEsMTYgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmMKICAgICBP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CiAgICAgaWYgKGV2YWx1
YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOwotICAg
ICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwg
c291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICByZXBvcnRFeGNl
cHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcGFyYW1ldGVycy5zb3Vy
Y2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CiAgICAgICAgIG9wdGlvbmFsRGV0YWls
cyA9IFdURk1vdmUoZGV0YWlscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNv
dXJjZVVSTDsKLSAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscyk7CiAKLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cisg
ICAgaWYgKG9wdGlvbmFsRGV0YWlscykKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKG1ha2VVbmV4
cGVjdGVkKCpvcHRpb25hbERldGFpbHMpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc29sdmVGdW5j
dGlvbihyZXR1cm5WYWx1ZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUpCkBAIC01NTgsNDIgKzU4Niw0NyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2Ny
aXB0T2JqZWN0cygpCiAjZW5kaWYKIH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgcGFyYW1ldGVycyk7CiB9CiAKLUpTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBK
YXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUpOworICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7CisgICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1
bHQ7CisgICAgZXZhbHVhdGVJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVPckV4
Y2VwdGlvbiBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBpbm5lclJlc3VsdDsKKyAg
ICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICBBU1NFUlQoY2FsbGVkKTsKKwogICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAK
LVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKK0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAg
IFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/
IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2Ny
aXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6
Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7Ci0KLSAgICAvLyBGSVhNRTog
SW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1wdHkgSlNWYWx1ZSwgc2hvdWxkIHJldHVybiBhbiBF
eGNlcHRpb25EZXRhaWxzLgotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1
dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1
cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKTsKLX0KKyAgICBib29sIGNhbGxl
ZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVPckV4Y2VwdGlv
biBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGlubmVyUmVzdWx0KTsK
KyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIEFTU0VSVChjYWxs
ZWQpOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7
IH07CiB9Ci1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3Qg
SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlv
biYmIHJlc29sdmVGdW5jdGlvbikKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRv
Y3VtZW50KCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQp
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFi
bGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0
eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2Vu
dFNjcmlwdHMoZG9jdW1lbnQpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBl
Y3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRz
IGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRV
c2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxk
LCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwg
cGFyYW1ldGVycywgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50
KSBjb25zdApAQCAtNjQxLDcgKzY3NCw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtCiAgICAg
Y29uc3QgaW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6Iikg
LSAxOwogCiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
dXJsLnN0cmluZygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4
Y2VwdGlvbihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGRlY29k
ZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpIH0sIEV4ZWN1dGVXaXRoVXNl
ckdlc3R1cmU6Ok5vIH0pOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhp
cyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2Fu
dCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1OGMwMWEwMTcwODM1MjM5
YmFhZjU5NTYzMzkwY2Y0YS4uNzkyMWJlMGRkOTRjMWIyYjI4ODdmZWM3NmI3ZmJjOGYzZDc1ZjJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApA
QCAtMjMsNiArMjMsOCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1
ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldp
bmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC05MCwxMSArOTIsMTUgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxk
Pj4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpOworICAgIHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVuY3Rp
b248dm9pZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRFeGVj
dXRpb25QYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxk
JiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVzb2x2ZUZ1bmN0aW9uJiYp
OworICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJik7
CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0
U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAg
dm9pZCBldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4
ZWN1dGlvblBhcmFtZXRlcnMmLCBSZXNvbHZlRnVuY3Rpb24mJik7CiAKICAgICBib29sIHNob3Vs
ZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAgKzEx
MSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiBy
ZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAg
ICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1
ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9N
V3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRh
YmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVT
Y3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJl
ZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdElu
V29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9N
V3JhcHBlcldvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3Vy
Y2VDb2RlLmgKaW5kZXggZmNhNTc0Y2ZkYWFjNDliYWRmNGQ4MjlmMTkyMDAyMTExNDM3MTk4Yi4u
NTgxZDg2ZGZjM2NkMzBmOGY0OTc1MGViOWM2NTY0MDIyMTk1YWFlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtNjMsNiArNjMsMjEgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIG90aGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIob3RoZXIubV9wcm92aWRl
ci5jb3B5UmVmKCkpCisgICAgICAgICwgbV9jb2RlKG90aGVyLm1fY29kZSkKKyAgICAgICAgLCBt
X2NhY2hlZFNjcmlwdChvdGhlci5tX2NhY2hlZFNjcmlwdCkKKyAgICB7CisgICAgfQorCisgICAg
U2NyaXB0U291cmNlQ29kZSYgb3BlcmF0b3I9KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIG90aGVy
KQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlciA9IG90aGVyLm1fcHJvdmlkZXIuY29weVJlZigp
OworICAgICAgICBtX2NvZGUgPSBvdGhlci5tX2NvZGU7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0
ID0gb3RoZXIubV9jYWNoZWRTY3JpcHQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvZGUubGVuZ3RoKCkgPT0gMDsg
fQogCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGU7IH0KQEAgLTc1LDcgKzkwLDM3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgpOyB9
CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXItPnVybCgp
OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UoKS50b1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCkgPDwgdXJsKCkgPDwgc3RhcnRMaW5lKCkgPDwgc3RhcnRDb2x1
bW4oKSA8PCBtX3Byb3ZpZGVyLT5zb3VyY2VUeXBlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBVUkwgdXJsOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHVybCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGludCBz
dGFydExpbmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRMaW5lKSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaW50IHN0YXJ0Q29sdW1uOwor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0Q29sdW1uKSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5
cGUgc291cmNlVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc291cmNlVHlw
ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgICAgICByZXR1
cm4gU2NyaXB0U291cmNlQ29kZSB7IHNvdXJjZSwgV1RGTW92ZSh1cmwpLCBUZXh0UG9zaXRpb24g
eyBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRMaW5lKSwgT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0Q29sdW1uKSB9LCBzb3VyY2VUeXBlIH07CisgICAgfQor
CiBwcml2YXRlOgogICAgIFJlZjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAg
IEpTQzo6U291cmNlQ29kZSBtX2NvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMGQ4MzE5MjUy
NzgyZGE5NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MS4uMTRkMjVhODVhNTY2OTUwMzZmZTU1NzFl
NjI4OWMxYTZlMjFhYmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZGlzcGF0Y2hNZXNzYWdlQXN5bmMo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlT2JqCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OmV2YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKICAgICBh
dXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJh
bWUoKSk7Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGV4cHJlc3Npb24gfSwg
RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSkudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAidHJ1
ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxv
YWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCmluZGV4IDZlYWZjYTM0ZTgxYTM5OTJkZDFmYjgwZjkwMzJlYjk2YzhiOWI3NzYu
LjA0Mjc4NjVhMGRjZTdhMWFlZTk1YzM3MjVkMDc0NjRjZmJiNGE1YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRl
bnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSkgewogICAgICAgICB1bmJsb2NrSGFuZGxl
ci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFrUHRy
KGZyYW1lLT5zY3JpcHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlz
b2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2Nr
ZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVy
LT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKKyAgICAgICAgICAgICAg
ICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IHNj
cmlwdCB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKICAgICAgICAgfSk7CiAgICAg
fQogICAgIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAw
ODI4NDQ0MWM1NmZhZGJmLi5jY2I1ZjQ3ZGZjNGQ4ZDBlNTk1YjU2ODIxNzJlZjliNWZhMDkzODhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyAr
MjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBX
S1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9p
ZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAg
IHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRS
ZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5y
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIHRy
dWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0
dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwg
KGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6
Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhYjg5NzgwZTJlZTM2
ZWZjZjNiYjFiMjUyNGIzNWQ0NGZjNmUxZTYxLi40YzdhMDQ1ZDhmNjc4MzYwMDE4NTgwMzFjMDc1
NWYxMzg5NDc2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wp
CiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0p
OwogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5n
LCBmb3JjZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUp
IHsKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0cmlu
ZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBl
cnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ODBiZmI5ZTY5
MDc4ZmYwNGFkNWM2ZTdkODU4ZTQ4ZjFmNDQ5ODY2Li5lOGQzNjk0MjVkODNkMDJlN2QzMGFhMDg4
ODY5M2VkYjljNTRiYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTM4NDUsMTIgKzM4NDUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRp
YWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vz
c0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdURk1vdmUocGFy
YW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25h
bDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGlu
IGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2MSwxNCArMzg2MSwxNSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwg
d29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMs
IHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NF
UlQobWFpbkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdEluRnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2Ny
aXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFt
ZUlELCB7IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDAyNzRkN2NlMmY0MzY4MTU0Y2NiNjc5MjVjZDBmOWRhNDNjMjljZDUuLmE0ZDAzZTFiNDc0NjRk
MmJiMWQxYzhjNzFiYTM3ZmYwZDJkNmVlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4gLy8gRklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBvd24gZmls
ZSBhbmQgc3RvcCBpbmNsdWRpbmcgdGhpcy4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1l
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTGF5b3V0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC0xMDYxLDggKzEw
NjIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJh
bWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKwogICAgIC8v
IEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxs
YmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1Yzg1ZmMxNTQ5NGUxYjIyMzE1NmEzNTRjYWE5ZDJiMmY2ZTg5YjlkLi5hNzBl
MWUzYTY2ZjVhNDEyYjlkZmZmM2I2NmYwYjU2MzA5NzZiNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjUsNiArMzUyNSw4IEBA
CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9u
U3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rp
b25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDRjEwMTJC
MDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRpYWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MThCNTA1ODIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5KYXZhU2NyaXB0
QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTkyMzg2
MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
RDJDQUMxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThFOEVGMzE2QjIwOTFDMDBFOTE0MjkgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NTM3LDYgKzU1MzksOCBAQAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBS
VENOZXR3b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1BhY2tl
dE9wdGlvbnMuY3BwICovLAogCQkJCTQxQjI4QjA4MUY4M0FEM0UwMEZCNTJBQyAvKiBSVENQYWNr
ZXRPcHRpb25zLmggKi8sCisJCQkJNTE4QjUwNTgyMzg2MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFT
Y3JpcHRBcmd1bWVudHMuY3BwICovLAorCQkJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAvKiBS
dW5KYXZhU2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEz
IC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2RjBB
MjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQlFMUU1NTJDMzE2QUUwNjVF
MDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAzZWEw
MDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwLi43YzVjY2E3MWI4NmFkNDlhZjg2
OGQzMWNmNTI0ZTMyM2M2ZWZhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAg
ICAvLyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZh
U2NyaXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3
ZQogICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0
cjxQbHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+
YWxsb3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsganNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBz
KCkgfSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2NDQ1YWE1YTcyNTZkNmJh
ODdkNzM2ZjI2YmFkYzcxYTk4MDhlNGQwLi5kOGZlNTI1ZTg4MWMyZTY2YmRmZmE2YzZjZTc4YTVl
ZmIxOWIwZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzM1Miw0NSArMzM1Miw0NiBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXli
b2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNj
ZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6
IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9u
YWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhl
Y3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdv
cmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQg
dG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRl
cGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4K
IAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRp
b24gcmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVG
cmFtZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+
c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgp
LCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAgIHRv
UmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3Jl
V29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIHsgeyAiVW5h
YmxlIHRvIGRldGVybWluZSBjb250ZXh0IGZvciBleGVjdXRpbmcgc2NyaXB0Il9zIH0gfSwgY2Fs
bGJhY2tJRCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAg
ICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgIGF1
dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhp
cywgcHJvdGVjdGVkV29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIHdvcmxkLCBwcm90ZWN0ZWRGcmFt
ZSA9IG1ha2VSZWYoKmZyYW1lKSwgZnJhbWUsIGNhbGxiYWNrSURdIChWYWx1ZU9yRXhjZXB0aW9u
IHJlc3VsdCkgeworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ugc2VyaWFsaXplZFJlc3VsdERh
dGFSZWZlcmVuY2U7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsK
KyAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpKSB7CisgICAgICAgICAgICBhdXRvIHNlcmlhbGl6
ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0Nv
bnRleHRGb3JXb3JsZCh3b3JsZCksIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCku
Z2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0
cik7CisgICAgICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQorICAgICAgICAgICAg
ICAgIHNlcmlhbGl6ZWRSZXN1bHREYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVl
LT5kYXRhKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uRGV0
YWlscyA9IHsgIkVycm9yIHNlcmlhbGl6aW5nIHJlc3VsdCBvZiBleGVjdXRpbmcgSmF2YVNjcmlw
dCJfcyB9OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSBy
ZXN1bHQuZXJyb3IoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7
Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHNl
cmlhbGl6ZWRSZXN1bHREYXRhUmVmZXJlbmNlLCBleGNlcHRpb25EZXRhaWxzLCBjYWxsYmFja0lE
KSk7CisgICAgfTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFs
dWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3Jp
cHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJh
bWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwor
ICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdv
cmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdElu
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6Okph
dmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7
Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6
Om51bGxvcHQsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIFdURk1vdmUo
cGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTVkYjRiODlkNmM4YTdiODJk
MWRkZjZiNjc0NTQ0MDU1NjJmMTg4OC4uZTFkM2QwNWY1NDY1MzhmMGEwMzJkNmZmNGZkNmUyNThj
YjY0ODhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTk1LDYgKzE5NSw3IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dDsKIHN0cnVjdCBHbG9iYWxG
cmFtZUlkZW50aWZpZXI7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBI
aWdobGlnaHQ7CitzdHJ1Y3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3Qg
S2V5cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CiBzdHJ1Y3Qg
VGV4dENoZWNraW5nUmVzdWx0OwpAQCAtMTQzNCw5ICsxNDM1LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBD
YWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBjb25zdCBTdHJp
bmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiwgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwgY29uc3Qg
T3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNu
YXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJp
dG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5
OWIzMmZlZjc4NDlhMGQ1ZjhiM2I1M2Y2ZDQyNTBmZjU0MTUwNTAxLi4wYWU2Y2MwOWY1ZWQwZWUy
NzIzNGVlZWI3MTUyNmFmMjYzMzljMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIwNCw4ICsyMDQsOCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChzdHJ1Y3QgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMgcGFyYW1l
dGVycywgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVycywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRm9yY2VSZXBh
aW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgU2VsZWN0QWxsKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQppbmRleCBlYTUwNzhlZDE4ZjU1MDUyZGYyZTQyODEzZTJhNmY3
MDg1NWNlN2NjLi43YWE5MDFhYzQxNWJjYzNkNDk0OTYwMWNmMDNiNDMzMTgxNGY1OTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3Qg
U3RyaW5nJgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRv
VVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
ZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxl
ciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJv
bnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwor
ICAgICAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXdd
KS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsg
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVS
TChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSB9KTsKICAgICB9OwogCiAgICAg
aWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNv
bnN0IFN0cmluZwogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0g
ICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1h
aW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwo
XCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CisgICAgY29yZShbbV9mcm9u
dGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2Fj
dHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dIH0pOwogfQogCiAvLyBNQVJLOiAtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA3OGNjMzNlYmExNWE2ZTBm
MTYyYTYwOWQzOGIyZTdjZTA4NWMzZjA4Li4xZjE4M2E0ZDljZjE4MzZmZTUzZGY1NzhmNTQ2YmYz
MTY1ZDI5NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTcwMCw3ICs3MDAsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZm9yY2VVcwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGpzY0xvY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAjZW5kaWYKIAotICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsgc3RyaW5nLCAoYm9vbClmb3JjZVVzZXJHZXN0
dXJlIH0pOwogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBz
Y3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAi
IjsKQEAgLTIwOTYsNyArMjA5Niw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoR2xvCiAgICAgQVNT
RVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IHdlYkZyYW1l
KGtpdChmcmFtZSkpOyAvLyBSdW5uaW5nIGFyYml0cmFyeSBKYXZhU2NyaXB0IGNhbiBkZXN0cm95
IHRoZSBmcmFtZS4KIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigqY29yZSh3b3Js
ZCksIHN0cmluZywgdHJ1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKCpjb3Jl
KHdvcmxkKSwgeyBzdHJpbmcsIHRydWUgfSk7CiAKICAgICBpZiAoIXdlYkZyYW1lLT5fcHJpdmF0
ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJv
bSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5NjFlMDVjZjFjMjI5ZGUxMTA0NmI3YzRmYjgzNGY1
MzM5YmI4MjI1Li42YWViNmZhNDhlNDI2ZmMwZTU4MTNiYTBmYzRhM2Q1OTk1M2U4YjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC03OTA4LDcgKzc5
MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopYWVEZXNjQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopcwogICAgICAgICByZXR1cm4gbmlsOwogICAg
IGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbihzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBj
b3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IHNjcmlw
dCwgdHJ1ZSB9KTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3JzCiAgICAg
ICAgIHJldHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5zY3Jp
cHQoKS5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385789</attachid>
            <date>2019-12-16 11:15:01 -0800</date>
            <delta_ts>2019-12-16 12:47:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191216111500.patch</filename>
            <type>text/plain</type>
            <size>57057</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLmZhNjNlZWZiMzk1
MTQ2NmJkMzVmNTAxMmE0NzBhOTQ5YTA2MjIyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjM5
LDkgKzIzOSwxMSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKyAgICBi
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
KyAgICBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKQEAgLTczOSw2ICs3NDEsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlSGFuZGxlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKICAgICBsb2FkZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaAogICAgIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODhiODAxNmExNzNhOGY5ZTM4MThkNzc5ZWU0Y2Ji
YjJjMGViZTgzYy4uZDY3ZDQ1OGE5MDQ0MTIwNTY1NjQxYjYxYzcyNjhhNDc1YmRiY2IzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTUyNCw2ICsxNTI0LDcgQEAKIAkJNTFBOUQ5RUExOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVw
YWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUE5RDlFODE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCAqLzsgfTsKIAkJ
NTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5
MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4
IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRl
clR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFCNDBEOEMyM0E1NDg5NTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0
MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI0NUQy
MTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8q
IENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4
MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lz
dHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI2MjgsNyArMjYyOSw3IEBACiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAv
KiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9
OwogCQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlE
MEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5
MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDkwN0UzMTI1QkJCQzgwMDdG
MjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRT
b3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyB9Owor
CQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzRGNzEzOTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzQjBE
NUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zODUzLDcgKzM4NTQsNyBAQAogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCMTZDMDcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
MTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNC
MTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFNjcmlwdC5oICovOyB9OworCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRY
U0xTdHlsZVNoZWV0LmggKi87IH07CiAJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
OTJENEYxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8q
IEZvbnRCYXNlbGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zODY3LDcgKzM4NjgsNyBAQAogCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcg
LyogRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDBFMEZC
MEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjgwRTk3MkMzNTAwMjY1REVBIC8qIFNl
Y3VyaXR5T3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEMEUwRkMwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjkw
RTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2
OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IH07CisJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2
OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2Rl
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5
QzJCRDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1Qzkw
QTIgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0RENDU0RTEyMzZD
OTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMx
OCw2ICs4MzE5LDcgQEAKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0cmF0
ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBRjUwMzUxNkYxMDBGNjAw
OTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQjQwRDhCMjNBNTQ4NTkwMEUw
NTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NUQxRTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVu
dEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUYx
QUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmF0aW9uU3RvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzM1LDYgKzI1MzM3LDcgQEAKIAkJCQkxNDMy
RTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi8sCiAJCQkJQzU4NUE2NjAx
MUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovLAogCQkJCUM1ODVB
NjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCisJCQkJNTFC
NDBEOEIyM0E1NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgg
Ki8sCiAJCQkJOUJENEU5MTQxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHAgKi8sCiAJCQkJOUJENEU5MTUxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5oICovLAogCQkJCTdDNTdCRkU2MUVERTJGNUIwMDUzNEE0OCAvKiBKU0RP
TUFic3RyYWN0T3BlcmF0aW9ucy5oICovLApAQCAtMzAzNzksNiArMzAzODIsNyBAQAogCQkJCUNE
NUZGNDlCMjE2MkU0QjcwMDRCRDg2RiAvKiBJU09TY2hlbWVUeXBlQm94LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDVGRjQ5NzIxNjJFMkI3MDA0QkQ4NkYgLyogSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTI0N0UzODFGRUE1Rjg2MDA4QzA4Q0UgLyogSXRlcmF0
aW9uQ29tcG9zaXRlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUI0MEQ4QzIzQTU0
ODk1MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMEQ5ODYxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRT
aWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2Ux
NTRhYmRjZWE3M2UzYzVhLi4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBA
IC0zMyw3ICszMyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVz
c2FnZTsKICAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsg
MCB9OwotICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzAyMGVkZTQ0OTY4MWU5NjRiMDI5MTY0NjEyNDljZDJmMTY3YmZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
bnVtIGNsYXNzIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeworICAgIE5vLAorICAgIFllcywKK307
CisKK3N0cnVjdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7CisgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlOworICAgIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdp
dGhVc2VyR2VzdHVyZSB7IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH07CisKKyAgICBKYXZh
U2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSkKKyAgICAgICAg
OiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKKyAgICAgICAgOiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVz
ZXJHZXN0dXJlKGZvcmNlVXNlckdlc3R1cmUgPyBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpZZXMg
OiBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMoU2NyaXB0U291cmNlQ29kZSYmIGlucHV0U291cmNlQ29k
ZSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0gRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShXVEZNb3ZlKGlucHV0
U291cmNlQ29kZSkpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0
aFVzZXJHZXN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycyhjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVX
aXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmU6Ok5vKQorICAgICAgICA6IHNvdXJjZUNvZGUoaW5wdXRTb3VyY2VDb2RlKQorICAgICAg
ICAsIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlQ29k
ZSA8PCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
U2NyaXB0U291cmNlQ29kZT4gc291cmNlQ29kZSA9IFNjcmlwdFNvdXJjZUNvZGU6OmRlY29kZTxE
ZWNvZGVyPihkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4
ZWN1dGVXaXRoVXNlckdlc3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7IFdURk1vdmUoKnNv
dXJjZUNvZGUpLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlIH07CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZSwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8sCisgICAg
ICAgIFdlYkNvcmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcworICAgID47Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCA4ZTRjN2IzODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmLi4xOWUzNGIxZTIzNGY0
YzQ5YTRhMzRhNGUzNTgxNzk4M2VlNTUxY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNjaGVk
dWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1fZnVuY3Rp
b24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRvdy0+cHJv
eHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUp
OworICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKG1faXNvbGF0ZWRXb3Js
ZCwgeyB7IG1fY29kZSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9LCBbXSAoVmFsdWVP
ckV4Y2VwdGlvbikgeyB9KTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1ZjViYWEyMDYzODM1OGMwYmI4
MmIzN2JjZWEyNmNhZDk4ZWY2NGFhLi42MWE3NDEwNjI2ODk3N2Y4ZTc0N2RmNTI0ZjY5MWJlNTVj
MTY1MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtNTYsOCArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3Qu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRp
YWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTTG9jay5oPgpAQCAtNjgsNiArNzAsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAt
MTA5LDE1ICsxMTIsMjkgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQog
CiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VD
b2RlLCB3b3JsZCk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gSmF2YVNjcmlwdEV4ZWN1dGlvblBh
cmFtZXRlcnMgeyBzb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9OworCisg
ICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAg
ICBldmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShWYWx1ZU9yRXhjZXB0aW9u
IGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IGlubmVyUmVzdWx0OworICAgICAgICBj
YWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIEFTU0VSVChjYWxsZWQpOworCiAgICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVP
ckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKwordm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVG
dW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKIHsKKyAgICBBU1NFUlQocmVzb2x2ZUZ1bmN0aW9u
KTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVy
cy5leGVjdXRlV2l0aFVzZXJHZXN0dXJlID09IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcyA/
IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogV1RGOjpudWxsb3B0KTsKKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkp
OwogCi0gICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1Nv
dXJjZUNvZGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBwYXJhbWV0
ZXJzLnNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpz
U291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIC8vIGV2YWx1YXRlIGNvZGUuIFJl
dHVybnMgdGhlIEpTIHJldHVybiB2YWx1ZSBvciAwCkBAIC0xMzQsNyArMTUxLDcgQEAgVmFsdWVP
ckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmMKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFt
ZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29s
dW1uKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0
KG1fZnJhbWUsIHNvdXJjZVVSTCwgcGFyYW1ldGVycy5zb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBw
YXJhbWV0ZXJzLnNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVl
ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9m
aWxpbmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbik7CkBAIC0xNDQsMTUgKzE2MSwxNiBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyYwogICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZh
bHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFpbHM7Ci0g
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9u
LCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBwYXJhbWV0ZXJzLnNv
dXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKICAgICAgICAgb3B0aW9uYWxEZXRh
aWxzID0gV1RGTW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVk
U291cmNlVVJMOwotICAgIGlmIChvcHRpb25hbERldGFpbHMpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVu
ZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscykpOworICAgIGVsc2UKKyAgICAgICAgcmVzb2x2ZUZ1
bmN0aW9uKHJldHVyblZhbHVlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSkKQEAgLTU1OCw0MiArNTc2LDUwIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJT
Y3JpcHRPYmplY3RzKCkKICNlbmRpZgogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUpCi17Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxk
SWdub3JpbmdFeGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VV
c2VyR2VzdHVyZSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEph
dmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsg
fTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgcGFyYW1ldGVycyk7CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24g
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1
cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgp
LT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+
Y2hhcnNldCgpKSk7Ci0KLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1w
dHkgSlNWYWx1ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRpb25EZXRhaWxzLgogICAgIGlmICgh
Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNv
ZGUsIHdvcmxkKTsKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRp
b24gcmVzdWx0OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVycywgWyZdKFZh
bHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5uZXJSZXN1
bHQ7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgQVNTRVJUKGNhbGxlZCk7
CisKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9
OwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBi
b29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVP
ckV4Y2VwdGlvbiBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGlubmVy
UmVzdWx0KTsKKyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIEFTU0VSVChj
YWxsZWQpOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1
ZSB7IH07CiB9Ci1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5j
dGlvbiYmIHJlc29sdmVGdW5jdGlvbikKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1l
LmRvY3VtZW50KCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1l
bnQpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJV
bmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1
cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoZG9jdW1lbnQpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5l
eHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3Jp
cHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0
ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdv
cmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3Js
ZCwgcGFyYW1ldGVycywgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3Vt
ZW50KSBjb25zdApAQCAtNjQxLDcgKzY2Nyw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtCiAg
ICAgY29uc3QgaW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6
IikgLSAxOwogCiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXModXJsLnN0cmluZygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7
CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGRl
Y29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpIH0sIEV4ZWN1dGVXaXRo
VXNlckdlc3R1cmU6Ok5vIH0pOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQg
dGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qg
d2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1OGMwMWEwMTcwODM1
MjM5YmFhZjU5NTYzMzkwY2Y0YS4uNzkyMWJlMGRkOTRjMWIyYjI4ODdmZWM3NmI3ZmJjOGYzZDc1
ZjJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aApAQCAtMjMsNiArMjMsOCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2lu
Y2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC05MCwxMSArOTIsMTUgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldv
cmxkPj4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSA9IGZhbHNlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0
ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUpOworICAgIHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVu
Y3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6
OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRF
eGVjdXRpb25QYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldv
cmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVzb2x2ZUZ1bmN0aW9u
JiYpOworICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
Jik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Cisg
ICAgdm9pZCBldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMmLCBSZXNvbHZlRnVuY3Rpb24mJik7CiAKICAgICBib29sIHNo
b3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAg
KzExMSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZl
biByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
LSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBW
YWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExv
YWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxl
RmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUs
IFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlw
dEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
b3VyY2VDb2RlLmgKaW5kZXggZmNhNTc0Y2ZkYWFjNDliYWRmNGQ4MjlmMTkyMDAyMTExNDM3MTk4
Yi4uNTgxZDg2ZGZjM2NkMzBmOGY0OTc1MGViOWM2NTY0MDIyMTk1YWFlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtNjMsNiArNjMsMjEg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIG90aGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIob3RoZXIubV9wcm92
aWRlci5jb3B5UmVmKCkpCisgICAgICAgICwgbV9jb2RlKG90aGVyLm1fY29kZSkKKyAgICAgICAg
LCBtX2NhY2hlZFNjcmlwdChvdGhlci5tX2NhY2hlZFNjcmlwdCkKKyAgICB7CisgICAgfQorCisg
ICAgU2NyaXB0U291cmNlQ29kZSYgb3BlcmF0b3I9KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIG90
aGVyKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlciA9IG90aGVyLm1fcHJvdmlkZXIuY29weVJl
ZigpOworICAgICAgICBtX2NvZGUgPSBvdGhlci5tX2NvZGU7CisgICAgICAgIG1fY2FjaGVkU2Ny
aXB0ID0gb3RoZXIubV9jYWNoZWRTY3JpcHQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvZGUubGVuZ3RoKCkgPT0g
MDsgfQogCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7
IHJldHVybiBtX2NvZGU7IH0KQEAgLTc1LDcgKzkwLDM3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRT
Y3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgp
OyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXItPnVy
bCgpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UoKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgPDwgdXJsKCkgPDwgc3RhcnRMaW5lKCkgPDwgc3RhcnRD
b2x1bW4oKSA8PCBtX3Byb3ZpZGVyLT5zb3VyY2VUeXBlKCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBVUkwgdXJsOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlu
dCBzdGFydExpbmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRMaW5lKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaW50IHN0YXJ0Q29sdW1u
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0Q29sdW1uKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGUgc291cmNlVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc291cmNl
VHlwZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgICAgICBy
ZXR1cm4gU2NyaXB0U291cmNlQ29kZSB7IHNvdXJjZSwgV1RGTW92ZSh1cmwpLCBUZXh0UG9zaXRp
b24geyBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRMaW5lKSwgT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0Q29sdW1uKSB9LCBzb3VyY2VUeXBlIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFJlZjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwog
ICAgIEpTQzo6U291cmNlQ29kZSBtX2NvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMGQ4MzE5
MjUyNzgyZGE5NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MS4uMTRkMjVhODVhNTY2OTUwMzZmZTU1
NzFlNjI4OWMxYTZlMjFhYmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDIwLDcgKzQyMCw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZGlzcGF0Y2hNZXNzYWdlQXN5
bmMoY29uc3QgU3RyaW5nJiBtZXNzYWdlT2JqCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKICAg
ICBhdXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWlu
RnJhbWUoKSk7Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmco
JnN0YXRlKSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGV4cHJlc3Npb24g
fSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSkudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVP
bkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCmluZGV4IDZlYWZjYTM0ZTgxYTM5OTJkZDFmYjgwZjkwMzJlYjk2YzhiOWI3
NzYuLjA0Mjc4NjVhMGRjZTdhMWFlZTk1YzM3MjVkMDc0NjRjZmJiNGE1YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENv
bnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSkgewogICAgICAgICB1bmJsb2NrSGFu
ZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFr
UHRyKGZyYW1lLT5zY3JpcHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJs
b2NrZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9s
bGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKKyAgICAgICAgICAg
ICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7
IHNjcmlwdCB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKICAgICAgICAgfSk7CiAg
ICAgfQogICAgIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJl
NDAwODI4NDQ0MWM1NmZhZGJmLi5jY2I1ZjQ3ZGZjNGQ4ZDBlNTk1YjU2ODIxNzJlZjliNWZhMDkz
ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIs
NyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdl
LCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwg
dm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewot
ICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3Jp
cHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCks
IHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
cmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVl
KSwgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJv
cjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhYjg5NzgwZTJl
ZTM2ZWZjZjNiYjFiMjUyNGIzNWQ0NGZjNmUxZTYxLi40YzdhMDQ1ZDhmNjc4MzYwMDE4NTgwMzFj
MDc1NWYxMzg5NDc2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJP
T0wpCiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pOwogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3Ry
aW5nLCBmb3JjZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNv
ZGUpIHsKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0
cmluZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJv
ciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ODBiZmI5
ZTY5MDc4ZmYwNGFkNWM2ZTdkODU4ZTQ4ZjFmNDQ5ODY2Li5lOGQzNjk0MjVkODNkMDJlN2QzMGFh
MDg4ODY5M2VkYjljNTRiYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTM4NDUsMTIgKzM4NDUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJv
Y2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdURk1vdmUo
cGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0
IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1
bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2MSwxNCArMzg2MSwxNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRl
cnMsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQobWFpbkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNr
SUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShm
cmFtZUlELCB7IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDAyNzRkN2NlMmY0MzY4MTU0Y2NiNjc5MjVjZDBmOWRhNDNjMjljZDUuLmE0ZDAzZTFiNDc0
NjRkMmJiMWQxYzhjNzFiYTM3ZmYwZDJkNmVlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZp
ZXcuaD4gLy8gRklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBvd24g
ZmlsZSBhbmQgc3RvcCBpbmNsdWRpbmcgdGhpcy4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZy
YW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTGF5b3V0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC0xMDYxLDgg
KzEwNjIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKwogICAg
IC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRD
YWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1Yzg1ZmMxNTQ5NGUxYjIyMzE1NmEzNTRjYWE5ZDJiMmY2ZTg5YjlkLi5h
NzBlMWUzYTY2ZjVhNDEyYjlkZmZmM2I2NmYwYjU2MzA5NzZiNGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjUsNiArMzUyNSw4
IEBACiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0
aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDRjEw
MTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRpYWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MThCNTA1ODIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3Vt
ZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5KYXZhU2Ny
aXB0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTky
Mzg2MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE4RDJDQUMxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThFOEVGMzE2QjIwOTFDMDBFOTE0MjkgLyog
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NTM3LDYgKzU1MzksOCBAQAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAv
KiBSVENOZXR3b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1Bh
Y2tldE9wdGlvbnMuY3BwICovLAogCQkJCTQxQjI4QjA4MUY4M0FEM0UwMEZCNTJBQyAvKiBSVENQ
YWNrZXRPcHRpb25zLmggKi8sCisJCQkJNTE4QjUwNTgyMzg2MDEwRjAwODA4NEMzIC8qIFJ1bkph
dmFTY3JpcHRBcmd1bWVudHMuY3BwICovLAorCQkJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAv
KiBSdW5KYXZhU2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTcz
MkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2
RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQlFMUU1NTJDMzE2QUUw
NjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAz
ZWEwMDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwLi43YzVjY2E3MWI4NmFkNDlh
Zjg2OGQzMWNmNTI0ZTMyM2M2ZWZhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkK
ICAgICAvLyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBK
YXZhU2NyaXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBz
byB3ZQogICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJl
ZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVz
dC0+YWxsb3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsganNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9w
dXBzKCkgfSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2NDQ1YWE1YTcyNTZk
NmJhODdkNzM2ZjI2YmFkYzcxYTk4MDhlNGQwLi5kOGZlNTI1ZTg4MWMyZTY2YmRmZmE2YzZjZTc4
YTVlZmIxOWIwZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMzM1Miw0NSArMzM1Miw0NiBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjpr
ZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigo
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJk
QWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5r
cyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpKYXZhU2NyaXB0
RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5l
ZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdl
IGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlv
bi4KIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNl
cHRpb24gcmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZWRSZXN1bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNv
cmVGcmFtZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUo
KS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3Js
ZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0g
ICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAg
IHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5j
b3JlV29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIHsgeyAi
VW5hYmxlIHRvIGRldGVybWluZSBjb250ZXh0IGZvciBleGVjdXRpbmcgc2NyaXB0Il9zIH0gfSwg
Y2FsbGJhY2tJRCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAg
IGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGhpcywgcHJvdGVjdGVkV29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIHdvcmxkLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgZnJhbWUsIGNhbGxiYWNrSURdIChWYWx1ZU9yRXhjZXB0
aW9uIHJlc3VsdCkgeworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ugc2VyaWFsaXplZFJlc3Vs
dERhdGFSZWZlcmVuY2U7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWls
czsKKyAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpKSB7CisgICAgICAgICAgICBhdXRvIHNlcmlh
bGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5q
c0NvbnRleHRGb3JXb3JsZCh3b3JsZCksIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0
KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVs
bHB0cik7CisgICAgICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQorICAgICAgICAg
ICAgICAgIHNlcmlhbGl6ZWRSZXN1bHREYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZh
bHVlLT5kYXRhKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhjZXB0aW9u
RGV0YWlscyA9IHsgIkVycm9yIHNlcmlhbGl6aW5nIHJlc3VsdCBvZiBleGVjdXRpbmcgSmF2YVNj
cmlwdCJfcyB9OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMg
PSByZXN1bHQuZXJyb3IoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
KHNlcmlhbGl6ZWRSZXN1bHREYXRhUmVmZXJlbmNlLCBleGNlcHRpb25EZXRhaWxzLCBjYWxsYmFj
a0lEKSk7CisgICAgfTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0
VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCks
IFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2Vi
RnJhbWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQp
OworICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyks
IHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlw
dEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFt
ZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBX
VEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIFdURk1v
dmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTVkYjRiODlkNmM4YTdi
ODJkMWRkZjZiNjc0NTQ0MDU1NjJmMTg4OC4uZTFkM2QwNWY1NDY1MzhmMGEwMzJkNmZmNGZkNmUy
NThjYjY0ODhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTk1LDYgKzE5NSw3IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dDsKIHN0cnVjdCBHbG9i
YWxGcmFtZUlkZW50aWZpZXI7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVj
dCBIaWdobGlnaHQ7CitzdHJ1Y3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM7CiBzdHJ1
Y3QgS2V5cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CiBzdHJ1
Y3QgVGV4dENoZWNraW5nUmVzdWx0OwpAQCAtMTQzNCw5ICsxNDM1LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBjb25zdCBT
dHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdv
cmxkTmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0
KFdlYkZyYW1lKiwgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVj
dXRpb25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYsIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFr
ZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCA5OWIzMmZlZjc4NDlhMGQ1ZjhiM2I1M2Y2ZDQyNTBmZjU0MTUwNTAxLi4wYWU2Y2MwOWY1ZWQw
ZWUyNzIzNGVlZWI3MTUyNmFmMjYzMzljMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIwNCw4ICsyMDQsOCBA
QCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U291cmNlRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMgcGFy
YW1ldGVycywgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRl
cnMgcGFyYW1ldGVycywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRm9yY2VS
ZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgU2VsZWN0QWxsKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBlYTUwNzhlZDE4ZjU1MDUyZGYyZTQyODEzZTJh
NmY3MDg1NWNlN2NjLi43YWE5MDFhYzQxNWJjYzNkNDk0OTYwMWNmMDNiNDMzMTgxNGY1OTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29u
c3QgU3RyaW5nJgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0
ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJv
bGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9y
RnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10p
OworICAgICAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZp
ZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KHsgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZl
ZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSB9KTsKICAgICB9OwogCiAg
ICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cmluZwogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwog
Ci0gICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSkt
Pm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9V
UkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CisgICAgY29yZShbbV9m
cm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwg
W2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dIH0pOwogfQogCiAvLyBNQVJLOiAtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA3OGNjMzNlYmExNWE2
ZTBmMTYyYTYwOWQzOGIyZTdjZTA4NWMzZjA4Li4xZjE4M2E0ZDljZjE4MzZmZTUzZGY1NzhmNTQ2
YmYzMTY1ZDI5NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTcwMCw3ICs3MDAsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZm9yY2VVcwogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGpzY0xvY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAjZW5kaWYKIAot
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsK
KyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsgc3RyaW5nLCAoYm9vbClmb3JjZVVzZXJH
ZXN0dXJlIH0pOwogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRo
ZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJu
IEAiIjsKQEAgLTIwOTYsNyArMjA5Niw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoR2xvCiAgICAg
QVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IHdlYkZy
YW1lKGtpdChmcmFtZSkpOyAvLyBSdW5uaW5nIGFyYml0cmFyeSBKYXZhU2NyaXB0IGNhbiBkZXN0
cm95IHRoZSBmcmFtZS4KIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigqY29yZSh3
b3JsZCksIHN0cmluZywgdHJ1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKCpj
b3JlKHdvcmxkKSwgeyBzdHJpbmcsIHRydWUgfSk7CiAKICAgICBpZiAoIXdlYkZyYW1lLT5fcHJp
dmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUg
ZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5NjFlMDVjZjFjMjI5ZGUxMTA0NmI3YzRmYjgz
NGY1MzM5YmI4MjI1Li42YWViNmZhNDhlNDI2ZmMwZTU4MTNiYTBmYzRhM2Q1OTk1M2U4YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC03OTA4LDcg
Kzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopYWVEZXNjQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopcwogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJ
Z25vcmluZ0V4Y2VwdGlvbihzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQg
PSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IHNj
cmlwdCwgdHJ1ZSB9KTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3JzCiAg
ICAgICAgIHJldHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5z
Y3JpcHQoKS5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385797</attachid>
            <date>2019-12-16 12:47:52 -0800</date>
            <delta_ts>2019-12-16 13:11:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191216124751.patch</filename>
            <type>text/plain</type>
            <size>57049</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLmZhNjNlZWZiMzk1
MTQ2NmJkMzVmNTAxMmE0NzBhOTQ5YTA2MjIyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjM5
LDkgKzIzOSwxMSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKyAgICBi
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
KyAgICBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKQEAgLTczOSw2ICs3NDEsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlSGFuZGxlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKICAgICBsb2FkZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaAogICAgIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODhiODAxNmExNzNhOGY5ZTM4MThkNzc5ZWU0Y2Ji
YjJjMGViZTgzYy4uZDY3ZDQ1OGE5MDQ0MTIwNTY1NjQxYjYxYzcyNjhhNDc1YmRiY2IzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTUyNCw2ICsxNTI0LDcgQEAKIAkJNTFBOUQ5RUExOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVw
YWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUE5RDlFODE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCAqLzsgfTsKIAkJ
NTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5
MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4
IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRl
clR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFCNDBEOEMyM0E1NDg5NTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0
MEQ4QjIzQTU0ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI0NUQy
MTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8q
IENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4
MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lz
dHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI2MjgsNyArMjYyOSw3IEBACiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAv
KiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9
OwogCQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlE
MEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5
MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDkwN0UzMTI1QkJCQzgwMDdG
MjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRT
b3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyB9Owor
CQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzRGNzEzOTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzQjBE
NUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zODUzLDcgKzM4NTQsNyBAQAogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCMTZDMDcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
MTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNC
MTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFNjcmlwdC5oICovOyB9OworCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRY
U0xTdHlsZVNoZWV0LmggKi87IH07CiAJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
OTJENEYxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8q
IEZvbnRCYXNlbGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zODY3LDcgKzM4NjgsNyBAQAogCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcg
LyogRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDBFMEZC
MEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjgwRTk3MkMzNTAwMjY1REVBIC8qIFNl
Y3VyaXR5T3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEMEUwRkMwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjkw
RTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2
OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IH07CisJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2
OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2Rl
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5
QzJCRDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1Qzkw
QTIgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0RENDU0RTEyMzZD
OTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMx
OCw2ICs4MzE5LDcgQEAKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0cmF0
ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBRjUwMzUxNkYxMDBGNjAw
OTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQjQwRDhCMjNBNTQ4NTkwMEUw
NTI0MSAvKiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NUQxRTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVu
dEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUYx
QUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmF0aW9uU3RvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzM1LDYgKzI1MzM3LDcgQEAKIAkJCQkxNDMy
RTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi8sCiAJCQkJQzU4NUE2NjAx
MUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovLAogCQkJCUM1ODVB
NjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCisJCQkJNTFC
NDBEOEIyM0E1NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmgg
Ki8sCiAJCQkJOUJENEU5MTQxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHAgKi8sCiAJCQkJOUJENEU5MTUxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5oICovLAogCQkJCTdDNTdCRkU2MUVERTJGNUIwMDUzNEE0OCAvKiBKU0RP
TUFic3RyYWN0T3BlcmF0aW9ucy5oICovLApAQCAtMzAzNzksNiArMzAzODIsNyBAQAogCQkJCUNE
NUZGNDlCMjE2MkU0QjcwMDRCRDg2RiAvKiBJU09TY2hlbWVUeXBlQm94LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDVGRjQ5NzIxNjJFMkI3MDA0QkQ4NkYgLyogSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTI0N0UzODFGRUE1Rjg2MDA4QzA4Q0UgLyogSXRlcmF0
aW9uQ29tcG9zaXRlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUI0MEQ4QzIzQTU0
ODk1MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMEQ5ODYxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRT
aWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2Ux
NTRhYmRjZWE3M2UzYzVhLi4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBA
IC0zMyw3ICszMyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVz
c2FnZTsKICAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsg
MCB9OwotICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzAyMGVkZTQ0OTY4MWU5NjRiMDI5MTY0NjEyNDljZDJmMTY3YmZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
bnVtIGNsYXNzIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeworICAgIE5vLAorICAgIFllcywKK307
CisKK3N0cnVjdCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7CisgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlOworICAgIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdp
dGhVc2VyR2VzdHVyZSB7IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH07CisKKyAgICBKYXZh
U2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSkKKyAgICAgICAg
OiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKKyAgICAgICAgOiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVz
ZXJHZXN0dXJlKGZvcmNlVXNlckdlc3R1cmUgPyBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpZZXMg
OiBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMoU2NyaXB0U291cmNlQ29kZSYmIGlucHV0U291cmNlQ29k
ZSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0gRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShXVEZNb3ZlKGlucHV0
U291cmNlQ29kZSkpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0
aFVzZXJHZXN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycyhjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVX
aXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmU6Ok5vKQorICAgICAgICA6IHNvdXJjZUNvZGUoaW5wdXRTb3VyY2VDb2RlKQorICAgICAg
ICAsIGV4ZWN1dGVXaXRoVXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlQ29k
ZSA8PCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
U2NyaXB0U291cmNlQ29kZT4gc291cmNlQ29kZSA9IFNjcmlwdFNvdXJjZUNvZGU6OmRlY29kZTxE
ZWNvZGVyPihkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4
ZWN1dGVXaXRoVXNlckdlc3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7IFdURk1vdmUoKnNv
dXJjZUNvZGUpLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlIH07CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZSwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8sCisgICAg
ICAgIFdlYkNvcmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcworICAgID47Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCA4ZTRjN2IzODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmLi4xOWUzNGIxZTIzNGY0
YzQ5YTRhMzRhNGUzNTgxNzk4M2VlNTUxY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNjaGVk
dWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1fZnVuY3Rp
b24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRvdy0+cHJv
eHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUp
OworICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKG1faXNvbGF0ZWRXb3Js
ZCwgeyB7IG1fY29kZSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9LCBbXSAoVmFsdWVP
ckV4Y2VwdGlvbikgeyB9KTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1ZjViYWEyMDYzODM1OGMwYmI4
MmIzN2JjZWEyNmNhZDk4ZWY2NGFhLi42MWE3NDEwNjI2ODk3N2Y4ZTc0N2RmNTI0ZjY5MWJlNTVj
MTY1MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtNTYsOCArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3Qu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRp
YWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTTG9jay5oPgpAQCAtNjgsNiArNzAsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAt
MTA5LDE1ICsxMTIsMjkgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQog
CiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VD
b2RlLCB3b3JsZCk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gSmF2YVNjcmlwdEV4ZWN1dGlvblBh
cmFtZXRlcnMgeyBzb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9OworCisg
ICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAg
ICBldmFsdWF0ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShWYWx1ZU9yRXhjZXB0aW9u
IGlubmVyUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IGlubmVyUmVzdWx0OworICAgICAgICBj
YWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIEFTU0VSVChjYWxsZWQpOworCiAgICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVP
ckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKwordm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVG
dW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKIHsKKyAgICBBU1NFUlQocmVzb2x2ZUZ1bmN0aW9u
KTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVy
cy5leGVjdXRlV2l0aFVzZXJHZXN0dXJlID09IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcyA/
IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogV1RGOjpudWxsb3B0KTsKKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkp
OwogCi0gICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1Nv
dXJjZUNvZGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBwYXJhbWV0
ZXJzLnNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpz
U291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIC8vIGV2YWx1YXRlIGNvZGUuIFJl
dHVybnMgdGhlIEpTIHJldHVybiB2YWx1ZSBvciAwCkBAIC0xMzQsNyArMTUxLDcgQEAgVmFsdWVP
ckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmMKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFt
ZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29s
dW1uKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0
KG1fZnJhbWUsIHNvdXJjZVVSTCwgcGFyYW1ldGVycy5zb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBw
YXJhbWV0ZXJzLnNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVl
ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9m
aWxpbmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbik7CkBAIC0xNDQsMTUgKzE2MSwxNiBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyYwogICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZh
bHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFpbHM7Ci0g
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9u
LCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBwYXJhbWV0ZXJzLnNv
dXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKICAgICAgICAgb3B0aW9uYWxEZXRh
aWxzID0gV1RGTW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVk
U291cmNlVVJMOwotICAgIGlmIChvcHRpb25hbERldGFpbHMpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVu
ZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscykpOworICAgIGVsc2UKKyAgICAgICAgcmVzb2x2ZUZ1
bmN0aW9uKHJldHVyblZhbHVlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSkKQEAgLTU1OCw0MiArNTc2LDUwIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJT
Y3JpcHRPYmplY3RzKCkKICNlbmRpZgogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUpCi17Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxk
SWdub3JpbmdFeGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VV
c2VyR2VzdHVyZSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEph
dmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsg
fTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgcGFyYW1ldGVycyk7CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24g
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1
cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgp
LT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+
Y2hhcnNldCgpKSk7Ci0KLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1w
dHkgSlNWYWx1ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRpb25EZXRhaWxzLgogICAgIGlmICgh
Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNv
ZGUsIHdvcmxkKTsKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRp
b24gcmVzdWx0OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVycywgWyZdKFZh
bHVlT3JFeGNlcHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5uZXJSZXN1
bHQ7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgQVNTRVJUKGNhbGxlZCk7
CisKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9
OwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBi
b29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVP
ckV4Y2VwdGlvbiBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGlubmVy
UmVzdWx0KTsKKyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIEFTU0VSVChj
YWxsZWQpOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1
ZSB7IH07CiB9Ci1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5j
dGlvbiYmIHJlc29sdmVGdW5jdGlvbikKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1l
LmRvY3VtZW50KCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1l
bnQpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJV
bmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1
cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoZG9jdW1lbnQpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5l
eHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3Jp
cHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0
ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdv
cmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3Js
ZCwgcGFyYW1ldGVycywgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3Vt
ZW50KSBjb25zdApAQCAtNjQxLDcgKzY2Nyw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtCiAg
ICAgY29uc3QgaW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6
IikgLSAxOwogCiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXModXJsLnN0cmluZygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7
CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGRl
Y29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpIH0sIEV4ZWN1dGVXaXRo
VXNlckdlc3R1cmU6Ok5vIH0pOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQg
dGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qg
d2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1OGMwMWEwMTcwODM1
MjM5YmFhZjU5NTYzMzkwY2Y0YS4uNzkyMWJlMGRkOTRjMWIyYjI4ODdmZWM3NmI3ZmJjOGYzZDc1
ZjJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aApAQCAtMjMsNiArMjMsOCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2lu
Y2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC05MCwxMSArOTIsMTUgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldv
cmxkPj4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSA9IGZhbHNlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0
ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUpOworICAgIHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVu
Y3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6
OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRF
eGVjdXRpb25QYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldv
cmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVzb2x2ZUZ1bmN0aW9u
JiYpOworICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
Jik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Cisg
ICAgdm9pZCBldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMmLCBSZXNvbHZlRnVuY3Rpb24mJik7CiAKICAgICBib29sIHNo
b3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAg
KzExMSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZl
biByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
LSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBW
YWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExv
YWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxl
RmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUs
IFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlw
dEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
b3VyY2VDb2RlLmgKaW5kZXggZmNhNTc0Y2ZkYWFjNDliYWRmNGQ4MjlmMTkyMDAyMTExNDM3MTk4
Yi4uNTgxZDg2ZGZjM2NkMzBmOGY0OTc1MGViOWM2NTY0MDIyMTk1YWFlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtNjMsNiArNjMsMjEg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIG90aGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIob3RoZXIubV9wcm92
aWRlci5jb3B5UmVmKCkpCisgICAgICAgICwgbV9jb2RlKG90aGVyLm1fY29kZSkKKyAgICAgICAg
LCBtX2NhY2hlZFNjcmlwdChvdGhlci5tX2NhY2hlZFNjcmlwdCkKKyAgICB7CisgICAgfQorCisg
ICAgU2NyaXB0U291cmNlQ29kZSYgb3BlcmF0b3I9KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIG90
aGVyKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlciA9IG90aGVyLm1fcHJvdmlkZXIuY29weVJl
ZigpOworICAgICAgICBtX2NvZGUgPSBvdGhlci5tX2NvZGU7CisgICAgICAgIG1fY2FjaGVkU2Ny
aXB0ID0gb3RoZXIubV9jYWNoZWRTY3JpcHQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvZGUubGVuZ3RoKCkgPT0g
MDsgfQogCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7
IHJldHVybiBtX2NvZGU7IH0KQEAgLTc1LDcgKzkwLDM3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRT
Y3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgp
OyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXItPnVy
bCgpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UoKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgPDwgdXJsKCkgPDwgc3RhcnRMaW5lKCkgPDwgc3RhcnRD
b2x1bW4oKSA8PCBtX3Byb3ZpZGVyLT5zb3VyY2VUeXBlKCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBVUkwgdXJsOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlu
dCBzdGFydExpbmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRMaW5lKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaW50IHN0YXJ0Q29sdW1u
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0Q29sdW1uKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGUgc291cmNlVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc291cmNl
VHlwZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgICAgICBy
ZXR1cm4gU2NyaXB0U291cmNlQ29kZSB7IHNvdXJjZSwgV1RGTW92ZSh1cmwpLCBUZXh0UG9zaXRp
b24geyBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRMaW5lKSwgT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0Q29sdW1uKSB9LCBzb3VyY2VUeXBlIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFJlZjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwog
ICAgIEpTQzo6U291cmNlQ29kZSBtX2NvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMGQ4MzE5
MjUyNzgyZGE5NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MS4uMTRkMjVhODVhNTY2OTUwMzZmZTU1
NzFlNjI4OWMxYTZlMjFhYmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDIwLDcgKzQyMCw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZGlzcGF0Y2hNZXNzYWdlQXN5
bmMoY29uc3QgU3RyaW5nJiBtZXNzYWdlT2JqCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKICAg
ICBhdXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWlu
RnJhbWUoKSk7Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmco
JnN0YXRlKSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGV4cHJlc3Npb24g
fSwgRXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSkudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVP
bkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCmluZGV4IDZlYWZjYTM0ZTgxYTM5OTJkZDFmYjgwZjkwMzJlYjk2YzhiOWI3
NzYuLjA0Mjc4NjVhMGRjZTdhMWFlZTk1YzM3MjVkMDc0NjRjZmJiNGE1YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENv
bnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSkgewogICAgICAgICB1bmJsb2NrSGFu
ZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFr
UHRyKGZyYW1lLT5zY3JpcHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJs
b2NrZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9s
bGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKKyAgICAgICAgICAg
ICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7
IHNjcmlwdCB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKICAgICAgICAgfSk7CiAg
ICAgfQogICAgIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJl
NDAwODI4NDQ0MWM1NmZhZGJmLi5jY2I1ZjQ3ZGZjNGQ4ZDBlNTk1YjU2ODIxNzJlZjliNWZhMDkz
ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIs
NyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdl
LCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwg
dm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewot
ICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3Jp
cHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCks
IHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
cmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVl
KSwgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJv
cjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhYjg5NzgwZTJl
ZTM2ZWZjZjNiYjFiMjUyNGIzNWQ0NGZjNmUxZTYxLi40YzdhMDQ1ZDhmNjc4MzYwMDE4NTgwMzFj
MDc1NWYxMzg5NDc2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJP
T0wpCiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pOwogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3Ry
aW5nLCBmb3JjZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNv
ZGUpIHsKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0
cmluZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJv
ciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ODBiZmI5
ZTY5MDc4ZmYwNGFkNWM2ZTdkODU4ZTQ4ZjFmNDQ5ODY2Li5lOGQzNjk0MjVkODNkMDJlN2QzMGFh
MDg4ODY5M2VkYjljNTRiYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTM4NDUsMTIgKzM4NDUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJv
Y2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdURk1vdmUo
cGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0
IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1
bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2MSwxNCArMzg2MSwxNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRl
cnMsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQobWFpbkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNr
SUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShm
cmFtZUlELCB7IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDAyNzRkN2NlMmY0MzY4MTU0Y2NiNjc5MjVjZDBmOWRhNDNjMjljZDUuLmE0ZDAzZTFiNDc0
NjRkMmJiMWQxYzhjNzFiYTM3ZmYwZDJkNmVlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZp
ZXcuaD4gLy8gRklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBvd24g
ZmlsZSBhbmQgc3RvcCBpbmNsdWRpbmcgdGhpcy4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZy
YW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTGF5b3V0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC0xMDYxLDgg
KzEwNjIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKwogICAg
IC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRD
YWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1Yzg1ZmMxNTQ5NGUxYjIyMzE1NmEzNTRjYWE5ZDJiMmY2ZTg5YjlkLi5h
NzBlMWUzYTY2ZjVhNDEyYjlkZmZmM2I2NmYwYjU2MzA5NzZiNGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjUsNiArMzUyNSw4
IEBACiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0
aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDRjEw
MTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRpYWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MThCNTA1ODIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3Vt
ZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5KYXZhU2Ny
aXB0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTky
Mzg2MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE4RDJDQUMxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThFOEVGMzE2QjIwOTFDMDBFOTE0MjkgLyog
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NTM3LDYgKzU1MzksOCBAQAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAv
KiBSVENOZXR3b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1Bh
Y2tldE9wdGlvbnMuY3BwICovLAogCQkJCTQxQjI4QjA4MUY4M0FEM0UwMEZCNTJBQyAvKiBSVENQ
YWNrZXRPcHRpb25zLmggKi8sCisJCQkJNTE4QjUwNTgyMzg2MDEwRjAwODA4NEMzIC8qIFJ1bkph
dmFTY3JpcHRBcmd1bWVudHMuY3BwICovLAorCQkJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAv
KiBSdW5KYXZhU2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTcz
MkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2
RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQlFMUU1NTJDMzE2QUUw
NjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAz
ZWEwMDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwLi43YzVjY2E3MWI4NmFkNDlh
Zjg2OGQzMWNmNTI0ZTMyM2M2ZWZhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkK
ICAgICAvLyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBK
YXZhU2NyaXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBz
byB3ZQogICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJl
ZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVz
dC0+YWxsb3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHsganNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9w
dXBzKCkgfSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2NDQ1YWE1YTcyNTZk
NmJhODdkNzM2ZjI2YmFkYzcxYTk4MDhlNGQwLi5jNDNhOGVhZGMxMzc4YzY4YTFjOTg0NWJiN2Ew
N2M4Njk3NjBmOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMzM1Miw0NSArMzM1Miw0NiBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjpr
ZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigo
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJk
QWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5r
cyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpKYXZhU2NyaXB0
RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5l
ZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdl
IGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlv
bi4KIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNl
cHRpb24gcmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZWRSZXN1bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNv
cmVGcmFtZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUo
KS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3Js
ZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0g
ICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAg
IHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5j
b3JlV29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIHsgeyAi
VW5hYmxlIHRvIGRldGVybWluZSBjb250ZXh0IGZvciBleGVjdXRpbmcgc2NyaXB0Il9zIH0gfSwg
Y2FsbGJhY2tJRCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAg
IGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGhpcywgcHJvdGVjdGVkV29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIHdvcmxkLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgZnJhbWUsIGNhbGxiYWNrSURdIChWYWx1ZU9yRXhjZXB0
aW9uIHJlc3VsdCkgeworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ugc2VyaWFsaXplZFJlc3Vs
dERhdGFSZWZlcmVuY2U7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWls
czsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgYXV0byBzZXJpYWxpemVkUmVz
dWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0
Rm9yV29ybGQod29ybGQpLCB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2Jh
bE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwor
ICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgICAgICBz
ZXJpYWxpemVkUmVzdWx0RGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0
YSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMg
PSB7ICJFcnJvciBzZXJpYWxpemluZyByZXN1bHQgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQiX3Mg
fTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gcmVzdWx0
LmVycm9yKCk7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwotICAg
IGlmICghcmVzdWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhzZXJpYWxp
emVkUmVzdWx0RGF0YVJlZmVyZW5jZSwgZXhjZXB0aW9uRGV0YWlscywgY2FsbGJhY2tJRCkpOwor
ICAgIH07CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2Fs
bGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrKGNvbW1vblZNKCkpOworICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCku
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCks
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBy
dW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5h
bWUsIGNhbGxiYWNrSUQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAg
IHJ1bkphdmFTY3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxs
b3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBXVEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omdl
dENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE1ZGI0Yjg5ZDZjOGE3YjgyZDFkZGY2
YjY3NDU0NDA1NTYyZjE4ODguLmUxZDNkMDVmNTQ2NTM4ZjBhMDMyZDZmZjRmZDZlMjU4Y2I2NDg4
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5
NSw2ICsxOTUsNyBAQCBzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJ
ZGVudGlmaWVyOwogc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxp
Z2h0Oworc3RydWN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IEtleXBy
ZXNzQ29tbWFuZDsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogc3RydWN0IFRleHRD
aGVja2luZ1Jlc3VsdDsKQEAgLTE0MzQsOSArMTQzNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291
cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFt
ZSosIFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFy
YW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hv
dChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBT
aXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOTliMzJm
ZWY3ODQ5YTBkNWY4YjNiNTNmNmQ0MjUwZmY1NDE1MDUwMS4uMGFlNmNjMDlmNWVkMGVlMjcyMzRl
ZWViNzE1MjZhZjI2MzM5YzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsOCArMjA0LDggQEAgR2VuZXJh
dGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBP
cHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgUnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQo
c3RydWN0IFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMs
IE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFt
ZXRlcnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludChX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAogICAgIFNlbGVjdEFsbCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KaW5kZXggZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVj
ZTdjYy4uN2FhOTAxYWM0MTViY2MzZDQ5NDk2MDFjZjAzYjQzMzE4MTRmNTk4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDph
Y3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJy
b3I6TlVMTF07CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJv
bnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5k
QVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsKKyAgICAg
ICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1h
aW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIl
QFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10gfSk7CiAgICAgfTsKIAogICAgIGlmICgh
Zm9yY2VTYXZlRGlhbG9nKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBT
dHJpbmcKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNv
cmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJh
bWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBc
IikiLCBbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXV0pOworICAgIGNvcmUoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxV
UkwgYWJzb2x1dGVTdHJpbmddXSB9KTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNzhjYzMzZWJhMTVhNmUwZjE2MmE2
MDlkMzhiMmU3Y2UwODVjM2YwOC4uMWYxODNhNGQ5Y2YxODM2ZmU1M2RmNTc4ZjU0NmJmMzE2NWQy
OTZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC03MDAsNyArNzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9j
a0hvbGRlciBqc2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVT
Y3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IHN0cmluZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9
KTsKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0
IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBA
IC0yMDk2LDcgKzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQo
ZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUg
ZnJhbWUuCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCBz
dHJpbmcsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigqY29yZSh3b3Js
ZCksIHsgc3RyaW5nLCB0cnVlIH0pOwogCiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNv
cmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhl
IHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggOTYxZTA1Y2YxYzIyOWRlMTEwNDZiN2M0ZmI4MzRmNTMzOWJi
ODIyNS4uNmFlYjZmYTQ4ZTQyNmZjMGU1ODEzYmEwZmM0YTNkNTk5NTNlOGI2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcg
QEAgLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAo
IWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdF
eGNlcHRpb24oc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBzY3JpcHQsIHRy
dWUgfSk7CiAgICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICBy
ZXR1cm4gMDsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvcmVGcmFtZS0+c2NyaXB0KCku
Z2xvYmFsT2JqZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385800</attachid>
            <date>2019-12-16 13:11:23 -0800</date>
            <delta_ts>2019-12-16 13:59:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191216131122.patch</filename>
            <type>text/plain</type>
            <size>57325</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLjdkMWEwZTZhMGZh
MGY0YWI5MzNiYWEwYWQxYjkwZmZjMDAxMjRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTg1
LDYgKzE4NSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAg
IGJpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCiAgICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
RmV0Y2hlci5oCisgICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAog
ICAgIGJpbmRpbmdzL2pzL0NvbW1vblZNLmgKICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaAogICAgIGJpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaApAQCAtMjM5LDkgKzI0MCwx
MSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKyAgICBiaW5kaW5ncy9q
cy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKyAgICBiaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5o
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGVJbmxpbmVzLmgKQEAgLTczOSw2ICs3NDIsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFu
ZGxlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAogICAgIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKICAgICBs
b2FkZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaAogICAgIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODhiODAxNmExNzNhOGY5ZTM4MThkNzc5ZWU0Y2JiYjJjMGViZTgz
Yy4uZDY3ZDQ1OGE5MDQ0MTIwNTY1NjQxYjYxYzcyNjhhNDc1YmRiY2IzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyNCw2
ICsxNTI0LDcgQEAKIAkJNTFBOUQ5RUExOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVwYWRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5RDlF
ODE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCAqLzsgfTsKIAkJNTFBQkFFMUUx
MDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291
cmNlTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5cGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCNDBE
OEMyM0E1NDg5NTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0MEQ4QjIzQTU0
ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI0NUQyMTFBQjhEMUUy
MDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRF
eHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZE
Mjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1
OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0
b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI2MjgsNyArMjYyOSw3IEBACiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29k
ZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9OwogCQk5MzQ0
MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQyQjMzNUMw
MDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5MzQ5MDdFNDEy
NUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDkwN0UzMTI1QkJCQzgwMDdGMjNBMCAvKiBH
cmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzEw
OTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyB9OworCQk5MzRDQzEw
QTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8q
IFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzRGNzEzOTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzQjBENUE2RjE5MDAw
MThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQgLyogTlNTY3Jv
bGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODUz
LDcgKzM4NTQsNyBAQAogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzAz
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNCMTZDMDcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjIwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNCMTZDMjQwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNj
cmlwdC5oICovOyB9OworCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMw
QjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNo
ZWV0LmggKi87IH07CiAJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCOTJENEYxMjkz
NTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNl
bGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zODY3LDcgKzM4NjgsNyBAQAogCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1l
bnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDBFMEZCMEU5NzJDMzUw
MDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjgwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3Jp
Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNEMEUwRkMwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjkwRTk3MkMzNTAw
MjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggKi87IH07CisJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzJCRDBDMTdC
NjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0RENDU0RTEyMzZDOTVDMDA5QTc5
ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMxOCw2ICs4MzE5
LDcgQEAKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0ZWd5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0cmF0ZWd5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4IC8q
IFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VMb2FkZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIy
NDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQjQwRDhCMjNBNTQ4NTkwMEUwNTI0MSAvKiBK
YXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUI0NUQxRTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5z
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUYxQUI4RDFFMjAw
MTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmF0aW9uU3RvcmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzM1LDYgKzI1MzM3LDcgQEAKIAkJCQkxNDMyRTg0NjBDNTE0
OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi8sCiAJCQkJQzU4NUE2NjAxMUQ0RkFDNTAw
NEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovLAogCQkJCUM1ODVBNjYxMTFENEZB
QzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCisJCQkJNTFCNDBEOEIyM0E1
NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJ
OUJENEU5MTQxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAg
Ki8sCiAJCQkJOUJENEU5MTUxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oICovLAogCQkJCTdDNTdCRkU2MUVERTJGNUIwMDUzNEE0OCAvKiBKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oICovLApAQCAtMzAzNzksNiArMzAzODIsNyBAQAogCQkJCUNENUZGNDlCMjE2
MkU0QjcwMDRCRDg2RiAvKiBJU09TY2hlbWVUeXBlQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDVGRjQ5NzIxNjJFMkI3MDA0QkQ4NkYgLyogSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MTI0N0UzODFGRUE1Rjg2MDA4QzA4Q0UgLyogSXRlcmF0aW9uQ29tcG9z
aXRlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUI0MEQ4QzIzQTU0ODk1MDBFMDUy
NDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0MzMEQ5ODYxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4
Y2VwdGlvbkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRhYmRjZWE3
M2UzYzVhLi4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0zMyw3ICsz
Myw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAg
ICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAg
IFN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzAyMGVk
ZTQ0OTY4MWU5NjRiMDI5MTY0NjEyNDljZDJmMTY3YmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNz
IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeworICAgIE5vLAorICAgIFllcywKK307CisKK3N0cnVj
dCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7CisgICAgU2NyaXB0U291cmNlQ29kZSBz
b3VyY2VDb2RlOworICAgIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZSB7IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH07CisKKyAgICBKYXZhU2NyaXB0RXhl
Y3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSkKKyAgICAgICAgOiBzb3VyY2VD
b2RlKHNvdXJjZSkKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAg
ICAgOiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJl
KGZvcmNlVXNlckdlc3R1cmUgPyBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpZZXMgOiBFeGVjdXRl
V2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMoU2NyaXB0U291cmNlQ29kZSYmIGlucHV0U291cmNlQ29kZSwgRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0gRXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShXVEZNb3ZlKGlucHV0U291cmNlQ29k
ZSkpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0aFVzZXJHZXN0
dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5v
KQorICAgICAgICA6IHNvdXJjZUNvZGUoaW5wdXRTb3VyY2VDb2RlKQorICAgICAgICAsIGV4ZWN1
dGVXaXRoVXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlQ29kZSA8PCBleGVj
dXRlV2l0aFVzZXJHZXN0dXJlOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U2NyaXB0U291
cmNlQ29kZT4gc291cmNlQ29kZSA9IFNjcmlwdFNvdXJjZUNvZGU6OmRlY29kZTxEZWNvZGVyPihk
ZWNvZGVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRo
VXNlckdlc3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJl
dHVybiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7IFdURk1vdmUoKnNvdXJjZUNvZGUp
LCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlIH07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSwKKyAg
ICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8sCisgICAgICAgIFdlYkNv
cmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcworICAgID47Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCA4ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmLi4xOWUzNGIxZTIzNGY0YzQ5YTRhMzRh
NGUzNTgxNzk4M2VlNTUxY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1fZnVuY3Rpb24pCiAgICAg
ICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRvdy0+cHJveHkoKSwgZG9j
dW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOworICAgICAg
ICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgeyB7IG1f
Y29kZSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9LCBbXSAoVmFsdWVPckV4Y2VwdGlv
bikgeyB9KTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1ZjViYWEyMDYzODM1OGMwYmI4MmIzN2JjZWEy
NmNhZDk4ZWY2NGFhLi42MWE3NDEwNjI2ODk3N2Y4ZTc0N2RmNTI0ZjY5MWJlNTVjMTY1MGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtNTYsOCArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgpAQCAtNjgsNiArNzAsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMTA5LDE1ICsx
MTIsMjkgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQogCiBKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3Js
ZCk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMg
eyBzb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9OworCisgICAgYm9vbCBj
YWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBldmFsdWF0
ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShWYWx1ZU9yRXhjZXB0aW9uIGlubmVyUmVz
dWx0KSB7CisgICAgICAgIHJlc3VsdCA9IGlubmVyUmVzdWx0OworICAgICAgICBjYWxsZWQgPSB0
cnVlOworICAgIH0pOworICAgIEFTU0VSVChjYWxsZWQpOworCiAgICAgcmV0dXJuIHJlc3VsdCA/
IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKwordm9pZCBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2
YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYm
IHJlc29sdmVGdW5jdGlvbikKIHsKKyAgICBBU1NFUlQocmVzb2x2ZUZ1bmN0aW9uKTsKKworICAg
IFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5leGVjdXRl
V2l0aFVzZXJHZXN0dXJlID09IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RG
OjpudWxsb3B0KTsKKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAg
Y29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUo
KTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBwYXJhbWV0ZXJzLnNvdXJj
ZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpzU291cmNlQ29k
ZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIC8vIGV2YWx1YXRlIGNvZGUuIFJldHVybnMgdGhl
IEpTIHJldHVybiB2YWx1ZSBvciAwCkBAIC0xMzQsNyArMTUxLDcgQEAgVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmMKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNl
VVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUs
IHNvdXJjZVVSTCwgcGFyYW1ldGVycy5zb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBwYXJhbWV0ZXJz
LnNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVj
U3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFz
b246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBA
IC0xNDQsMTUgKzE2MSwxNiBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyYwogICAgIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFpbHM7Ci0gICAgICAgIHJl
cG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VD
b2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigm
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUu
Y2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RG
TW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJM
OwotICAgIGlmIChvcHRpb25hbERldGFpbHMpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgqb3B0aW9uYWxEZXRhaWxzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBpZiAo
b3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQo
Km9wdGlvbmFsRGV0YWlscykpOworICAgIGVsc2UKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKHJl
dHVyblZhbHVlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKQEAg
LTU1OCw0MiArNTc2LDUwIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmpl
Y3RzKCkKICNlbmRpZgogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUpCi17Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRF
eGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gcmVzdWx0ID0gZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAg
cmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKKyAgICBy
ZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSwgcGFyYW1ldGVycyk7CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRTb3Vy
Y2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSks
IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwg
Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgp
KSk7Ci0KLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1wdHkgSlNWYWx1
ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRpb25EZXRhaWxzLgogICAgIGlmICghY2FuRXhlY3V0
ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxk
KTsKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0
OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVycywgWyZdKFZhbHVlT3JFeGNl
cHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5uZXJSZXN1bHQ7CisgICAg
ICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgQVNTRVJUKGNhbGxlZCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCi1K
U0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBib29sIGNhbGxl
ZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVPckV4Y2VwdGlv
biBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGlubmVyUmVzdWx0KTsK
KyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIEFTU0VSVChjYWxsZWQpOwog
ICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9
Ci1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJl
c29sdmVGdW5jdGlvbikKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50
KCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
cnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFz
b25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlw
dHMoZG9jdW1lbnQpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZChF
eGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRo
aXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdl
bnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1l
dGVycywgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9s
bGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dApAQCAtNjQxLDcgKzY2Nyw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtCiAgICAgY29uc3Qg
aW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwog
CiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0
cmluZygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CisgICAgYXV0
byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGRlY29kZWRVUkwu
c3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpIH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1
cmU6Ok5vIH0pOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFt
ZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0
cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1OGMwMWEwMTcwODM1MjM5YmFhZjU5
NTYzMzkwY2Y0YS4uNzkyMWJlMGRkOTRjMWIyYjI4ODdmZWM3NmI3ZmJjOGYzZDc1ZjJlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjMs
NiArMjMsOCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkpT
V2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5o
IgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldpbmRvd1By
b3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC05MCwxMSArOTIsMTUgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZh
bHNlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29y
bGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpOworICAgIHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9p
ZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUg
ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVzb2x2ZUZ1bmN0aW9uJiYpOworICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdy
YXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJik7CisgICAg
SlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNl
Q29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBl
dmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlv
blBhcmFtZXRlcnMmLCBSZXNvbHZlRnVuY3Rpb24mJik7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAgKzExMSw2IEBA
IHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQg
aXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJh
bnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
Jik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhj
ZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9k
dWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJh
bWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
b3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgKaW5kZXggZmNhNTc0Y2ZkYWFjNDliYWRmNGQ4MjlmMTkyMDAyMTExNDM3MTk4Yi4uNTgxZDg2
ZGZjM2NkMzBmOGY0OTc1MGViOWM2NTY0MDIyMTk1YWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtNjMsNiArNjMsMjEgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIG90aGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIob3RoZXIubV9wcm92aWRlci5jb3B5
UmVmKCkpCisgICAgICAgICwgbV9jb2RlKG90aGVyLm1fY29kZSkKKyAgICAgICAgLCBtX2NhY2hl
ZFNjcmlwdChvdGhlci5tX2NhY2hlZFNjcmlwdCkKKyAgICB7CisgICAgfQorCisgICAgU2NyaXB0
U291cmNlQ29kZSYgb3BlcmF0b3I9KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIG90aGVyKQorICAg
IHsKKyAgICAgICAgbV9wcm92aWRlciA9IG90aGVyLm1fcHJvdmlkZXIuY29weVJlZigpOworICAg
ICAgICBtX2NvZGUgPSBvdGhlci5tX2NvZGU7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gb3Ro
ZXIubV9jYWNoZWRTY3JpcHQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvZGUubGVuZ3RoKCkgPT0gMDsgfQogCiAg
ICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGU7IH0KQEAgLTc1LDcgKzkwLDM3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTY3JpcHQqIGNh
Y2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgpOyB9CiAKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXItPnVybCgpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UoKS50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkgPDwgdXJsKCkgPDwgc3RhcnRMaW5lKCkgPDwgc3RhcnRDb2x1bW4oKSA8
PCBtX3Byb3ZpZGVyLT5zb3VyY2VUeXBlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBVUkwgdXJsOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGludCBzdGFydExp
bmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRMaW5lKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaW50IHN0YXJ0Q29sdW1uOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0Q29sdW1uKSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291
cmNlVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc291cmNlVHlwZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgICAgICByZXR1cm4gU2Ny
aXB0U291cmNlQ29kZSB7IHNvdXJjZSwgV1RGTW92ZSh1cmwpLCBUZXh0UG9zaXRpb24geyBPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRMaW5lKSwgT3JkaW5hbE51bWJlcjo6ZnJv
bU9uZUJhc2VkSW50KHN0YXJ0Q29sdW1uKSB9LCBzb3VyY2VUeXBlIH07CisgICAgfQorCiBwcml2
YXRlOgogICAgIFJlZjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAgIEpTQzo6
U291cmNlQ29kZSBtX2NvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMGQ4MzE5MjUyNzgyZGE5
NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MS4uMTRkMjVhODVhNTY2OTUwMzZmZTU1NzFlNjI4OWMx
YTZlMjFhYmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZGlzcGF0Y2hNZXNzYWdlQXN5bmMoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlT2JqCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2
YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKICAgICBhdXRvJiBz
dGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSk7
Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9
PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGV4cHJlc3Npb24gfSwgRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSkudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAidHJ1ZSI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCmluZGV4IDZlYWZjYTM0ZTgxYTM5OTJkZDFmYjgwZjkwMzJlYjk2YzhiOWI3NzYuLjA0Mjc4
NjVhMGRjZTdhMWFlZTk1YzM3MjVkMDc0NjRjZmJiNGE1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFw
V2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFrUHRyKGZyYW1l
LT5zY3JpcHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVk
Q29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYg
c2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKKyAgICAgICAgICAgICAgICBzY3Jp
cHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IHNjcmlwdCB9
LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAg
IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0
MWM1NmZhZGJmLi5jY2I1ZjQ3ZGZjNGQ4ZDBlNTk1YjU2ODIxNzJlZjliNWZhMDkzODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VT
dGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5z
dHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIHRydWUgfSwg
W2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFs
dWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwgKGVycm9y
ICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRl
KCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhYjg5NzgwZTJlZTM2ZWZjZjNi
YjFiMjUyNGIzNWQ0NGZjNmUxZTYxLi40YzdhMDQ1ZDhmNjc4MzYwMDE4NTgwMzFjMDc1NWYxMzg5
NDc2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpCiB7CiAg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0g
ICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5nLCBmb3Jj
ZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0
YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAg
ICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0cmluZywgKGJv
b2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNv
ZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ODBiZmI5ZTY5MDc4ZmYw
NGFkNWM2ZTdkODU4ZTQ4ZjFmNDQ5ODY2Li5lOGQzNjk0MjVkODNkMDJlN2QzMGFhMDg4ODY5M2Vk
YjljNTRiYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTM4NDUsMTIgKzM4NDUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9j
ZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5j
aFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhj
ZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwor
ICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdURk1vdmUocGFyYW1ldGVy
cyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBG
b3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2Vi
VmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlh
bFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2MSwxNCArMzg2MSwxNSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGRO
YW1lLCBjYWxsYmFja0lEKSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxk
TmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFp
bkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
RnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5G
cmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCB7
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDAyNzRk
N2NlMmY0MzY4MTU0Y2NiNjc5MjVjZDBmOWRhNDNjMjljZDUuLmE0ZDAzZTFiNDc0NjRkMmJiMWQx
YzhjNzFiYTM3ZmYwZDJkNmVlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4gLy8g
RklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBvd24gZmlsZSBhbmQg
c3RvcCBpbmNsdWRpbmcgdGhpcy4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
b3V0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC0xMDYxLDggKzEwNjIsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKwogICAgIC8vIEZvciBz
dWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1Yzg1ZmMxNTQ5NGUxYjIyMzE1NmEzNTRjYWE5ZDJiMmY2ZTg5YjlkLi5hNzBlMWUzYTY2
ZjVhNDEyYjlkZmZmM2I2NmYwYjU2MzA5NzZiNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjUsNiArMzUyNSw4IEBACiAJCTUx
ODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDRjEwMTJCMDE1Rjgw
MEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0NyZWRlbnRpYWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MThCNTA1ODIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5KYXZhU2NyaXB0QXJndW1l
bnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTkyMzg2MDEwRjAw
ODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4RDJDQUMx
MkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MThFOEVGMzE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NTM3LDYgKzU1MzksOCBAQAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1BhY2tldE9wdGlv
bnMuY3BwICovLAogCQkJCTQxQjI4QjA4MUY4M0FEM0UwMEZCNTJBQyAvKiBSVENQYWNrZXRPcHRp
b25zLmggKi8sCisJCQkJNTE4QjUwNTgyMzg2MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRB
cmd1bWVudHMuY3BwICovLAorCQkJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5KYXZh
U2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2RjBBMjAwMjM5
NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQlFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2
NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAzZWEwMDZiM2Nl
MzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwLi43YzVjY2E3MWI4NmFkNDlhZjg2OGQzMWNm
NTI0ZTMyM2M2ZWZhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
ZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBF
dmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0
IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAg
IC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVn
aW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQ
b3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dElnbm9yaW5nRXhjZXB0aW9uKHsganNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgfSk7
CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2NDQ1YWE1YTcyNTZkNmJhODdkNzM2
ZjI2YmFkYzcxYTk4MDhlNGQwLi5jNDNhOGVhZGMxMzc4YzY4YTFjOTg0NWJiN2EwN2M4Njk3NjBm
OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzM1Miw0NSArMzM1Miw0NiBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJ
TW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVm
YXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUg
Y2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBv
biBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAg
IEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gcmVz
dWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFtZSgp
ICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0
KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAg
ICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShm
cmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAgIHRvUmVmKGZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQo
KSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIHsgeyAiVW5hYmxlIHRv
IGRldGVybWluZSBjb250ZXh0IGZvciBleGVjdXRpbmcgc2NyaXB0Il9zIH0gfSwgY2FsbGJhY2tJ
RCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgIGF1dG8gcmVz
b2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJv
dGVjdGVkV29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIHdvcmxkLCBwcm90ZWN0ZWRGcmFtZSA9IG1h
a2VSZWYoKmZyYW1lKSwgZnJhbWUsIGNhbGxiYWNrSURdIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3Vs
dCkgeworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ugc2VyaWFsaXplZFJlc3VsdERhdGFSZWZl
cmVuY2U7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAgICAg
ICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgYXV0byBzZXJpYWxpemVkUmVzdWx0VmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQo
d29ybGQpLCB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3
b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOworICAgICAgICAg
ICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVk
UmVzdWx0RGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSB7ICJFcnJv
ciBzZXJpYWxpemluZyByZXN1bHQgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQiX3MgfTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7
CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwotICAgIGlmICghcmVz
dWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhzZXJpYWxpemVkUmVzdWx0
RGF0YVJlZmVyZW5jZSwgZXhjZXB0aW9uRGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGNvbW1vblZNKCkpOworICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewotICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwg
Zm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2Ny
aXB0KG1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxi
YWNrSUQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFT
Y3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBjYWxs
YmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBX
VEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRz
QXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE1ZGI0Yjg5ZDZjOGE3YjgyZDFkZGY2YjY3NDU0NDA1
NTYyZjE4ODguLmUxZDNkMDVmNTQ2NTM4ZjBhMDMyZDZmZjRmZDZlMjU4Y2I2NDg4YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5NSw2ICsxOTUs
NyBAQCBzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVy
Owogc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Oworc3Ry
dWN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IEtleXByZXNzQ29tbWFu
ZDsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogc3RydWN0IFRleHRDaGVja2luZ1Jl
c3VsdDsKQEAgLTE0MzQsOSArMTQzNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdl
YkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNr
SUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNv
cmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBDYWxsYmFja0lEKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3Jl
OjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50
MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOTliMzJmZWY3ODQ5YTBk
NWY4YjNiNTNmNmQ0MjUwZmY1NDE1MDUwMS4uMGFlNmNjMDlmNWVkMGVlMjcyMzRlZWViNzE1MjZh
ZjI2MzM5YzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsOCArMjA0LDggQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxT
dHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVu
SmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmlu
ZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdl
YkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFs
PFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBS
dW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIAogICAgIFNlbGVjdEFsbCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW0KaW5kZXggZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYy4uN2Fh
OTAxYWM0MTViY2MzZDQ5NDk2MDFjZjAzYjQzMzE4MTRmNTk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwg
YXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07
CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJW
aWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVk
VVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsKKyAgICAgICAgY29yZShb
bV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgp
LnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFj
dHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10gfSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZl
RGlhbG9nKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAg
ICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJv
bnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0
dWFsVVJMIGFic29sdXRlU3RyaW5nXV0pOworICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250
cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0SWdub3JpbmdFeGNlcHRpb24oeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3Bl
Y3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddXSB9KTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNzhjYzMzZWJhMTVhNmUwZjE2MmE2MDlkMzhiMmU3
Y2UwODVjM2YwOC4uMWYxODNhNGQ5Y2YxODM2ZmU1M2RmNTc4ZjU0NmJmMzE2NWQyOTZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyAr
NzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBq
c2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbih7IHN0cmluZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9KTsKIAogICAg
IGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQg
b3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2LDcg
KzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+ZG9j
dW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsg
Ly8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAK
LSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCBzdHJpbmcsIHRy
dWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigqY29yZSh3b3JsZCksIHsgc3Ry
aW5nLCB0cnVlIH0pOwogCiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkg
Ly8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAg
ICAgICAgIHJldHVybiBAIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggOTYxZTA1Y2YxYzIyOWRlMTEwNDZiN2M0ZmI4MzRmNTMzOWJiODIyNS4uNmFl
YjZmYTQ4ZTQyNmZjMGU1ODEzYmEwZmM0YTNkNTk5NTNlOGI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcgQEAgLSAoTlNB
cHBsZUV2ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOihOU1N0cmluZyAqKXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
c2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBzY3JpcHQsIHRydWUgfSk7CiAg
ICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2Jq
ZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385808</attachid>
            <date>2019-12-16 13:59:36 -0800</date>
            <delta_ts>2019-12-16 17:12:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191216135936.patch</filename>
            <type>text/plain</type>
            <size>59760</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2ZDBkMWExNWE4MWZm
NjE1NTJlZjk1ZjE3MzVmZmVmYzc0OWFlNy4uMTcxMmFhYTc5Nzc5ZDBiOTE1MzQzNGZjY2IzOGEw
Y2VjMDQ0ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEyLTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRy
b2xsZXIgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhpcyBpcyB0
byBzdXBwb3J0IGFuICdldmFsdWF0ZUphdmFzY3JpcHQnIFNQSSB0aGF0IHN1cHBvcnRzIGFzeW5j
aHJvbm91cyByZXN1bHRzIGF0IHRoZSBXZWJDb3JlIGxldmVsLgorICAgICAgICAKKyAgICAgICAg
Q2hhbmdlIDEgLSBMdW1waW5nIHRoZSBKUyB0byBiZSBleGVjdXRlZCBhbG9uZyB3aXRoIG90aGVy
IHBhcmFtZXRlcnMgb2YgdGhlIGV4ZWN1dGlvbiAKKyAgICAgICAgICAgIChlLmcuIHdoZXRoZXIg
b3Igbm90IHRvIGZvcmNlIGEgdXNlciBnZXN0dXJlKSBhbmQgcGFzc2luZyB0aGF0IFBhcmFtZXRl
cnMgb2JqZWN0IGFyb3VuZCB0bworICAgICAgICAgICAgdGhlIHZhcmlvdXMgZXZhbHVhdGUvZXhl
Y3V0ZSBtZXRob2RzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlIDIgLSBUaGUgU2NyaXB0Q29u
dHJvbGxlciBtZXRob2QgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSBKUyBleGVjdXRpb24gdGFrZXMg
YSBjb21wbGV0aW9uIGhhbmRsZXIKKyAgICAgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRo
ZSByZXN1bHRzLiBJbiB0aGlzIHBhdGNoIHRoYXQgY29tcGxldGlvbiBoYW5kbGVyIGlzIGFsd2F5
cyBjYWxsZWQgc3luY2hyb25vdXNseS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dEV4ZWN1dGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2Ny
aXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6ZGVjb2RlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKworICAgICAgICAqIGxv
YWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmRpZERlY2lkZSk6CisKIDIwMTktMTItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9u
IG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NTc4YzdiNWUzMzBjM2MzYzAyN2U2
Yjc0ZjIzMWFlYjMxNzI5N2NiLi4yODYyNzAwN2FkOTM2YTVmMDU1YjZhZWIzMzY4YmRmYWJhOTZl
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTE1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIFNjcmlwdENvbnRyb2xsZXIgcmVm
YWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIGFzeW5jIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhYWU1ZjExZDViMDc0M2EyZjdjY2E3MzYzYjY1MmIwOGE5
NWRjYzc5Li4xZGY0NmY3YzgwNTAxYWUyNGJmZjE2MjJjODQyNmVhYWMwY2I4MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMTUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgU2NyaXB0Q29udHJv
bGxlciByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IgYXN5bmMgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBw
ZW5kKToKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0
dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDJkN2MyY2UyMGYwZmNiY2VkYTEyNGEwZGRkOTVkNTI1NThmNjExNTIuLjdkMWEwZTZhMGZh
MGY0YWI5MzNiYWEwYWQxYjkwZmZjMDAxMjRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTg1
LDYgKzE4NSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAg
IGJpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCiAgICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
RmV0Y2hlci5oCisgICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAog
ICAgIGJpbmRpbmdzL2pzL0NvbW1vblZNLmgKICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaAogICAgIGJpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaApAQCAtMjM5LDkgKzI0MCwx
MSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKyAgICBiaW5kaW5ncy9q
cy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKyAgICBiaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5o
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGVJbmxpbmVzLmgKQEAgLTczOSw2ICs3NDIsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFu
ZGxlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAogICAgIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKICAgICBs
b2FkZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaAogICAgIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODhiODAxNmExNzNhOGY5ZTM4MThkNzc5ZWU0Y2JiYjJjMGViZTgz
Yy4uZDY3ZDQ1OGE5MDQ0MTIwNTY1NjQxYjYxYzcyNjhhNDc1YmRiY2IzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyNCw2
ICsxNTI0LDcgQEAKIAkJNTFBOUQ5RUExOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVwYWRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5RDlF
ODE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCAqLzsgfTsKIAkJNTFBQkFFMUUx
MDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291
cmNlTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5cGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCNDBE
OEMyM0E1NDg5NTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0MEQ4QjIzQTU0
ODU5MDBFMDUyNDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI0NUQyMTFBQjhEMUUy
MDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRF
eHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZE
Mjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1
OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0
b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI2MjgsNyArMjYyOSw3IEBACiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29k
ZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9OwogCQk5MzQ0
MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQyQjMzNUMw
MDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5MzQ5MDdFNDEy
NUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDkwN0UzMTI1QkJCQzgwMDdGMjNBMCAvKiBH
cmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzEw
OTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyB9OworCQk5MzRDQzEw
QTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8q
IFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzRGNzEzOTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzQjBENUE2RjE5MDAw
MThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQgLyogTlNTY3Jv
bGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODUz
LDcgKzM4NTQsNyBAQAogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzAz
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNCMTZDMDcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjIwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNCMTZDMjQwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNj
cmlwdC5oICovOyB9OworCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMw
QjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNo
ZWV0LmggKi87IH07CiAJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCOTJENEYxMjkz
NTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNl
bGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zODY3LDcgKzM4NjgsNyBAQAogCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1l
bnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRDBFMEZCMEU5NzJDMzUw
MDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjgwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3Jp
Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNEMEUwRkMwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEUwRjkwRTk3MkMzNTAw
MjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggKi87IH07CisJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzJCRDBDMTdC
NjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0RENDU0RTEyMzZDOTVDMDA5QTc5
ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMxOCw2ICs4MzE5
LDcgQEAKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0ZWd5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0cmF0ZWd5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4IC8q
IFJlc291cmNlTG9hZGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VMb2FkZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIy
NDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQjQwRDhCMjNBNTQ4NTkwMEUwNTI0MSAvKiBK
YXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUI0NUQxRTFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5z
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUYxQUI4RDFFMjAw
MTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmF0aW9uU3RvcmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzM1LDYgKzI1MzM3LDcgQEAKIAkJCQkxNDMyRTg0NjBDNTE0
OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi8sCiAJCQkJQzU4NUE2NjAxMUQ0RkFDNTAw
NEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovLAogCQkJCUM1ODVBNjYxMTFENEZB
QzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCisJCQkJNTFCNDBEOEIyM0E1
NDg1OTAwRTA1MjQxIC8qIEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJ
OUJENEU5MTQxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAg
Ki8sCiAJCQkJOUJENEU5MTUxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oICovLAogCQkJCTdDNTdCRkU2MUVERTJGNUIwMDUzNEE0OCAvKiBKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oICovLApAQCAtMzAzNzksNiArMzAzODIsNyBAQAogCQkJCUNENUZGNDlCMjE2
MkU0QjcwMDRCRDg2RiAvKiBJU09TY2hlbWVUeXBlQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDVGRjQ5NzIxNjJFMkI3MDA0QkQ4NkYgLyogSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MTI0N0UzODFGRUE1Rjg2MDA4QzA4Q0UgLyogSXRlcmF0aW9uQ29tcG9z
aXRlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUI0MEQ4QzIzQTU0ODk1MDBFMDUy
NDEgLyogSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0MzMEQ5ODYxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4
Y2VwdGlvbkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRhYmRjZWE3
M2UzYzVhLi4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0zMyw3ICsz
Myw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAg
ICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAg
IFN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzAyMGVk
ZTQ0OTY4MWU5NjRiMDI5MTY0NjEyNDljZDJmMTY3YmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMuaApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNz
IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgeworICAgIE5vLAorICAgIFllcywKK307CisKK3N0cnVj
dCBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7CisgICAgU2NyaXB0U291cmNlQ29kZSBz
b3VyY2VDb2RlOworICAgIEV4ZWN1dGVXaXRoVXNlckdlc3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2Vz
dHVyZSB7IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5vIH07CisKKyAgICBKYXZhU2NyaXB0RXhl
Y3V0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSkKKyAgICAgICAgOiBzb3VyY2VD
b2RlKHNvdXJjZSkKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFt
ZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAg
ICAgOiBzb3VyY2VDb2RlKHNvdXJjZSkKKyAgICAgICAgLCBleGVjdXRlV2l0aFVzZXJHZXN0dXJl
KGZvcmNlVXNlckdlc3R1cmUgPyBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpZZXMgOiBFeGVjdXRl
V2l0aFVzZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgSmF2YVNjcmlwdEV4ZWN1
dGlvblBhcmFtZXRlcnMoU2NyaXB0U291cmNlQ29kZSYmIGlucHV0U291cmNlQ29kZSwgRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZSBleGVjdXRlV2l0aFVzZXJHZXN0dXJlID0gRXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZTo6Tm8pCisgICAgICAgIDogc291cmNlQ29kZShXVEZNb3ZlKGlucHV0U291cmNlQ29k
ZSkpCisgICAgICAgICwgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZShleGVjdXRlV2l0aFVzZXJHZXN0
dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyhj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBpbnB1dFNvdXJjZUNvZGUsIEV4ZWN1dGVXaXRoVXNlckdl
c3R1cmUgZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSA9IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6Ok5v
KQorICAgICAgICA6IHNvdXJjZUNvZGUoaW5wdXRTb3VyY2VDb2RlKQorICAgICAgICAsIGV4ZWN1
dGVXaXRoVXNlckdlc3R1cmUoZXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSkKKyAgICB7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlQ29kZSA8PCBleGVj
dXRlV2l0aFVzZXJHZXN0dXJlOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnM+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U2NyaXB0U291
cmNlQ29kZT4gc291cmNlQ29kZSA9IFNjcmlwdFNvdXJjZUNvZGU6OmRlY29kZTxEZWNvZGVyPihk
ZWNvZGVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlIGV4ZWN1dGVXaXRo
VXNlckdlc3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXhlY3V0ZVdpdGhVc2Vy
R2VzdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJl
dHVybiBKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyB7IFdURk1vdmUoKnNvdXJjZUNvZGUp
LCBleGVjdXRlV2l0aFVzZXJHZXN0dXJlIH07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpFeGVjdXRlV2l0aFVzZXJHZXN0dXJlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZSwKKyAg
ICAgICAgV2ViQ29yZTo6RXhlY3V0ZVdpdGhVc2VyR2VzdHVyZTo6Tm8sCisgICAgICAgIFdlYkNv
cmU6OkV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcworICAgID47Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCA4ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmLi4xOWUzNGIxZTIzNGY0YzQ5YTRhMzRh
NGUzNTgxNzk4M2VlNTUxY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1fZnVuY3Rpb24pCiAgICAg
ICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRvdy0+cHJveHkoKSwgZG9j
dW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOworICAgICAg
ICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgeyB7IG1f
Y29kZSB9LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9LCBbXSAoVmFsdWVPckV4Y2VwdGlv
bikgeyB9KTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1ZjViYWEyMDYzODM1OGMwYmI4MmIzN2JjZWEy
NmNhZDk4ZWY2NGFhLi42MWE3NDEwNjI2ODk3N2Y4ZTc0N2RmNTI0ZjY5MWJlNTVjMTY1MGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtNTYsOCArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgpAQCAtNjgsNiArNzAsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMTA5LDE1ICsx
MTIsMjkgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQogCiBKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3Js
ZCk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMg
eyBzb3VyY2VDb2RlLCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9OworCisgICAgYm9vbCBj
YWxsZWQgPSBmYWxzZTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBldmFsdWF0
ZUluV29ybGQod29ybGQsIHBhcmFtZXRlcnMsIFsmXShWYWx1ZU9yRXhjZXB0aW9uIGlubmVyUmVz
dWx0KSB7CisgICAgICAgIHJlc3VsdCA9IGlubmVyUmVzdWx0OworICAgICAgICBjYWxsZWQgPSB0
cnVlOworICAgIH0pOworICAgIEFTU0VSVChjYWxsZWQpOworCiAgICAgcmV0dXJuIHJlc3VsdCA/
IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKwordm9pZCBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2
YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYm
IHJlc29sdmVGdW5jdGlvbikKIHsKKyAgICBBU1NFUlQocmVzb2x2ZUZ1bmN0aW9uKTsKKworICAg
IFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5leGVjdXRl
V2l0aFVzZXJHZXN0dXJlID09IEV4ZWN1dGVXaXRoVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RG
OjpudWxsb3B0KTsKKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAg
Y29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUo
KTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBwYXJhbWV0ZXJzLnNvdXJj
ZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpzU291cmNlQ29k
ZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIC8vIGV2YWx1YXRlIGNvZGUuIFJldHVybnMgdGhl
IEpTIHJldHVybiB2YWx1ZSBvciAwCkBAIC0xMzQsNyArMTUxLDcgQEAgVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmMKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNl
VVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUs
IHNvdXJjZVVSTCwgcGFyYW1ldGVycy5zb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBwYXJhbWV0ZXJz
LnNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVj
U3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFz
b246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBA
IC0xNDQsMTUgKzE2MSwxNiBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyYwogICAgIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFpbHM7Ci0gICAgICAgIHJl
cG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VD
b2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigm
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUu
Y2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RG
TW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJM
OwotICAgIGlmIChvcHRpb25hbERldGFpbHMpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgqb3B0aW9uYWxEZXRhaWxzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBpZiAo
b3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQo
Km9wdGlvbmFsRGV0YWlscykpOworICAgIGVsc2UKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKHJl
dHVyblZhbHVlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKQEAg
LTU1OCw0MiArNTc2LDUwIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmpl
Y3RzKCkKICNlbmRpZgogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUpCi17Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24obWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRF
eGVjdXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gcmVzdWx0ID0gZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAg
cmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKKyAgICBy
ZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSwgcGFyYW1ldGVycyk7CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0pTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRTb3Vy
Y2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSks
IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwg
Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgp
KSk7Ci0KLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1wdHkgSlNWYWx1
ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRpb25EZXRhaWxzLgogICAgIGlmICghY2FuRXhlY3V0
ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxk
KTsKKyAgICBib29sIGNhbGxlZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0
OworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1ldGVycywgWyZdKFZhbHVlT3JFeGNl
cHRpb24gaW5uZXJSZXN1bHQpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5uZXJSZXN1bHQ7CisgICAg
ICAgIGNhbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgQVNTRVJUKGNhbGxlZCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCi1K
U0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBib29sIGNhbGxl
ZCA9IGZhbHNlOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAgIGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLCBwYXJhbWV0ZXJzLCBbJl0oVmFsdWVPckV4Y2VwdGlv
biBpbm5lclJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGlubmVyUmVzdWx0KTsK
KyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIEFTU0VSVChjYWxsZWQpOwog
ICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9
Ci1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUpCisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgSmF2YVNj
cmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJl
c29sdmVGdW5jdGlvbikKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50
KCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
cnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFz
b25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlw
dHMoZG9jdW1lbnQpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZChF
eGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRo
aXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdl
bnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGV2YWx1YXRlSW5Xb3JsZCh3b3JsZCwgcGFyYW1l
dGVycywgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9s
bGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dApAQCAtNjQxLDcgKzY2Nyw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtCiAgICAgY29uc3Qg
aW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwog
CiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0
cmluZygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CisgICAgYXV0
byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGRlY29kZWRVUkwu
c3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpIH0sIEV4ZWN1dGVXaXRoVXNlckdlc3R1
cmU6Ok5vIH0pOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFt
ZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0
cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1OGMwMWEwMTcwODM1MjM5YmFhZjU5
NTYzMzkwY2Y0YS4uNzkyMWJlMGRkOTRjMWIyYjI4ODdmZWM3NmI3ZmJjOGYzZDc1ZjJlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjMs
NiArMjMsOCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkpT
V2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5o
IgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldpbmRvd1By
b3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC05MCwxMSArOTIsMTUgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZh
bHNlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29y
bGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpOworICAgIHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9p
ZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUg
ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25Q
YXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiwgUmVzb2x2ZUZ1bmN0aW9uJiYpOworICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdy
YXBwZXJXb3JsZCYsIGNvbnN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJik7CisgICAg
SlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNl
Q29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBl
dmFsdWF0ZUluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgSmF2YVNjcmlwdEV4ZWN1dGlv
blBhcmFtZXRlcnMmLCBSZXNvbHZlRnVuY3Rpb24mJik7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAgKzExMSw2IEBA
IHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQg
aXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJh
bnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
Jik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhj
ZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9k
dWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJh
bWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
b3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgKaW5kZXggZmNhNTc0Y2ZkYWFjNDliYWRmNGQ4MjlmMTkyMDAyMTExNDM3MTk4Yi4uNTgxZDg2
ZGZjM2NkMzBmOGY0OTc1MGViOWM2NTY0MDIyMTk1YWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtNjMsNiArNjMsMjEgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIG90aGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIob3RoZXIubV9wcm92aWRlci5jb3B5
UmVmKCkpCisgICAgICAgICwgbV9jb2RlKG90aGVyLm1fY29kZSkKKyAgICAgICAgLCBtX2NhY2hl
ZFNjcmlwdChvdGhlci5tX2NhY2hlZFNjcmlwdCkKKyAgICB7CisgICAgfQorCisgICAgU2NyaXB0
U291cmNlQ29kZSYgb3BlcmF0b3I9KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIG90aGVyKQorICAg
IHsKKyAgICAgICAgbV9wcm92aWRlciA9IG90aGVyLm1fcHJvdmlkZXIuY29weVJlZigpOworICAg
ICAgICBtX2NvZGUgPSBvdGhlci5tX2NvZGU7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gb3Ro
ZXIubV9jYWNoZWRTY3JpcHQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvZGUubGVuZ3RoKCkgPT0gMDsgfQogCiAg
ICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGU7IH0KQEAgLTc1LDcgKzkwLDM3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTY3JpcHQqIGNh
Y2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgpOyB9CiAKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXItPnVybCgpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UoKS50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkgPDwgdXJsKCkgPDwgc3RhcnRMaW5lKCkgPDwgc3RhcnRDb2x1bW4oKSA8
PCBtX3Byb3ZpZGVyLT5zb3VyY2VUeXBlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmlwdFNvdXJjZUNvZGU+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBVUkwgdXJsOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGludCBzdGFydExp
bmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnRMaW5lKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaW50IHN0YXJ0Q29sdW1uOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0Q29sdW1uKSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291
cmNlVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc291cmNlVHlwZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgICAgICByZXR1cm4gU2Ny
aXB0U291cmNlQ29kZSB7IHNvdXJjZSwgV1RGTW92ZSh1cmwpLCBUZXh0UG9zaXRpb24geyBPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRMaW5lKSwgT3JkaW5hbE51bWJlcjo6ZnJv
bU9uZUJhc2VkSW50KHN0YXJ0Q29sdW1uKSB9LCBzb3VyY2VUeXBlIH07CisgICAgfQorCiBwcml2
YXRlOgogICAgIFJlZjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAgIEpTQzo6
U291cmNlQ29kZSBtX2NvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMGQ4MzE5MjUyNzgyZGE5
NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MS4uMTRkMjVhODVhNTY2OTUwMzZmZTU1NzFlNjI4OWMx
YTZlMjFhYmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZGlzcGF0Y2hNZXNzYWdlQXN5bmMoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlT2JqCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2
YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKICAgICBhdXRvJiBz
dGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSk7
Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9
PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IGV4cHJlc3Npb24gfSwgRXhlY3V0
ZVdpdGhVc2VyR2VzdHVyZTo6Tm8gfSkudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAidHJ1ZSI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCmluZGV4IDZlYWZjYTM0ZTgxYTM5OTJkZDFmYjgwZjkwMzJlYjk2YzhiOWI3NzYuLjA0Mjc4
NjVhMGRjZTdhMWFlZTk1YzM3MjVkMDc0NjRjZmJiNGE1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFw
V2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFrUHRyKGZyYW1l
LT5zY3JpcHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVk
Q29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYg
c2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKKyAgICAgICAgICAgICAgICBzY3Jp
cHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyB7IHNjcmlwdCB9
LCBFeGVjdXRlV2l0aFVzZXJHZXN0dXJlOjpObyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAg
IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0
MWM1NmZhZGJmLi5jY2I1ZjQ3ZGZjNGQ4ZDBlNTk1YjU2ODIxNzJlZjliNWZhMDkzODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VT
dGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5z
dHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIHRydWUgfSwg
W2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFs
dWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwgKGVycm9y
ICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRl
KCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhYjg5NzgwZTJlZTM2ZWZjZjNi
YjFiMjUyNGIzNWQ0NGZjNmUxZTYxLi40YzdhMDQ1ZDhmNjc4MzYwMDE4NTgwMzFjMDc1NWYxMzg5
NDc2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpCiB7CiAg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0g
ICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5nLCBmb3Jj
ZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0
YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAg
ICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0cmluZywgKGJv
b2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNv
ZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ODBiZmI5ZTY5MDc4ZmYw
NGFkNWM2ZTdkODU4ZTQ4ZjFmNDQ5ODY2Li5lOGQzNjk0MjVkODNkMDJlN2QzMGFhMDg4ODY5M2Vk
YjljNTRiYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTM4NDUsMTIgKzM4NDUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9j
ZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5j
aFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoSmF2YVNjcmlwdEV4ZWN1dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhj
ZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwor
ICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdURk1vdmUocGFyYW1ldGVy
cyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBG
b3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2Vi
VmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlh
bFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2MSwxNCArMzg2MSwxNSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGRO
YW1lLCBjYWxsYmFja0lEKSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxk
TmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFp
bkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
RnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5G
cmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCB7
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDAyNzRk
N2NlMmY0MzY4MTU0Y2NiNjc5MjVjZDBmOWRhNDNjMjljZDUuLmE0ZDAzZTFiNDc0NjRkMmJiMWQx
YzhjNzFiYTM3ZmYwZDJkNmVlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4gLy8g
RklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBvd24gZmlsZSBhbmQg
c3RvcCBpbmNsdWRpbmcgdGhpcy4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9KYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
b3V0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC0xMDYxLDggKzEwNjIsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJz
JiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKwogICAgIC8vIEZvciBz
dWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1Yzg1ZmMxNTQ5NGUxYjIyMzE1NmEzNTRjYWE5ZDJiMmY2ZTg5YjlkLi5hNzBlMWUzYTY2
ZjVhNDEyYjlkZmZmM2I2NmYwYjU2MzA5NzZiNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjUsNiArMzUyNSw4IEBACiAJCTUx
ODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDRjEwMTJCMDE1Rjgw
MEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0NyZWRlbnRpYWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MThCNTA1ODIzODYwMTBGMDA4MDg0QzMgLyogUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5KYXZhU2NyaXB0QXJndW1l
bnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QjUwNTkyMzg2MDEwRjAw
ODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4RDJDQUMx
MkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MThFOEVGMzE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NTM3LDYgKzU1MzksOCBAQAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1BhY2tldE9wdGlv
bnMuY3BwICovLAogCQkJCTQxQjI4QjA4MUY4M0FEM0UwMEZCNTJBQyAvKiBSVENQYWNrZXRPcHRp
b25zLmggKi8sCisJCQkJNTE4QjUwNTgyMzg2MDEwRjAwODA4NEMzIC8qIFJ1bkphdmFTY3JpcHRB
cmd1bWVudHMuY3BwICovLAorCQkJCTUxOEI1MDU5MjM4NjAxMEYwMDgwODRDMyAvKiBSdW5KYXZh
U2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2RjBBMjAwMjM5
NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQlFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2
NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAzZWEwMDZiM2Nl
MzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwLi43YzVjY2E3MWI4NmFkNDlhZjg2OGQzMWNm
NTI0ZTMyM2M2ZWZhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
ZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBF
dmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0
IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAg
IC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVn
aW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQ
b3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dElnbm9yaW5nRXhjZXB0aW9uKHsganNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgfSk7
CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2NDQ1YWE1YTcyNTZkNmJhODdkNzM2
ZjI2YmFkYzcxYTk4MDhlNGQwLi5jNDNhOGVhZGMxMzc4YzY4YTFjOTg0NWJiN2EwN2M4Njk3NjBm
OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzM1Miw0NSArMzM1Miw0NiBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJ
TW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVm
YXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUg
Y2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBv
biBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAg
IEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gcmVz
dWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFtZSgp
ICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0
KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAg
ICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShm
cmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAgIHRvUmVmKGZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQo
KSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIHsgeyAiVW5hYmxlIHRv
IGRldGVybWluZSBjb250ZXh0IGZvciBleGVjdXRpbmcgc2NyaXB0Il9zIH0gfSwgY2FsbGJhY2tJ
RCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgIGF1dG8gcmVz
b2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJv
dGVjdGVkV29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIHdvcmxkLCBwcm90ZWN0ZWRGcmFtZSA9IG1h
a2VSZWYoKmZyYW1lKSwgZnJhbWUsIGNhbGxiYWNrSURdIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3Vs
dCkgeworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ugc2VyaWFsaXplZFJlc3VsdERhdGFSZWZl
cmVuY2U7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAgICAg
ICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgYXV0byBzZXJpYWxpemVkUmVzdWx0VmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQo
d29ybGQpLCB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3
b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOworICAgICAgICAg
ICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVk
UmVzdWx0RGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSB7ICJFcnJv
ciBzZXJpYWxpemluZyByZXN1bHQgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQiX3MgfTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7
CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwotICAgIGlmICghcmVz
dWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhzZXJpYWxpemVkUmVzdWx0
RGF0YVJlZmVyZW5jZSwgZXhjZXB0aW9uRGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGNvbW1vblZNKCkpOworICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewotICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwg
Zm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2Ny
aXB0KG1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxi
YWNrSUQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFT
Y3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBjYWxs
YmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBX
VEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRz
QXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE1ZGI0Yjg5ZDZjOGE3YjgyZDFkZGY2YjY3NDU0NDA1
NTYyZjE4ODguLmUxZDNkMDVmNTQ2NTM4ZjBhMDMyZDZmZjRmZDZlMjU4Y2I2NDg4YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5NSw2ICsxOTUs
NyBAQCBzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVy
Owogc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Oworc3Ry
dWN0IEphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IEtleXByZXNzQ29tbWFu
ZDsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogc3RydWN0IFRleHRDaGVja2luZ1Jl
c3VsdDsKQEAgLTE0MzQsOSArMTQzNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdl
YkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNr
SUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNv
cmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpKYXZhU2NyaXB0RXhlY3V0aW9uUGFyYW1ldGVycyYmLCBDYWxsYmFja0lEKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3Jl
OjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50
MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOTliMzJmZWY3ODQ5YTBk
NWY4YjNiNTNmNmQ0MjUwZmY1NDE1MDUwMS4uMGFlNmNjMDlmNWVkMGVlMjcyMzRlZWViNzE1MjZh
ZjI2MzM5YzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsOCArMjA0LDggQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxT
dHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVu
SmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmlu
ZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdl
YkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFs
PFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBS
dW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OkphdmFTY3JpcHRFeGVjdXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIAogICAgIFNlbGVjdEFsbCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW0KaW5kZXggZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYy4uN2Fh
OTAxYWM0MTViY2MzZDQ5NDk2MDFjZjAzYjQzMzE4MTRmNTk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwg
YXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07
CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJW
aWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVk
VVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsKKyAgICAgICAgY29yZShb
bV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgp
LnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFj
dHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10gfSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZl
RGlhbG9nKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAg
ICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJv
bnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0
dWFsVVJMIGFic29sdXRlU3RyaW5nXV0pOworICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250
cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0SWdub3JpbmdFeGNlcHRpb24oeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3Bl
Y3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddXSB9KTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNzhjYzMzZWJhMTVhNmUwZjE2MmE2MDlkMzhiMmU3
Y2UwODVjM2YwOC4uMWYxODNhNGQ5Y2YxODM2ZmU1M2RmNTc4ZjU0NmJmMzE2NWQyOTZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyAr
NzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBq
c2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbih7IHN0cmluZywgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9KTsKIAogICAg
IGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQg
b3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2LDcg
KzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+ZG9j
dW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsg
Ly8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAK
LSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCBzdHJpbmcsIHRy
dWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigqY29yZSh3b3JsZCksIHsgc3Ry
aW5nLCB0cnVlIH0pOwogCiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkg
Ly8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAg
ICAgICAgIHJldHVybiBAIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggOTYxZTA1Y2YxYzIyOWRlMTEwNDZiN2M0ZmI4MzRmNTMzOWJiODIyNS4uNmFl
YjZmYTQ4ZTQyNmZjMGU1ODEzYmEwZmM0YTNkNTk5NTNlOGI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcgQEAgLSAoTlNB
cHBsZUV2ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOihOU1N0cmluZyAqKXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
c2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oeyBzY3JpcHQsIHRydWUgfSk7CiAg
ICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2Jq
ZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4MTYwZGExNGFjMDA5Mzk2
ODBjMjJkZWRjMmEyNWQzYzNhNmUzMGE5Li5mNDAzOWY1Y2Y5MTJhNzljNGNkMjc0ZWJjYTIwMTRi
NzhmZmU0ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1
ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgCiAgICAgLy8gRXhlY3V0aW5nIGEgc2Ny
aXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZpZXcgdG8gYmUgZGVzdHJveWVkLCBzbyB3ZSBrZWVw
IGEgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwcm90ZWN0b3IodGhp
cyk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBz
KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKHsganNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9w
dXBzKCkgfSk7CiAKICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzTnVsbCgpKSB7CiAgICAgICAg
IENTdHJpbmcgY3N0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCBjNzc4
ZTIyYjcwZGNmMTg1NTIyY2E2ZTIwOWI4NzA5MTk1YjUxNDE3Li41ZDRkOTNlNTQ4YjlhNjI1M2I3
ZDdkYzU5NmViNGQ3MGFlZDQ0ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZChJV2ViU2NyaXB0V29ybGQqIGlXbwogICAgIC8vIEdl
dCB0aGUgZnJhbWUgZnJvbWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0dGxlZCBvbi4KICAg
ICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7
CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHdvcmxk
LT53b3JsZCgpLCBzdHJpbmcsIHRydWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24od29ybGQtPndvcmxk
KCksIHsgc3RyaW5nLCB0cnVlIH0pOwogCiAgICAgaWYgKCFmcmFtZSkgLy8gSW4gY2FzZSB0aGUg
c2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBT
X09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlNzJlYTQzZWRiNzljOGEw
MjFjYzZkZmMxOGE5OWQ1YmMwOGUzZmI5Li4wODYxNDhlZjE0ZTMzMTNmNmYwMWExYjAxMzA5ODI4
MTBkNTk0YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMzY2Myw3ICsz
NjYzLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZyhfSW5fIEJTVFIgc2NyaXB0LCAvLyBhc3MKICAgICBpZiAoIWNvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uUmVz
dWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
V1RGOjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25SZXN1
bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbih7
IFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUgfSk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25S
ZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0
aW9uUmVzdWx0LmlzU3RyaW5nKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385835</attachid>
            <date>2019-12-16 17:12:44 -0800</date>
            <delta_ts>2019-12-16 21:00:38 -0800</delta_ts>
            <desc>WIP to take home might not even build.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10433</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggNWY1YmFhMjA2MzguLjA1YjVlYzUwNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTA5LDExICsxMDksMjEgQEAgU2NyaXB0
Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7Ci0gICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKKyAgICBib29sIGNh
bGxlZCA9IGZhbHNlOworICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZTsKKyAgICBhdXRvIHJlc29sdmVG
dW5jdGlvbiA9IFsmXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworICAgICAgICBpZiAocmVz
dWx0KQorICAgICAgICAgICAgdmFsdWUgPSByZXN1bHQudmFsdWUoKTsKKyAgICAgICAgY2FsbGVk
ID0gdHJ1ZTsKKyAgICB9OworCisgICAgZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxk
LCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOworCisgICAgQVNTRVJUKGNhbGxlZCk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCi1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFw
cGVyV29ybGQmIHdvcmxkKQordm9pZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHdvcmxkLnZtKCkpOwogCkBAIC0xNDksMTAgKzE1OSwxMSBAQCBWYWx1ZU9yRXhjZXB0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyYwogICAgIH0KIAogICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0g
ICAgaWYgKG9wdGlvbmFsRGV0YWlscykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpv
cHRpb25hbERldGFpbHMpOwogCi0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIGlmIChvcHRp
b25hbERldGFpbHMpCisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZCgqb3B0
aW9uYWxEZXRhaWxzKSk7CisgICAgZWxzZQorICAgICAgICByZXNvbHZlRnVuY3Rpb24ocmV0dXJu
VmFsdWUpOwogfQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25v
cmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtNTY1
LDM1ICs1NzYsNjIgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAogSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxk
LCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQu
dmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CisgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKKyAg
ICBKU0M6OkpTVmFsdWUgdmFsdWU7CisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbJl0oVmFs
dWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAg
IHZhbHVlID0gcmVzdWx0LnZhbHVlKCk7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfTsK
KyAgICAKKyAgICBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOworCisgICAgQVNTRVJUKGNhbGxlZCk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFJlc29sdmVGdW5jdGlvbiYmIHJl
c29sdmVGdW5jdGlvbikKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0
ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkp
LCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0s
IENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQo
KSkpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IEpTVmFs
dWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KLSAgICBpZiAoIWNhbkV4ZWN1
dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpIHx8IGlzUGF1c2VkKCkpIHsKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKEpTQzo6SlNWYWx1
ZSB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5X
b3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUs
IHdvcmxkLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCiBKU0M6OkpTVmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQogewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Ci0gICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKKworICAgIGJvb2wg
Y2FsbGVkID0gZmFsc2U7CisgICAgSlNDOjpKU1ZhbHVlIHZhbHVlOworICAgIGF1dG8gcmVzb2x2
ZUZ1bmN0aW9uID0gWyZdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIGlmIChy
ZXN1bHQpCisgICAgICAgICAgICB2YWx1ZSA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICBjYWxs
ZWQgPSB0cnVlOworICAgIH07CisKKyAgICBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3
b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikp
OworCisgICAgQVNTRVJUKGNhbGxlZCk7CisgICAgcmV0dXJuIHZhbHVlOwogfQotVmFsdWVPckV4
Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFJlc29sdmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikK
IHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgaWYgKCFz
aG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQg
c2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7
IH0gfSk7CisgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKSB7
CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxz
IHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9y
IHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUpOworCisgICAgZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VV
c2VyR2VzdHVyZSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CmluZGV4IGEzZjZjM2FmNThjLi4wMTA0NjU3ODQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtOTAsMTEgKzkwLDEzIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3Js
ZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
VmFsdWVPckV4Y2VwdGlvbik+OwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRp
b24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVV
c2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgUmVzb2x2ZUZ1bmN0aW9uJiYpOworICAg
IEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgYm9v
bCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmKSBjb25zdDsKIApAQCAtMTA1
LDEwICsxMDcsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0
aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQs
IGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygp
OwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0g
ICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3Js
ZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1v
ZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBsb2Fk
TW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVT
Y3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTcwLDYgKzE2OCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIHdpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNjcmlwdFVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZhc2NyaXB0VVJM
OyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBSZXNv
bHZlRnVuY3Rpb24mJik7CisgICAgdm9pZCBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYsIFJlc29sdmVGdW5jdGlvbiYmKTsKKwogICAgIHZv
aWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIEpTQzo6
SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgZGlzY29u
bmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2NDQ1YWE1YTcyNS4uNjFlYjdlMTE5OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzU3LDI4
ICszMzU3LDMzIEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlCiAgICAgLy8gTk9URTogV2UgbmVl
ZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2Ug
ZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9u
LgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2Vw
dGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29y
ZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxk
KCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIkNvdWxk
IG5vdCBydW4gSmF2YVNjcmlwdC4gUGFnZSBpbiBpbnZhbGlkIHN0YXRlLiJfcyB9LCBjYWxsYmFj
a0lEKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlv
biA9IFtwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgZnJhbWUsIHByb3RlY3RlZFdv
cmxkID0gbWFrZVJlZigqd29ybGQpLCB3b3JsZCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0aGlzLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworICAgICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisK
ICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxk
KHdvcmxkKSwKICAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlw
dCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51
bGxwdHIpOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSkKKyAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUt
PmRhdGEoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Ci0gICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0
YWlscywgY2FsbGJhY2tJRCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkp
OworICAgIH07CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFt
ZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdv
cmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEZNb3ZlKHJlc29s
dmVGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUs
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385852</attachid>
            <date>2019-12-16 21:00:40 -0800</date>
            <delta_ts>2019-12-19 22:09:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191216210039.patch</filename>
            <type>text/plain</type>
            <size>13385</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5OGEwMzM5MmIyNDRj
ZWM1ZmE0NWUzMWY5MDNlZTg3MjQ3M2QwMi4uODIxODM4YWE3M2NjYmI5ZDU2MDFjZTFmNThmNGU1
MjJjZjE1MmI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTEyLTE2ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyOmV2YWx1YXRlSW5Xb3JsZCB0byBzdXBwb3J0IGFzeW5jaHJvbm91cyBvcGVyYXRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUy
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpCisKKyAgICAgICAgQW4gdXBj
b21pbmcgcGF0Y2ggd2lsbCByZXF1aXJlIFNjcmlwdENvbnRyb2xsZXIgdG8gc3VwcG9ydCBhc3lu
Y2hyb25vdXMgY2FsbGJhY2tzIHVwb24KKyAgICAgICAgY29tcGxldGlvbiBvZiBKYXZhU2NyaXB0
IGV2YWx1YXRpb24sIGluc3RlYWQgb2YgaGF2aW5nIGEgcmV0dXJuIHZhbHVlLgorICAgICAgICAK
KyAgICAgICAgTGV0J3MgcmVmYWN0b3IgZm9yIHRoYXQgbm93LCBqdXN0IGFsd2F5cyBjYWxsaW5n
IHRoZSBhc3luYyBjYWxsYmFjayBzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogYmluZGluZ3Mv
anMvRXhjZXB0aW9uRGV0YWlscy5oOiBNYWtlIG9sZGVyIGNvbXBpbGVycyBoYXBweS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDE5LTEy
LTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyIHNob3VsZCBvYnNlcnZlIG5ld2x5IGluc2VydGVkIG9yIGRpc3Bs
YXllZCBjb250ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMjA5ZGU4ZWMzMmFhYTM2Nzg1ZmRiODEzNTQ1ODMx
ODNjYjY1MmQyLi4xMWEyNmY0MTcwZGM4ODc5NTkxZmM0NTA0MWY3NTM2NzdhODgzZmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEyLTE2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVyOmV2YWx1YXRl
SW5Xb3JsZCB0byBzdXBwb3J0IGFzeW5jaHJvbm91cyBvcGVyYXRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisK
IDIwMTktMTItMTYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgLVtVSVdLRG9jdW1lbnRDb250ZXh0IG1hcmtlZFRleHRSYW5nZV0gaXMgd3Jvbmcgd2hl
biB0aGUgY2FyZXQgaXMgbm90IGF0IHRoZSBzdGFydCBvZiBtYXJrZWQgdGV4dApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3
OTUyZmQwYzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjExNDExOThkMmJjM2I5ZDMzZDQ1NzMyYWVl
MWQ0YzY0OTFlNmY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4
Y2VwdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRp
b25EZXRhaWxzLmgKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFpbHMgewog
ICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwogICAgIGludCBj
b2x1bW5OdW1iZXIgeyAwIH07Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICBTdHJpbmcgc291
cmNlVVJMIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWY1YmFhMjA2Mzgz
NThjMGJiODJiMzdiY2VhMjZjYWQ5OGVmNjRhYS4uMDViNWVjNTA2OTg3NTYwN2VkNTczMWZlZmQy
NGZjYmZkNWMzN2I1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTEwOSwxMSArMTA5LDIxIEBAIFNjcmlwdENvbnRyb2xsZXI6On5T
Y3JpcHRDb250cm9sbGVyKCkKIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBldmFs
dWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwotICAgIHJldHVybiByZXN1bHQgPyByZXN1
bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CisgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsK
KyAgICBKU0M6OkpTVmFsdWUgdmFsdWU7CisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbJl0o
VmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAg
ICAgIHZhbHVlID0gcmVzdWx0LnZhbHVlKCk7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAg
fTsKKworICAgIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgV1RGTW92ZShyZXNv
bHZlRnVuY3Rpb24pKTsKKworICAgIEFTU0VSVChjYWxsZWQpOworICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJlc29sdmVGdW5j
dGlvbiYmIHJlc29sdmVGdW5jdGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52
bSgpKTsKIApAQCAtMTQ5LDEwICsxNTksMTEgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmMKICAg
ICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIGlmIChvcHRpb25h
bERldGFpbHMpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxz
KTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQor
ICAgICAgICByZXNvbHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscykp
OworICAgIGVsc2UKKyAgICAgICAgcmVzb2x2ZUZ1bmN0aW9uKHJldHVyblZhbHVlKTsKIH0KIAog
SlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24o
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKQEAgLTU2NSwzNSArNTc2LDYyIEBA
IEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNl
cHRpb24oY29uc3QgU3RyaW5nJiBzY3JpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3Jj
ZVVzZXJHZXN0dXJlKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6
OkpTVmFsdWUgeyB9OworICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7CisgICAgSlNDOjpKU1ZhbHVl
IHZhbHVlOworICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gWyZdKFZhbHVlT3JFeGNlcHRpb24g
cmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICB2YWx1ZSA9IHJlc3Vs
dC52YWx1ZSgpOworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH07CisgICAgCisgICAgZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGTW92
ZShyZXNvbHZlRnVuY3Rpb24pKTsKKworICAgIEFTU0VSVChjYWxsZWQpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQordm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24p
CiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJH
ZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNl
Q29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9u
KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKIAogICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91bGQgcmV0
dXJuIGFuIEV4Y2VwdGlvbkRldGFpbHMuCi0gICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNl
ZCgpKSB7CisgICAgICAgIHJlc29sdmVGdW5jdGlvbihKU0M6OkpTVmFsdWUgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAotICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29k
ZSwgd29ybGQpOworICAgIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgV1RGTW92
ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdv
cmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgIHJldHVybiByZXN1bHQgPyByZXN1
bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CisKKyAgICBib29sIGNhbGxlZCA9IGZhbHNl
OworICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZTsKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFsm
XShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0KQorICAgICAg
ICAgICAgdmFsdWUgPSByZXN1bHQudmFsdWUoKTsKKyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAg
ICB9OworCisgICAgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKKworICAgIEFTU0VS
VChjYWxsZWQpOworICAgIHJldHVybiB2YWx1ZTsKIH0KLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKwor
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24pCiB7CiAgICAgYXV0byYg
ZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIGlmICghc2hvdWxkQWxsb3dVc2Vy
QWdlbnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4
Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhp
cyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgIGlm
ICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50KSkgeworICAgICAgICByZXNv
bHZlRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
cnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFz
b25zIl9zLCAwLCAwLCB7IH0gfSkpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgZG9j
dW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVj
dXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKworICAg
IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdU
Rk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hv
dWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhM2Y2YzNh
ZjU4YzAxYTAxNzA4MzUyMzliYWFmNTk1NjMzOTBjZjRhLi4wMTA0NjU3ODQzMTNiMGJhYjViODY5
ZjUxYzQwZWNjMjU4ZTdlZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC05MCwxMSArOTAsMTMgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAorICAg
IHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0
aW9uKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOwogICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBw
ZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlLCBSZXNvbHZlRnVuY3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVl
IGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAg
IEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAgKzEwNyw2IEBA
IHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQg
aXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJh
bnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
Jik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhj
ZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9k
dWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJh
bWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7CkBAIC0xNzAsNiArMTY4LDkgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbFJlcGxh
Y2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZhc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV93
aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3JpcHRVUkw7IH0KIAogcHJpdmF0
ZToKKyAgICB2b2lkIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFJlc29sdmVGdW5jdGlvbiYm
KTsKKyAgICB2b2lkIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9N
V3JhcHBlcldvcmxkJiwgUmVzb2x2ZUZ1bmN0aW9uJiYpOworCiAgICAgdm9pZCBzZXR1cE1vZHVs
ZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgSlNDOjpKU0ludGVybmFsUHJv
bWlzZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0UGxhdGZvcm1T
Y3JpcHRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDY0NDVhYTVhNzI1NmQ2YmE4N2Q3MzZmMjZiYWRjNzFhOTgwOGU0ZDAuLjYx
ZWI3ZTExOThhZTcxNmYyNmNiMGY2NzcwNDYwNzBhYzQyZjUwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzU3LDI4ICszMzU3LDMzIEBA
IHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlCiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJl
ZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRv
bid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgSlNM
b2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVl
OwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
Ojpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYg
d29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5l
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNjcmlwdCwg
Zm9yY2VVc2VyR2VzdHVyZSk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgp
IHx8ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlw
dFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIkNvdWxkIG5vdCBydW4gSmF2
YVNjcmlwdC4gUGFnZSBpbiBpbnZhbGlkIHN0YXRlLiJfcyB9LCBjYWxsYmFja0lEKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0
ZWRGcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgZnJhbWUsIHByb3RlY3RlZFdvcmxkID0gbWFrZVJl
Zigqd29ybGQpLCB3b3JsZCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBj
YWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworICAgICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisKICAgICAgICAgaWYg
KHJlc3VsdCkgewogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKICAg
ICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9i
amVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwogICAg
ICAgICB9Ci0gICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0g
ICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAg
ICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKIAot
ICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgT3B0aW9uYWw8RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJh
Y2tJRCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVl
Q2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CisK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1l
KCktPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29y
bGQoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxk
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386182</attachid>
            <date>2019-12-19 22:09:55 -0800</date>
            <delta_ts>2019-12-23 10:38:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191219220954.patch</filename>
            <type>text/plain</type>
            <size>59562</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5OGEwMzM5MmIyNDRj
ZWM1ZmE0NWUzMWY5MDNlZTg3MjQ3M2QwMi4uZGY4M2Y3M2VlNzk3ODZlYTJlM2NhMTM0YjhiODdl
ZDVmZjMwNjI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTE5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlciBzaG91bGQgb2JzZXJ2ZSBuZXdseSBpbnNlcnRlZCBvciBkaXNwbGF5ZWQgY29udGVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzIwOWRlOGVjMzJhYWEzNjc4NWZkYjgxMzU0NTgzMTgzY2I2NTJkMi4u
NzEwOTJlOTk1MjJjMDE3ZmIwZTUyZDZkZTVkZmM0ZGRjMGU0OGQzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOS0xMi0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5jdGlvbiB3aXRo
IGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpzaGFyZWRDb250ZXh0KToKKyAgICAg
ICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHZh
bGlkYXRlQXJndW1lbnQpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlw
dDphc0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOndp
dGhBcmd1bWVudHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpmb3JjZVVzZXJHZXN0
dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIC1bVUlXS0RvY3VtZW50Q29udGV4dCBtYXJrZWRUZXh0UmFu
Z2VdIGlzIHdyb25nIHdoZW4gdGhlIGNhcmV0IGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgbWFya2Vk
IHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1NTExZTBlMjAyMzg5ODI4Mzg2OGQ1MmMwMDUyOTYzOGQzNGZkODRkLi4zNzY3
YjlmZTEyYWJhMDA0ZWVlMjc0OTRkMGNiMDJmZGNmNWVmYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTMwLDYgKzE1MzAs
NyBAQAogCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFCQkI1
Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
NEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0
ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJFMzdFMDBEQUVFMDBF
MDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQzBB
QTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgzMzAsNiArODMzMSw3IEBACiAJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJ
REJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFj
a2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkE0QUM4MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQTk0NkYy
M0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdl
QXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyog
Q2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJh
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAwRjJBQTE1RTAwMTY0
OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Mzk0
LDYgKzI1Mzk2LDcgQEAKIAkJCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQgLyogUmVhZGFibGVT
dHJlYW0uaCAqLywKIAkJCQk0MThDMzk1RTFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEz
IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLywKKwkJCQk1MUJBOTQ2RjIz
QUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLywKIAkJCQk0MUYx
RDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJ
CQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8s
CiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICov
LApAQCAtMzIxMTYsNiArMzIxMTksNyBAQAogCQkJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAv
KiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTIxNjFFN0YzRjAwQzJFNjUy
IC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBNDE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTk0NzEyM0FDMzA1MzAw
NDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDc2QkI4MjE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NjlEMjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9k
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlv
bkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRhYmRjZWE3M2UzYzVh
Li4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0zMyw3ICszMyw3IEBA
IHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQg
bGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmlu
ZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjJhMTQ2NDVmNzY2NGI0YWNmNDBiNDVi
ZjA5YzJiYTU3NTQzYjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBSdW5Bc0FzeW5jRnVuY3Rp
b24geworICAgIE5vLAorICAgIFllcywKK307CisKK2VudW0gY2xhc3MgRm9yY2VVc2VyR2VzdHVy
ZSB7CisgICAgTm8sCisgICAgWWVzLAorfTsKKworc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzIHsKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Ym9vbCBydW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHMsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKKyAgICAgICAgOiBzb3VyY2Uoc291cmNlKQorICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlv
bihydW5Bc0FzeW5jRnVuY3Rpb24gPyBSdW5Bc0FzeW5jRnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5
bmNGdW5jdGlvbjo6Tm8pCisgICAgICAgICwgYXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkK
KyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJlKGZvcmNlVXNlckdlc3R1cmUgPyBGb3JjZVVzZXJH
ZXN0dXJlOjpZZXMgOiBGb3JjZVVzZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFJ1bkFzQXN5bmNG
dW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHMsIEZvcmNlVXNlckdlc3R1cmUg
Zm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2Uoc291cmNlKQorICAgICAgICAsIHJ1
bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAgICwgYXJndW1lbnRz
KFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJlKGZvcmNlVXNl
ckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBzb3VyY2U7CisgICAgUnVuQXNB
c3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOworICAgIEZv
cmNlVXNlckdlc3R1cmUgZm9yY2VVc2VyR2VzdHVyZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBlbmNvZGVyIDw8IHNvdXJjZSA8PCBydW5Bc0FzeW5jRnVuY3Rpb24gPDwgYXJndW1lbnRz
IDw8IGZvcmNlVXNlckdlc3R1cmU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIFN0cmluZyBzb3VyY2U7CisgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShydW5Bc0FzeW5jRnVuY3Rpb24pKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VVc2VyR2VzdHVyZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmb3JjZVVzZXJHZXN0dXJlKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHsgeyBzb3VyY2UsIHJ1bkFz
QXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHMpLCBmb3JjZVVzZXJHZXN0dXJlIH0gfTsK
KyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJ1bkFzQXN5bmNGdW5jdGlv
bj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlJ1
bkFzQXN5bmNGdW5jdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6UnVuQXNBc3luY0Z1bmN0aW9uOjpO
bywKKyAgICAgICAgV2ViQ29yZTo6UnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMKKyAgICA+OworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpGb3JjZVVzZXJHZXN0dXJl
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Rm9y
Y2VVc2VyR2VzdHVyZSwKKyAgICAgICAgV2ViQ29yZTo6Rm9yY2VVc2VyR2VzdHVyZTo6Tm8sCisg
ICAgICAgIFdlYkNvcmU6OkZvcmNlVXNlckdlc3R1cmU6OlllcworICAgID47Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA1ZjViYWEyMDYzODM1OGMwYmI4MmIzN2JjZWEyNmNhZDk4ZWY2
NGFhLi44YTYxNDdkM2RlYThlMzVlODUzZjVmZGNlNzQ0MjMzMTgyZjNiMTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGlu
YXRvci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIK
ICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTEgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkK
IAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVT
Y3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGF1dG8g
cmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBmYWxzZSwgV1RG
OjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1
bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK1ZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewot
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVy
ZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
c2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBK
U0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hl
cjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7CisgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0ZXJzLmZvcmNlVXNlckdlc3R1cmUg
PT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
U3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwogCiAgICAgLy8g
RklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IEpTVmFsdWUsIHNob3VsZCByZXR1
cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0
VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgc3dpdGNo
IChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikgeworICAgIGNhc2UgUnVuQXNBc3luY0Z1
bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUocGFyYW1l
dGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9u
KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKKyAgICAgICAg
cmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgfQorICAgIGNh
c2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAgICAgIHJldHVybiBjYWxsSW5Xb3JsZChX
VEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAgfQorfQorCitWYWx1ZU9yRXhjZXB0aW9u
IFNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQocGFyYW1l
dGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMpOworICAg
IEFTU0VSVChwYXJhbWV0ZXJzLmFyZ3VtZW50cyk7CisKKyAgICBhdXRvJiBwcm94eSA9IGpzV2lu
ZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpwcm94eS53aW5kb3co
KTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrZWRBcmd1bWVudHM7CisgICAgU3RyaW5n
QnVpbGRlciBmdW5jdGlvblN0cmluZ0J1aWxkZXI7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsK
KworICAgIC8vIEJ1aWxkIHVwIGEgbmV3IHNjcmlwdCBzdHJpbmcgdGhhdCBpcyBhbiBhc3luYyBm
dW5jdGlvbiB3aXRoIGFyZ3VtZW50cywgYW5kIGRlc2VyaWFsaXplIHRob3NlIGFyZ3VtZW50cy4K
KyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CisgICAgZm9y
IChhdXRvIGFyZ3VtZW50ID0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmJlZ2luKCk7IGFyZ3VtZW50
ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5lbmQoKTspIHsKKyAgICAgICAgZnVuY3Rpb25TdHJp
bmdCdWlsZGVyLmFwcGVuZChhcmd1bWVudC0+a2V5KTsKKyAgICAgICAgYXV0byBzZXJpYWxpemVk
QXJndW1lbnQgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoV1RG
TW92ZShhcmd1bWVudC0+dmFsdWUpKTsKKworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRShnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIGF1dG8ganNBcmd1bWVudCA9
IHNlcmlhbGl6ZWRBcmd1bWVudC0+ZGVzZXJpYWxpemUoZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAg
ICAgICAgZXJyb3JNZXNzYWdlID0gIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBhcmd1bWVudCB0byBl
eGVjdXRlIGFzeW5jaHJvbm91cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgbWFya2VkQXJndW1lbnRzLmFwcGVuZChqc0FyZ3Vt
ZW50KTsKKworICAgICAgICArK2FyZ3VtZW50OworICAgICAgICBpZiAoYXJndW1lbnQgIT0gcGFy
YW1ldGVycy5hcmd1bWVudHMtPmVuZCgpKQorICAgICAgICAgICAgZnVuY3Rpb25TdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCIpOworICAgIH0KKworICAgIGlmICghZXJyb3JNZXNzYWdlLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyBlcnJv
ck1lc3NhZ2UgfSk7CisKKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpeyIpOwor
ICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQocGFyYW1ldGVycy5zb3VyY2UpOworICAg
IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIn0pIik7CisKKyAgICBhdXRvIHNvdXJjZUNv
ZGUgPSBTY3JpcHRTb3VyY2VDb2RlIHsgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCks
IFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVh
dGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpIH07CisgICAgY29uc3QgYXV0byYganNT
b3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKKworICAgIFN0cmluZyBzb3Vy
Y2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CisgICAgY29uc3QgU3RyaW5n
KiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOworICAgIG1fc291cmNlVVJMID0gJnNvdXJj
ZVVSTDsKKworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOworCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJM
LCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkpOworCisg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgSlNW
YWx1ZSByZXR1cm5WYWx1ZTsKKyAgICBkbyB7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlBy
b2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKKworICAgICAgICAvLyBGSVhNRTogSlMgZ3V5cyBzYXkgdGhlcmUncyBhIG1vcmUg
Y29ycmVjdCB3YXkgdG8gZG8gdGhpcworICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0IHx8ICFm
dW5jdGlvbk9iamVjdC5pc0Z1bmN0aW9uKHdvcmxkLnZtKCkpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhKTsKKyAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogSGFuZGxlCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCgmZ2xvYmFsT2JqZWN0LCBKU0M6
OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERh
dGEsICZwcm94eSwgbWFya2VkQXJndW1lbnRzLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKworICAg
IH0gd2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZh
bHVhdGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBv
cHRpb25hbERldGFpbHM7CisgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKKyAgICAgICAg
RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2Jh
bE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwg
JmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOwor
ICAgIH0KKworICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7CisKKyAgICBpZiAob3B0
aW9uYWxEZXRhaWxzKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0
YWlscyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlKQpAQCAtNTg3LDEzICs2NzksMjcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
RE8KICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9
OwogfQogVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9w
dCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKK30KKworVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFzaG91bGRB
bGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0
cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJs
ZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5
IHJlYXNvbnMiX3MgfSk7CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRT
Y3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQs
IGZvcmNlVXNlckdlc3R1cmUpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cit9CisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rp
b24mJiByZXNvbHZlRnVuY3Rpb24pCit7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKwor
ICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFibGUsIGluc3RhbGwgdGhlIGZ1
bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4KKworICAgIHJl
c29sdmVGdW5jdGlvbihyZXN1bHQpOwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3Vs
ZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1
OGMwMWEwMTcwODM1MjM5YmFhZjU5NTYzMzkwY2Y0YS4uNzFkNDk4NjViNmUxN2FkMGU2YzAzZDM0
NTMzMmUwMGQyZWVjODJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJU
eXBlcy5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpA
QCAtNjIsNyArNjMsMTEgQEAgY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3MgU2Ny
aXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2lkZ2V0OworCitl
bnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5jdGlvbjsKKwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7
CitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM7CiAKIGVudW0gUmVhc29uRm9yQ2FsbGlu
Z0NhbkV4ZWN1dGVTY3JpcHRzIHsKICAgICBBYm91dFRvQ3JlYXRlRXZlbnRMaXN0ZW5lciwKQEAg
LTkwLDExICs5NSwxNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMo
VmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCisgICAgdXNpbmcgQXJndW1lbnRXaXJl
Qnl0ZXNNYXAgPSBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+PjsKKyAgICB1c2luZyBS
ZXNvbHZlRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+Owor
CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFs
c2UpOwogICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3Js
ZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGVjdXRlQXN5bmNocm9ub3VzVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBSZXNvbHZlRnVuY3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1
ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBib29sIHNob3VsZEFsbG93VXNlckFnZW50U2Ny
aXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDUsMTAgKzExNSw2IEBAIHB1YmxpYzoKICAg
ICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2Fs
bCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZXZh
bHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgSlND
OjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1
YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0K
ICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBE
T01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1
bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFt
ZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1
bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CkBA
IC0xNzAsNiArMTc2LDExIEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxSZXBsYWNlV2l0aFJlc3Vs
dE9mRXhlY3V0aW5nSmF2YXNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFJlcGxhY2VX
aXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZhc2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CisgICAgVmFs
dWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdy
YXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JFeGNl
cHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJik7CisgICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JFeGNl
cHRpb24gY2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBE
T01XcmFwcGVyV29ybGQmKTsKKyAgICAKICAgICB2b2lkIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxl
cnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlJiwgRE9NV3Jh
cHBlcldvcmxkJik7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RQbGF0Zm9ybVNjcmlwdE9iamVjdHMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCA1NGMzNGU4ODg0YzI0Y2NiODI0ZTZkMmJjZmQzNjAyNzc2ODUyNzBlLi4x
ZjQzZTYzYzYxMTJlMGY2NDc2OWE0MTgzMDZjOGI0NmJiMjBkZjFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC02MSw2
ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChf
X09CSkNfXykKICAgICBzdGF0aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlJiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiB3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQpOwogI2VuZGlmCiAKICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCmluZGV4IDBjMTVmOGI5M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2ZmFk
YmYuLmRkNzk2YjgzMzIzNTllMWMzYjFlNTU3NWZkN2EwMzM1M2NiMWZhYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xp
ZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygp
LCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBy
ZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgZmFsc2UsIFdURjo6bnVs
bG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJu
VmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6
OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElT
ZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQppbmRleCBhMjY3M2UyNWMxMTM0MDcxOTEyYzIw
MjhmZDdkZjIyOTY1NGFhMzhlLi40MDVkYTkyMDA2YTExYjgwOWJmMWRmMDY2NGY2ZDgyNGFkZDlm
NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCiAKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1
ZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC01OSwxMSArNjAsMTYgQEAg
cHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1lcjxTaGFyZWRKU0NvbnRleHQ+IG1fdGltZXI7CiB9
OwogCitzdGF0aWMgU2hhcmVkSlNDb250ZXh0JiBzaGFyZWRDb250ZXh0KCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBzaGFyZWRDb250ZXh0OworICAgIHJl
dHVybiBzaGFyZWRDb250ZXh0LmdldCgpOworfQorCiBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBz
aGFyZWRDb250ZXh0OwotICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQuZ2V0
KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRl
eHQoKS5lbnN1cmVDb250ZXh0KCk7CiAKICAgICBKU1ZhbHVlUmVmIHZhbHVlUmVmID0gc2VyaWFs
aXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IGV4Y2VwdGlvbik7CiAgICAgaWYgKCF2YWx1ZVJlZikKQEAgLTczLDQgKzc5LDIwIEBAIGlkIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCitPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJv
bU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1cmVDb250ZXh0KCk7
CisgICAgSlNWYWx1ZSAqdmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0IGlu
Q29udGV4dDpjb250ZXh0XTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8gY29yZVZhbHVlID0gV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9i
YWxPYmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworICAgIHJldHVybiBjb3JlVmFsdWUtPnRv
V2lyZUJ5dGVzKCk7Cit9CisKIH0gLy8gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxMmYwMmExN2U2YzEyNWFkNWRkZTJmYTlhNDI0
ODU1YTdjZjcwN2FjLi40YzYxMzcyMzkwMzUwYWMzYjM4NGUwZDZmYjE1YjY2YzNkM2I2MTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTgyMiwxNCArODIyLDg2IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9yQ29kZShX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZh
U2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2
YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVK
YXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVu
dHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKIH0KIAotLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgorc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKK3sKKyAgICBpZiAo
W2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6
W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVl
OworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIG9i
amVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0
ZUFyZ3VtZW50KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKwor
ICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRP
ZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIGJvb2wgdmFs
aWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1Vz
aW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlQXJndW1lbnQoa2V5KSB8fCAhdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsK
KyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICpzdG9wID0g
WUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBm
b3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBo
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0gICAgX3BhZ2Ut
PnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5nLCBmb3JjZVVzZXJHZXN0
dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2Vi
S2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1l
bnRzTWFwOworICAgIGlmIChhc0FzeW5jRnVuY3Rpb24pCisgICAgICAgIGFyZ3VtZW50c01hcCA9
IFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwIHsgfTsKKyAg
ICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gbmlsOworCisgICAgZm9yIChpZCBrZXkgaW4gYXJn
dW1lbnRzKSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IG5h
bWVzIG11c3QgYmUgc3RyaW5ncyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IAorICAgICAgICBpZCB2YWx1ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OmtleV07CisgICAg
ICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU1N0cmlu
ZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlvbmFyeSI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAgICBhdXRvIHdpcmVCeXRlcyA9IEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3QodmFsdWUpOwor
ICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIGlucHV0IGRpY3Rpb25hcnkgYWJv
dmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRvIHNlcmlhbGl6ZSBpdCBpbnRvIHdpcmUgYnl0ZXMu
CisgICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMpOworICAgICAgICBhcmd1bWVudHNNYXAtPnNldChr
ZXksICp3aXJlQnl0ZXMpOworICAgIH0KKworICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKKyAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVzZXJJbmZvID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgICAgICBbdXNlckluZm8gc2V0
T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9uRm9yRXJyb3JDb2RlKFdLRXJyb3JKYXZhU2NyaXB0
RXhjZXB0aW9uT2NjdXJyZWQpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKKyAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvck1lc3NhZ2UgZm9yS2V5Ol9XS0phdmFTY3Jp
cHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXldOworCisgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9w
dE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQgdXNlckluZm86dXNlckluZm8uZ2V0KCld
KTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2hh
bmRsZXIsIGVycm9yXSB7CisgICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
aWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgICAgIHJhd0hhbmRsZXIobmls
LCBlcnJvci5nZXQoKSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0cmluZywg
KGJvb2wpYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksIChib29sKWZvcmNl
VXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRl
dGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAg
ICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTkyMyw2ICsx
OTk1LDExIEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAgICAgW3NlbGYgY3JlYXRlUERGV2l0
aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0
aW9uSGFuZGxlcl07CiB9CiAKKy0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAq
KWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRz
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiAt
IChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0YQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBlbmNvZGVyLgpAQCAtMjA2NSw3ICsy
MTQyLDcgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZToo
TlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUph
dmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0
OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZv
cmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwog
fQogCiAtICh2b2lkKV91cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAq
KXdlYnNpdGVQb2xpY2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMjUxMTM3NDIzZTA3NjQ0MDIwZmIwNjY2ZmNk
MjAwNDg3MzgyZGYzYi4uZGQzZWM5ZWMyMmFiYmZmMTkyYTgwODE4YmViZWE1ZjY3ZmRjODZlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCkBAIC0zMTMsNiArMzEzLDkgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1Rl
eHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUp
LCBpb3MoMTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlv
bjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICpl
cnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3Ry
aW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1
bWVudHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29t
cGxldGlvbkhhbmRsZXI7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDgzNTYyYzVkOTA2OTdhZjY0ODJk
M2I4NjVjNjA0OWM5NWIzYTFlMjcuLjYxOWQyODM0MzkzZmEwZmYwNTEzNGQ5YTI3NDU1ZDczNDc2
ZTQ2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0
OSwxMiArMzg0OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJ
Zk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVh
c29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248
dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKLSAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cisg
ICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJz
KSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNr
d2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdo
aWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vz
c0lmTmVjZXNzYXJ5KCk7CkBAIC0zODY1LDcgKzM4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxs
YmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBjNmJkMjAyNjQ3
MmI5NzQ5OTA0ZGQzNmUzMjY0OGVkYjdhOTYzOWEuLjc4NmMyMTk4ZDg2NGYwNTM1MDU0ZThjM2Rh
OGJkZjFkODg1MDBlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVySUQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5n
Lmg+CkBAIC0xMDYxLDggKzEwNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0
cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAv
LyBGb3Igc3ViIGZyYW1lcy4KICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA2NDQ1YWE1YTcyNTZkNmJhODdkNzM2ZjI2YmFkYzcxYTk4MDhlNGQwLi5mZGY2NTZh
ZDNlNmM4Y2ZjOWFkMWZlMzFhYWM2ZWM0NDk5MzE1ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjE0LDYgKzIxNCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0Ns
aWVudENvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
QEAgLTMzNTIsNDUgKzMzNTMsNDkgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRV
SU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0Rl
ZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBy
dW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAv
LyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhjb21tb25WTSgpKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKLSAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7Ci0KICAgICBh
dXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQo
d29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCk7Ci0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewot
ICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIXdvcmxk
KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxs
YmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlw
dDogUGFnZSBpcyBpbiBpbnZhbGlkIHN0YXRlIl9zIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1l
ID0gbWFrZVJlZigqZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkg
eworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0
VmFsdWU7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRG
b3JXb3JsZCh3b3JsZCksCisgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQu
cHRyKCkpLAogICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0
KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVs
bHB0cik7CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKLSAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisgICAgICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZh
bHVlKQorICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+
ZGF0YSgpOworCisgICAgICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Cisg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigp
OwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKLSAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
ZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2Fs
bGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOworICAgIGZyYW1l
LT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3Zl
KHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIHJ1bkphdmFT
Y3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1l
LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgQVNTRVJUKG1haW5XZWJGcmFtZSgpICE9IGZyYW1lKTsKLSAgICBy
dW5KYXZhU2NyaXB0KGZyYW1lLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVsbG9w
dCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgeyBzY3JpcHQsIGZhbHNl
LCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV1RGOjpudWxsb3B0LCBjYWxsYmFj
a0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCAxNWRiNGI4OWQ2YzhhN2I4MmQxZGRmNmI2NzQ1NDQwNTU2MmYxODg4Li42MmZhOTU3NGUz
ZjYyNTRlOWI5MDI0NmU5OWIzZDVkMGJmMzIyY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTcsNiArMTk3LDcgQEAgc3RydWN0IEdsb2JhbFdp
bmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Owogc3RydWN0IEtleXByZXNzQ29tbWFu
ZDsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOworc3RydWN0IFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVjdCBWaWV3cG9ydEFy
Z3VtZW50czsKIApAQCAtMTQzNCw4ICsxNDM1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRTb3VyY2VG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lE
KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcmLCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChj
b25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8
U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYs
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3Jj
ZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50
UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qg
b3B0aW9ucywgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5OWIzMmZlZjc4NDlhMGQ1ZjhiM2I1
M2Y2ZDQyNTBmZjU0MTUwNTAxLi44ZjVmNjNhOTM5MjQ3MTg3ZTYxOTQzZjE5OTJhYjdmODdjY2M3
ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTIwNCw3ICsyMDQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZQogICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFdlYkFyY2hp
dmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIE9wdGlvbmFsPFN0cmluZz4g
d29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludChX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDllZGI0MDExMWU1ZGRkNTYwY2E4M2VlZGRlMWZi
Y2FjZjQyZGVkNDQuLjg3MzAyNjEwMGMyZGIyMDZlZDAyYTE2MzE1ZGFjNDRiMTBjMTM3MDggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxOS0xMi0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5jdGlvbiB3aXRoIGFy
Z3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24u
bW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgb2JqZWN0QnlD
YWxsaW5nQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmVycm9yOl0pOgorCiAyMDE5LTEyLTE2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIC1bVUlX
S0RvY3VtZW50Q29udGV4dCBtYXJrZWRUZXh0UmFuZ2VdIGlzIHdyb25nIHdoZW4gdGhlIGNhcmV0
IGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgbWFya2VkIHRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggN2MyZjhmMzQzZTA2MjdkZGJjODIxMTRjZjFjZTAzMTdlODg1NGY4Ny4uNTc4ZDk2ZmZi
YmMxMmIzMTJjODM1OTllN2ZhOGZiMzYxOTIxYTdlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTI5MCw2ICsyOTAsNyBAQAogCQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUYyM0RFMUVGMUEzNzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1t
ICovOyB9OwogCQk1MUIxRUU5NjFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVu
Y2UtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0x
Lmh0bWwgKi87IH07CiAJCTUxQjFFRTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJz
aXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3Rl
bmNlLTIuaHRtbCAqLzsgfTsKKwkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsgfTsKIAkJNTFC
Q0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VF
NEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07
CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1s
ICovOyB9OwogCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlFNjUyMzc2MDg5
NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLzsgfTsKQEAgLTE4NDAsNiArMTg0MSw3IEBACiAJ
CTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBlcnNpc3RlbmNl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBGQUREMDA2NEZC
OTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQjFFRTk1MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5j
ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVu
Y2UtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBEOUQyM0FDOTYw
RTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUI0NTRFQjFCNEUyMzZCMDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmlu
aXNoTG9hZEZvckZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERC
TXVsdGlQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MjYsNiArMjgyOCw3IEBACiAJCQkJ
MkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCUEx
Nzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFG
OTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk1MUI0MEQ5
RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIw
MzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8s
CiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLywKIAkJCQk3
NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8sCkBAIC00
NTMxLDYgKzQ1MzQsNyBAQAogCQkJCUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBh
eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBs
aWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAw
RDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0
NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NjBDNEYx
MjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xOTAxNzhjNzlmMTZiZDU3OTg2Njc1NzM3MmY5NWM3YTUyODRkZDdmCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
c3luY0Z1bmN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0
LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQXN5bmNGdW5j
dGlvbiwgQmFzaWMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAg
ICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEZ1bmN0aW9uIHdpdGggbm8gcmV0dXJuIHZhbHVl
LgorICAgIC8vIFJldHVybnMgSmF2YVNjcmlwdCB1bmRlZmluZWQgd2hpY2ggdHJhbnNsYXRlcyB0
byBuaWwuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAIjEiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9FUShyZXN1bHQsIG5pbCk7CisKKyAgICAvLyBGdW5jdGlv
biByZXR1cm5zIGV4cGxpY2l0IG51bGwuCisgICAgLy8gUmV0dXJucyBKYXZhU2NyaXB0IG51bGwg
d2hpY2ggdHJhbnNsYXRlcyB0byBOU051bGwuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFzc11dKTsKKworICAgIC8vIEZ1bmN0aW9u
IHJldHVybnMgYSBudW1iZXIuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3Jd
OworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbFRvTnVtYmVyOkAxXSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLgor
ICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1
cm4gJzEnIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiMSJd
KTsKKworICAgIC8vIFRha2VzIG11bHRpcGxlIGFyZ3VtZW50cy4KKyAgICByZXN1bHQgPSBbd2Vi
VmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJn
dW1lbnRzOkB7IEAiYSIgOiBANDAsIEAiYiIgOiBAMiB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1i
ZXI6QDQyXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBsZSBhcmd1bWVudHMgb2YgZGlmZmVyZW50
IHR5cGVzLCBmb2xsb3dzIGphdmFzY3JpcHRzICJ0eXBlIGFwcGVuZGluZyIgcnVsZXMuCisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBm
b28gKyBiYXIiIHdpdGhBcmd1bWVudHM6QHsgQCJmb28iIDogQCJmb28iLCBAImJhciIgOiBANDIg
fSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJV
RShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9U
UlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiZm9vNDIiXSk7CisKKyAgICAvLyBJbnZhbGlk
IEphdmFTY3JpcHQsIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVuciBudWxsIiB3aXRoQXJndW1l
bnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOwor
ICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgSW52YWxp
ZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAg
IE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gQXJndW1lbnQga2V5cyBtdXN0IGJlIHN0cmluZ3Mu
CisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAxIDogQDEgfSBlcnJvcjomZXJyb3JdOworICAg
IEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisK
KyAgICAvLyBWYWx1ZXMgY2FuIG9ubHkgYmUgTlNTdHJpbmcsIE5TTnVtYmVyLCBOU0RhdGUsIE5T
QXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gdGhvc2UgNSB0eXBlcy4K
KyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0
dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IFtOU0RhdGEgZGF0YV0gfSBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09
IG5pbCk7CisKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEBbIEAxLCBbTlNEYXRhIGRh
dGFdIF0gfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICAvLyBSZWZlcmVuY2VzIGFuIGFyZ3VtZW50
IHRoYXQgd2FzIG5vdCBwcm92aWRlZC4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIg
OiBANDAgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGVycm9yID09IG5pbCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgUm91bmRU
cmlwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJv
ciAqZXJyb3I7CisKKyAgICAvLyBUZXN0cyByb3VuZCB0cmlwcGluZyBhIHdob2xlIGJ1bmNoIG9m
IGFyZ3VtZW50IGlucHV0cyBhbmQgdmVyaWZ5aW5nIHRoZSByZXN1bHQuCisKKyAgICBpZCB2YWx1
ZSA9IEA0MjsKKyAgICBpZCBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICBpZCBy
ZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEi
IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAg
dmFsdWUgPSBAIkZvbyI7CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBh
IiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAg
IHZhbHVlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTow
XTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2Vi
VmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVu
dHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
IEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAWyBA
MSwgQDIgXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQg
PSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUg
PSBAWyBAImZvbyIsIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURh
dGU6MF0gXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQg
PSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUg
PSBAeyBAImEiIDogQDEsIEAiYiIgOiBAMiB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2
YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVz
dWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAImZvbyIsIEAiYiIgOiBbTlNEYXRlIGRh
dGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIH07CisgICAgYXJndW1lbnRz
ID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFs
dWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEB7IEAiYSIgOiBA
MSB9IH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0g
W3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJn
dW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKK30KKworfQorCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDJhZDE1ZWYyMDk0ZGVm
NDI3MjlmNjAxNzA0Y2Y4NTE2NzE1NGMyNWUuLjNjYzQzNGE1ZDI1ZTBlOGQzZDc3ZjhiOTVhZmEy
ZGM2OTRjMmYxN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
CkBAIC02Myw2ICs2Myw3IEBACiAtIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQ7CiAtIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlkKW9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGlj
dGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsKIC0gKHVuc2ln
bmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRl
eCBhYWZmMjVjZDcxNmVjYWU2Y2U2MmI1ODE3MmMzOTI5MzUwOTIyNmVhLi43NGFkNTgxMjUwMTZj
MDMxZjhjNWU0ZWRiYjk0OGUxODA1ZWI1NTBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0xNzgsNiArMTc4LDI3IEBAIC0gKGlkKW9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0CiAgICAg
cmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAoaWQpb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0
aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0Cit7CisgICAgYm9v
bCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgaWYgKGVycm9yT3V0KQorICAg
ICAgICAqZXJyb3JPdXQgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7Cisg
ICAgW3NlbGYgX2NhbGxBc3luY0Z1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50
cyBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKGVycm9yT3V0KQorICAgICAg
ICAgICAgKmVycm9yT3V0ID0gW2Vycm9yIHJldGFpbl07CisgICAgICAgIGlzV2FpdGluZ0Zvckph
dmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CisKKyAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgIFsq
ZXJyb3JPdXQgYXV0b3JlbGVhc2VdOworCisgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVh
c2UoKTsKK30KKwogLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihO
U1N0cmluZyAqKXNjcmlwdAogewogICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386345</attachid>
            <date>2019-12-23 10:38:28 -0800</date>
            <delta_ts>2019-12-23 15:50:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191223103827.patch</filename>
            <type>text/plain</type>
            <size>59356</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5OGEwMzM5MmIyNDRj
ZWM1ZmE0NWUzMWY5MDNlZTg3MjQ3M2QwMi4uZGY4M2Y3M2VlNzk3ODZlYTJlM2NhMTM0YjhiODdl
ZDVmZjMwNjI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTE5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlciBzaG91bGQgb2JzZXJ2ZSBuZXdseSBpbnNlcnRlZCBvciBkaXNwbGF5ZWQgY29udGVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzIwOWRlOGVjMzJhYWEzNjc4NWZkYjgxMzU0NTgzMTgzY2I2NTJkMi4u
NzEwOTJlOTk1MjJjMDE3ZmIwZTUyZDZkZTVkZmM0ZGRjMGU0OGQzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOS0xMi0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5jdGlvbiB3aXRo
IGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpzaGFyZWRDb250ZXh0KToKKyAgICAg
ICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHZh
bGlkYXRlQXJndW1lbnQpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlw
dDphc0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOndp
dGhBcmd1bWVudHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpmb3JjZVVzZXJHZXN0
dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIC1bVUlXS0RvY3VtZW50Q29udGV4dCBtYXJrZWRUZXh0UmFu
Z2VdIGlzIHdyb25nIHdoZW4gdGhlIGNhcmV0IGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgbWFya2Vk
IHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1NTExZTBlMjAyMzg5ODI4Mzg2OGQ1MmMwMDUyOTYzOGQzNGZkODRkLi4zNzY3
YjlmZTEyYWJhMDA0ZWVlMjc0OTRkMGNiMDJmZGNmNWVmYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTMwLDYgKzE1MzAs
NyBAQAogCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFCQkI1
Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
NEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0
ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJFMzdFMDBEQUVFMDBF
MDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQzBB
QTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgzMzAsNiArODMzMSw3IEBACiAJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJ
REJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFj
a2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkE0QUM4MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQTk0NkYy
M0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdl
QXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyog
Q2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJh
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAwRjJBQTE1RTAwMTY0
OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Mzk0
LDYgKzI1Mzk2LDcgQEAKIAkJCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQgLyogUmVhZGFibGVT
dHJlYW0uaCAqLywKIAkJCQk0MThDMzk1RTFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEz
IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLywKKwkJCQk1MUJBOTQ2RjIz
QUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLywKIAkJCQk0MUYx
RDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJ
CQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8s
CiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICov
LApAQCAtMzIxMTYsNiArMzIxMTksNyBAQAogCQkJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAv
KiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTIxNjFFN0YzRjAwQzJFNjUy
IC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBNDE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTk0NzEyM0FDMzA1MzAw
NDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDc2QkI4MjE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NjlEMjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9k
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlv
bkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRhYmRjZWE3M2UzYzVh
Li4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0zMyw3ICszMyw3IEBA
IHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQg
bGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmlu
ZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmMzNDg1ZTAwYTMwZjVhZjViZGZkNWM0
ZGVlMjZlMzBjMDc2MzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5jdGlv
biA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIEZvcmNlVXNlckdlc3R1cmUgOiBib29s
IHsgTm8sIFllcyB9OworCitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgeworICAgIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIHJ1bkFzQXN5
bmNGdW5jdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6QXJndW1lbnRX
aXJlQnl0ZXNNYXA+IGFyZ3VtZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6
IHNvdXJjZShzb3VyY2UpCisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNG
dW5jdGlvbiA/IFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpO
bykKKyAgICAgICAgLCBhcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZv
cmNlVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6
IEZvcmNlVXNlckdlc3R1cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAgICBSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFz
QXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6QXJndW1l
bnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0
dXJlKQorICAgICAgICA6IHNvdXJjZShzb3VyY2UpCisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0
aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgLCBhcmd1bWVudHMoV1RGTW92ZShhcmd1
bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSkKKyAg
ICB7CisgICAgfQorCisgICAgU3RyaW5nIHNvdXJjZTsKKyAgICBSdW5Bc0FzeW5jRnVuY3Rpb24g
cnVuQXNBc3luY0Z1bmN0aW9uOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgRm9yY2VVc2VyR2VzdHVy
ZSBmb3JjZVVzZXJHZXN0dXJlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIg
PDwgc291cmNlIDw8IHJ1bkFzQXN5bmNGdW5jdGlvbiA8PCBhcmd1bWVudHMgPDwgZm9yY2VVc2Vy
R2VzdHVyZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJ1bkFzQXN5bmNGdW5jdGlvbikpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXJndW1lbnRzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGZvcmNlVXNlckdlc3R1cmUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IHNvdXJjZSwgcnVuQXNBc3luY0Z1bmN0aW9u
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGZvcmNlVXNlckdlc3R1cmUgfSB9OworICAgIH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWY1YmFhMjA2MzgzNThjMGJiODJiMzdiY2VhMjZj
YWQ5OGVmNjRhYS4uYzI3MjIwZDJjYTg5NzhmMzY2ZmQzZmU5M2I3MWQyYWNjNDA2YmRhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYXltZW50
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgorI2luY2x1ZGUgIlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgpAQCAtNTY1LDIwICs1NjYsMTE2IEBAIEpTQzo6SlNWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5n
JiBzY3JpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBl
eGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCB7IHNjcmlwdCwgZmFs
c2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKICAgICByZXR1cm4gcmVzdWx0
ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCi1WYWx1ZU9yRXhjZXB0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitW
YWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNl
ckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3Vy
Y2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRp
b24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlw
dEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOworICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJH
ZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKIAog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91
bGQgcmV0dXJuIGFuIEV4Y2VwdGlvbkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0
cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAg
IHN3aXRjaCAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24pIHsKKyAgICBjYXNlIFJ1bkFz
QXN5bmNGdW5jdGlvbjo6Tm86IHsKKyAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHBhcmFtZXRlcnMuc291cmNlLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQ
b3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVk
U2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7Cisg
ICAgICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAgIH0K
KyAgICBjYXNlIFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzOgorICAgICAgICByZXR1cm4gY2FsbElu
V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGQpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitWYWx1ZU9yRXhjZXB0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQocGFy
YW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMpOwor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLmFyZ3VtZW50cyk7CisKKyAgICBhdXRvJiBwcm94eSA9IGpz
V2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpwcm94eS53aW5k
b3coKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrZWRBcmd1bWVudHM7CisgICAgU3Ry
aW5nQnVpbGRlciBmdW5jdGlvblN0cmluZ0J1aWxkZXI7CisgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKKworICAgIC8vIEJ1aWxkIHVwIGEgbmV3IHNjcmlwdCBzdHJpbmcgdGhhdCBpcyBhbiBhc3lu
YyBmdW5jdGlvbiB3aXRoIGFyZ3VtZW50cywgYW5kIGRlc2VyaWFsaXplIHRob3NlIGFyZ3VtZW50
cy4KKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CisgICAg
Zm9yIChhdXRvIGFyZ3VtZW50ID0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmJlZ2luKCk7IGFyZ3Vt
ZW50ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5lbmQoKTspIHsKKyAgICAgICAgZnVuY3Rpb25T
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmd1bWVudC0+a2V5KTsKKyAgICAgICAgYXV0byBzZXJpYWxp
emVkQXJndW1lbnQgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMo
V1RGTW92ZShhcmd1bWVudC0+dmFsdWUpKTsKKworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIGF1dG8ganNBcmd1bWVu
dCA9IHNlcmlhbGl6ZWRBcmd1bWVudC0+ZGVzZXJpYWxpemUoZ2xvYmFsT2JqZWN0LCAmZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBhcmd1bWVudCB0
byBleGVjdXRlIGFzeW5jaHJvbm91cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbWFya2VkQXJndW1lbnRzLmFwcGVuZChqc0Fy
Z3VtZW50KTsKKworICAgICAgICArK2FyZ3VtZW50OworICAgICAgICBpZiAoYXJndW1lbnQgIT0g
cGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpKQorICAgICAgICAgICAgZnVuY3Rpb25TdHJpbmdC
dWlsZGVyLmFwcGVuZCgnLCcpOworICAgIH0KKworICAgIGlmICghZXJyb3JNZXNzYWdlLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyBl
cnJvck1lc3NhZ2UgfSk7CisKKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpeyIs
IHBhcmFtZXRlcnMuc291cmNlLCAifSkiKTsKKworICAgIGF1dG8gc291cmNlQ29kZSA9IFNjcmlw
dFNvdXJjZUNvZGUgeyBmdW5jdGlvblN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSwgVVJMKG1fZnJh
bWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1l
LmRvY3VtZW50KCktPmNoYXJzZXQoKSkgfTsKKyAgICBjb25zdCBhdXRvJiBqc1NvdXJjZUNvZGUg
PSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOworCisgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpz
U291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKKyAgICBjb25zdCBTdHJpbmcqIHNhdmVkU291
cmNlVVJMID0gbV9zb3VyY2VVUkw7CisgICAgbV9zb3VyY2VVUkwgPSAmc291cmNlVVJMOworCisg
ICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNv
ZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisKKyAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZTsK
KyAgICBkbyB7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QgPSBKU0V4ZWNTdGF0ZTo6
cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3Ro
ZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKworICAgICAg
ICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGlmICghZnVuY3Rpb25PYmplY3QgfHwgIWZ1bmN0aW9uT2JqZWN0LmlzRnVuY3Rpb24od29ybGQu
dm0oKSkpIHsKKyAgICAgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIGNy
ZWF0ZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwiX3MgfSB9OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU2MgorICAgICAgICAvLyBHZXR0aW5nIENhbGxE
YXRhL0NhbGxUeXBlIHNob3VsZG4ndCBiZSByZXF1aXJlZCB0byBjYWxsIGludG8gSlMuCisgICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHdvcmxkLnZtKCksIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSk7CisgICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRh
aWxzID0geyB7ICJVbmFibGUgdG8gcHJlcGFyZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9uIHRv
IGJlIGNhbGxlZCJfcyB9IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCgmZ2xvYmFsT2JqZWN0
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwg
Y2FsbERhdGEsICZwcm94eSwgbWFya2VkQXJndW1lbnRzLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
KyAgICB9IHdoaWxlIChmYWxzZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOworCisgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24g
JiYgISBvcHRpb25hbERldGFpbHMpIHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxz
OworICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRp
b25hbERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOworICAgIH0KKworICAgIG1fc291cmNlVVJM
ID0gc2F2ZWRTb3VyY2VVUkw7CisKKyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQpAQCAtNTg3LDEz
ICs2ODQsMjcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE8KICAgICByZXR1cm4gcmVzdWx0ID8g
cmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
KQoreworICAgIHJldHVybiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdv
cmxkLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsK
K30KKworVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2Zy
YW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9j
dW1lbnQpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7
ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBz
ZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3Jp
cHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MgfSk7CiAKICAgICBk
b2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4
ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAg
IHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
Cit9CisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2Vu
dFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24pCit7
CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFs
KHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKworICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVz
dWx0IGlzIGEgdGhlbmFibGUsIGluc3RhbGwgdGhlIGZ1bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGlu
c3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4KKworICAgIHJlc29sdmVGdW5jdGlvbihyZXN1bHQpOwog
fQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTNmNmMzYWY1OGMwMWEwMTcwODM1MjM5YmFhZjU5NTYz
MzkwY2Y0YS4uMTk4YzkwYTRiOWYwM2JjNWQ3MTJlZTE1M2U3ODFkYmE2NDNlOTc4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjMsNiAr
MjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkpTV2lu
ZG93UHJveHkuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpAQCAtNjIsNyArNjMsMTEgQEAgY2xhc3Mg
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgV2lkZ2V0OworCitlbnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5j
dGlvbjsKKwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnM7CiAKIGVudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHsKICAg
ICBBYm91dFRvQ3JlYXRlRXZlbnRMaXN0ZW5lciwKQEAgLTkwLDExICs5NSwxNiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29y
bGQ+PiYpOwogCisgICAgdXNpbmcgQXJndW1lbnRXaXJlQnl0ZXNNYXAgPSBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPHVpbnQ4X3Q+PjsKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+OworCiAgICAgV0VCQ09SRV9FWFBPUlQgSlND
OjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIEpTQzo6SlNWYWx1ZSBl
eGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAg
VmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNl
cHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBSZXNvbHZlRnVuY3Rpb24m
Jik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAK
ICAgICBib29sIHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0Owog
CkBAIC0xMDUsMTAgKzExNSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0
aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55
IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhy
ZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29y
bGQmKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3Jp
cHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1l
LCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2
b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcm
IG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNzAsNiArMTc2LDExIEBAIHB1Ymxp
YzoKICAgICBib29sIHdpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNjcmlwdFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZh
c2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CisgICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7CisgICAgVmFs
dWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERP
TVdyYXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gY2FsbEluV29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgCiAgICAgdm9pZCBz
ZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgSlNDOjpKU0lu
dGVybmFsUHJvbWlzZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0
UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNTRjMzRlODg4NGMyNGNjYjgyNGU2
ZDJiY2ZkMzYwMjc3Njg1MjcwZS4uMWY0M2U2M2M2MTEyZTBmNjQ3NjlhNDE4MzA2YzhiNDZiYjIw
ZGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCiAgICAgc3RhdGljIGlkIGRlc2VyaWFsaXpl
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7
CisgICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gd2lyZUJ5dGVzRnJvbU5TT2Jq
ZWN0KGlkKTsKICNlbmRpZgogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2Uo
KSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2Vm
ZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmLi5kZDc5NmI4MzMyMzU5ZTFjM2IxZTU1NzVmZDdhMDMz
NTNjYjFmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAg
LTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlw
dFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNr
KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1w
bChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3Ry
aW5nKCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAg
IGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4
dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXgg
YTI2NzNlMjVjMTEzNDA3MTkxMmMyMDI4ZmQ3ZGYyMjk2NTRhYTM4ZS4uNDA1ZGE5MjAwNmExMWI4
MDliZjFkZjA2NjRmNmQ4MjRhZGQ5ZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVD
b2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHQuaD4KICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpAQCAtNTksMTEgKzYwLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8U2hhcmVk
SlNDb250ZXh0PiBtX3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYgc2hhcmVk
Q29udGV4dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4g
c2hhcmVkQ29udGV4dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30KKwogaWQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQqIGNvbnRl
eHQgPSBzaGFyZWRDb250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0NvbnRleHQq
IGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAgSlNWYWx1
ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVSZWYpCkBA
IC03Myw0ICs3OSwyMCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1
ZS50b09iamVjdDsKIH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250
ZXh0KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFs
dWVXaXRoT2JqZWN0Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0g
dG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisKKyAgICBh
dXRvIGNvcmVWYWx1ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpn
bG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKKyAg
ICByZXR1cm4gY29yZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTJmMDJh
MTdlNmMxMjVhZDVkZGUyZmE5YTQyNDg1NWE3Y2Y3MDdhYy4uNGM2MTM3MjM5MDM1MGFjM2IzODRl
MGQ2ZmIxNWI2NmMzZDNiNjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4NiBAQCBzdGF0aWMgV0tFcnJvckNv
ZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQog
CiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBm
b3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07
CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNG
dW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJP
T0wpZm9yY2VVc2VyR2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQg
YXJndW1lbnQpCit7CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dIHx8IFth
cmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNLaW5k
T2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAgICAgX19i
bG9jayBCT09MIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlT2Jq
ZWN0c1VzaW5nQmxvY2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3ApIHsKKyAg
ICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAgICAgICAg
ICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAg
IGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAg
ICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwgQk9PTCAq
c3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwgIXZhbGlk
YXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisK
KyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRzOihOU0Rp
Y3Rpb25hcnkgKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0
dXJlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVy
IGNvcHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2YVNjcmlw
dFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJy
b3JDb2RlKSB7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6QXJndW1l
bnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50c01hcDsKKyAgICBpZiAoYXNBc3luY0Z1bmN0aW9uKQor
ICAgICAgICBhcmd1bWVudHNNYXAgPSBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpBcmd1bWVu
dFdpcmVCeXRlc01hcCB7IH07CisgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKKwor
ICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykgeworICAgICAgICBpZiAoIVtrZXkgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0g
QCJGdW5jdGlvbiBhcmd1bWVudCBuYW1lcyBtdXN0IGJlIHN0cmluZ3MiOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9i
amVjdEZvcktleTprZXldOworICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7
CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBt
dXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZv
bGxvd2luZyB0eXBlczogTlNTdHJpbmcsIE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBO
U0RpY3Rpb25hcnkiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVz
RnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAgICAgICAgLy8gU2luY2Ugd2UndmUgdmFsaWRhdGVkIHRo
ZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3ZlLCB3ZSBzaG91bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxp
emUgaXQgaW50byB3aXJlIGJ5dGVzLgorICAgICAgICBBU1NFUlQod2lyZUJ5dGVzKTsKKyAgICAg
ICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5LCAqd2lyZUJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAo
ZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1
c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisK
KyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9y
Q29kZShXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6
ZWREZXNjcmlwdGlvbktleV07CisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNz
YWdlIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKworICAg
ICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVz
ZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVyLCBlcnJvcl0geworICAgICAgICAgICAgYXV0byBy
YXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAg
ICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsKKworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSh7IGphdmFTY3JpcHRTdHJpbmcsIChib29sKWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1
bWVudHNNYXApLCAoYm9vbClmb3JjZVVzZXJHZXN0dXJlIH0sIFtoYW5kbGVyXShBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6
OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTE5MjMsNiArMTk5NSwxMSBAQCAtICh2b2lkKV90YWtlUERGU25hcHNob3RX
aXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbgog
ICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOnBkZkNvbmZpZ3VyYXRpb24gY29t
cGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCistICh2b2lkKV9jYWxsQXN5
bmNGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5T
RGljdGlvbmFyeSAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5T
RXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtzZWxmIF9ldmFsdWF0ZUph
dmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVu
dHM6YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyXTsKK30KKwogLSAoTlNEYXRhICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUg
ZW5jb2Rlci4KQEAgLTIwNjUsNyArMjE0Miw3IEBAIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3Jp
cHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsK
LSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2Vy
R2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3Nl
bGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpO
TyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVz
OihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDI1MTEz
NzQyM2UwNzY0NDAyMGZiMDY2NmZjZDIwMDQ4NzM4MmRmM2IuLmRkM2VjOWVjMjJhYmJmZjE5MmE4
MDgxOGJlYmVhNWY2N2ZkYzg2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzEzLDYgKzMxMyw5IEBAIHR5cGVk
ZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfZm9jdXNU
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxlbWVudCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAogLSAodm9pZClfdGFrZVBERlNu
YXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNo
b3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNu
YXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKHZvaWQpX2Nh
bGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50
czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworCiBAZW5kCiAKICNpZiBUQVJH
RVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA4MzU2MmM1ZDkwNjk3YWY2NDgyZDNiODY1YzYwNDljOTViM2ExZTI3Li42MTlkMjgzNDM5M2Zh
MGZmMDUxMzRkOWEyNzQ1NWQ3MzQ3NmU0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTM4NDksMTIgKzM4NDksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNz
KHsgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcg
c2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAg
ICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2NSw3ICszODY1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxk
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxk
TmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCAwYzZiZDIwMjY0NzJiOTc0OTkwNGRkMzZlMzI2NDhlZGI3YTk2MzlhLi43ODZj
MjE5OGQ4NjRmMDUzNTA1NGU4YzNkYThiZGYxZDg4NTAwZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRlcklE
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgpAQCAtMTA2MSw4ICsxMDYyLDggQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JG
cmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwor
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCiAgICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNl
UmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjQ0NWFhNWE3MjU2ZDZiYTg3ZDczNmYyNmJh
ZGM3MWE5ODA4ZTRkMC4uZmRmNjU2YWQzZTZjOGNmYzlhZDFmZTMxYWFjNmVjNDQ5OTMxNWU4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIx
NCw2ICsyMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JpcHRDb250cm9sbGVyLmg+CkBAIC0zMzUyLDQ1ICszMzUzLDQ5IEBAIEtleWJvYXJkVUlN
b2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5
Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NG
dWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFj
Y2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQo
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVl
ZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2Ug
ZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9u
LgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2Vw
dGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29y
ZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxk
KCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJs
ZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBj
YWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVG
dW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHdvcmxkID0g
bWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0oVmFs
dWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwogICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAorICAgICAgICAgICAgc2VyaWFs
aXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpz
Q29udGV4dEZvcldvcmxkKHdvcmxkLnB0cigpKSwKICAgICAgICAgICAgICAgICB0b1JlZihmcmFt
ZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkp
LCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0
YSgpOworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICAgICAg
aWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBz
ZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKworICAgICAgICBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiBkZXRhaWxzOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGRl
dGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJy
b3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNh
bGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICB9OwogCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFS
ZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhj
b21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3lu
Y2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdCht
YWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lE
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJh
bWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVz
ZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQo
ZnJhbWUsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0s
IFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVu
dHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTVkYjRiODlkNmM4YTdiODJkMWRkZjZiNjc0NTQ0
MDU1NjJmMTg4OC4uNjJmYTk1NzRlM2Y2MjU0ZTliOTAyNDZlOTliM2Q1ZDBiZjMyMmNhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTk3LDYgKzE5
Nyw3IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwogc3RydWN0IEhpZ2hsaWdodDsK
IHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsK
K3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1
bHQ7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAKQEAgLTE0MzQsOCArMTQzNSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1l
KiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFr
ZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
OTliMzJmZWY3ODQ5YTBkNWY4YjNiNTNmNmQ0MjUwZmY1NDE1MDUwMS4uOGY1ZjYzYTkzOTI0NzE4
N2U2MTk0M2YxOTkyYWI3Zjg3Y2NjN2UxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsNyArMjA0LDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmlu
Zz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZh
U2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZWRiNDAx
MTFlNWRkZDU2MGNhODNlZWRkZTFmYmNhY2Y0MmRlZDQ0Li44NzMwMjYxMDBjMmRiMjA2ZWQwMmEx
NjMxNWRhYzQ0YjEwYzEzNzA4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTItMTkgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJIHRvIGV2YWx1
YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpl
cnJvcjpdKToKKwogMjAxOS0xMi0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICAtW1VJV0tEb2N1bWVudENvbnRleHQgbWFya2VkVGV4dFJhbmdlXSBp
cyB3cm9uZyB3aGVuIHRoZSBjYXJldCBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIG1hcmtlZCB0ZXh0
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdjMmY4ZjM0M2UwNjI3ZGRiYzgyMTE0Y2YxY2Uw
MzE3ZTg4NTRmODcuLjU3OGQ5NmZmYmJjMTJiMzEyYzgzNTk5ZTdmYThmYjM2MTkyMWE3ZTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTAsNiArMjkwLDcgQEAKIAkJNTFBRjIzREYxRUYx
QTM3MzAwNzJGMjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFGMjNERTFFRjFBMzcyMDA3MkYyODEgLyog
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTFCMUVFOTYxQzgwRkFFRjAwNjRGQjk4
IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NDFDODBGQUREMDA2NEZCOTggLyog
SW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovOyB9OwogCQk1MUIxRUU5NzFDODBGQUVGMDA2
NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk1MUM4MEZBREQwMDY0RkI5
OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07CisJCTUxQjQwRDlFMjNBQzk2
MjQwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi87IH07CiAJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJN
dWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0
aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUgLyogSW5k
ZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKIAkJNTFCRTlFNjYyMzc2MDg5RjAwQjRFMTE3
IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gKi87IH07CkBA
IC0xODQwLDYgKzE4NDEsNyBAQAogCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyogSW5kZXhl
ZERCUGVyc2lzdGVuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCMUVFOTQxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NTFDODBGQUREMDA2NEZCOTgg
LyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDU0RUIxQjRFMjM2QjAwODVFQUE2IC8qIFdl
YlZpZXdDbG9zZUluc2lkZURpZEZpbmlzaExvYWRGb3JGcmFtZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlzaExvYWRG
b3JGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNDkxQzg0RjRB
RjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
ODI2LDYgKzI4MjgsNyBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRl
ZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXku
bW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZl
c3QubW0gKi8sCisJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24u
bW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBB
dHRyU3R5bGUubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxs
QXZhaWxhYmxlLm1tICovLApAQCAtNDUzMSw2ICs0NTM0LDcgQEAKIAkJCQlBMTc5OEI4MjIyNDMx
RDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQk2M0Y2NjgyMjFG
OTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQjQwRDlFMjNBQzk2MjQwMEUwNTI0MSAvKiBBc3lu
Y0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0MTM4QzcyMDMyNjFDQTAwRjI2OTYw
IC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzYwQzRGMTIxMTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0FzeW5jRnVuY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwMTc4Yzc5ZjE2YmQ1Nzk4NjY3
NTczNzJmOTVjN2E1Mjg0ZGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMCwwICsxLDE2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitURVNUKEFzeW5jRnVuY3Rpb24sIEJhc2ljKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBGdW5jdGlv
biB3aXRoIG5vIHJldHVybiB2YWx1ZS4KKyAgICAvLyBSZXR1cm5zIEphdmFTY3JpcHQgdW5kZWZp
bmVkIHdoaWNoIHRyYW5zbGF0ZXMgdG8gbmlsLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCIxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjom
ZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBu
aWwpOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBleHBsaWNpdCBudWxsLgorICAgIC8vIFJl
dHVybnMgSmF2YVNjcmlwdCBudWxsIHdoaWNoIHRyYW5zbGF0ZXMgdG8gTlNOdWxsLgorICAgIHJl
c3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gbnVs
bCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3Nd
XSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgbnVtYmVyLgorICAgIHJlc3VsdCA9IFt3
ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3Vt
ZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQ
RUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKKyAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworCisgICAgLy8gRnVuY3Rp
b24gcmV0dXJucyBhIHN0cmluZy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxp
bmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuICcxJyIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0
IGlzRXF1YWxUb1N0cmluZzpAIjEiXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBsZSBhcmd1bWVu
dHMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwLCBAImIiIDogQDIgfSBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOworCisgICAgLy8gVGFrZXMgbXVsdGlwbGUg
YXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcywgZm9sbG93cyBqYXZhc2NyaXB0cyAidHlwZSBh
cHBlbmRpbmciIHJ1bGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gZm9vICsgYmFyIiB3aXRoQXJndW1lbnRzOkB7IEAiZm9vIiA6
IEAiZm9vIiwgQCJiYXIiIDogQDQyIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImZvbzQy
Il0pOworCisgICAgLy8gSW52YWxpZCBKYXZhU2NyaXB0LCBzaG91bGQgcmV0dXJuIGFuIGVycm9y
LgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJy
ZXR1bnIgbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1Rf
RkFMU0UoZXJyb3IgPT0gbmlsKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworfQorCitURVNU
KEFzeW5jRnVuY3Rpb24sIEludmFsaWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEFyZ3VtZW50
IGtleXMgbXVzdCBiZSBzdHJpbmdzLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5
Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpAeyBAMSA6IEAx
IH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9G
QUxTRShlcnJvciA9PSBuaWwpOworCisgICAgLy8gVmFsdWVzIGNhbiBvbmx5IGJlIE5TU3RyaW5n
LCBOU051bWJlciwgTlNEYXRlLCBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBtYXkgb25seSBj
b250YWluIHRob3NlIDUgdHlwZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBbTlNE
YXRhIGRhdGFdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAg
IEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAi
YSIgOiBAWyBAMSwgW05TRGF0YSBkYXRhXSBdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1Rf
TlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgLy8g
UmVmZXJlbmNlcyBhbiBhcmd1bWVudCB0aGF0IHdhcyBub3QgcHJvdmlkZWQuCisgICAgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhICsgYiIg
d2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1Rf
TlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworfQorCitURVNU
KEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJpcCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gVGVzdHMgcm91bmQgdHJp
cHBpbmcgYSB3aG9sZSBidW5jaCBvZiBhcmd1bWVudCBpbnB1dHMgYW5kIHZlcmlmeWluZyB0aGUg
cmVzdWx0LgorCisgICAgaWQgdmFsdWUgPSBANDI7CisgICAgaWQgYXJndW1lbnRzID0gQHsgQCJh
IiA6IHZhbHVlIH07CisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNF
cXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQCJGb28iOworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZVJlZmVyZW5jZURhdGU6MF07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVl
IH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRd
KTsKKworICAgIHZhbHVlID0gQFsgQDEsIEAyIF07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6
IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOwor
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpy
ZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQCJmb28iLCBbTlNEYXRlIGRhdGVXaXRoVGltZUlu
dGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIF07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6
IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOwor
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpy
ZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEAxLCBAImIiIDogQDIgfTsKKyAgICBh
cmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmpl
Y3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1l
bnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9U
UlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAeyBAImEiIDogQCJm
b28iLCBAImIiIDogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0
ZTowXSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9
IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFy
Z3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9
IEB7IEAiYSIgOiBAeyBAImEiIDogQDEgfSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2
YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVz
dWx0XSk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aAppbmRleCAyYWQxNWVmMjA5NGRlZjQyNzI5ZjYwMTcwNGNmODUxNjcxNTRjMjVlLi4zY2M0MzRh
NWQyNWUwZThkM2Q3N2Y4Yjk1YWZhMmRjNjk0YzJmMTdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjMsNiArNjMsNyBAQAogLSAoTlNTdHJpbmcgKilz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2Ny
aXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3Jp
cHQ7CistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNjcmlw
dCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJyb3Ig
KiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1bnNpZ25l
ZClleHBlY3RlZENsaWVudFdpZHRoOwogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggYWFmZjI1Y2Q3MTZlY2FlNmNlNjJiNTgxNzJjMzkyOTM1
MDkyMjZlYS4uNzRhZDU4MTI1MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc4LDYgKzE3OCwy
NyBAQCAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihO
U1N0cmluZyAqKXNjcmlwdAogICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9
CiAKKy0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0
IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAq
KillcnJvck91dAoreworICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOwor
ICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgKmVycm9yT3V0ID0gbmlsOworCisgICAgUmV0YWlu
UHRyPGlkPiBldmFsUmVzdWx0OworICAgIFtzZWxmIF9jYWxsQXN5bmNGdW5jdGlvbjpzY3JpcHQg
d2l0aEFyZ3VtZW50czphcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7CisgICAgICAg
IGlmIChlcnJvck91dCkKKyAgICAgICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRhaW5dOwor
ICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOworCisgICAgaWYg
KGVycm9yT3V0KQorICAgICAgICBbKmVycm9yT3V0IGF1dG9yZWxlYXNlXTsKKworICAgIHJldHVy
biBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKE5TU3RyaW5nICopc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKIHsKICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6c2NyaXB0XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386362</attachid>
            <date>2019-12-23 15:50:16 -0800</date>
            <delta_ts>2019-12-23 16:09:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191223155016.patch</filename>
            <type>text/plain</type>
            <size>59362</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5OGEwMzM5MmIyNDRj
ZWM1ZmE0NWUzMWY5MDNlZTg3MjQ3M2QwMi4uNTE1Mzc4YzlmMGQ4NGY1NDcyNzg5MjU1YWI1NWUy
MTQ5MWI5MzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTIzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlciBzaG91bGQgb2JzZXJ2ZSBuZXdseSBpbnNlcnRlZCBvciBkaXNwbGF5ZWQgY29udGVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzIwOWRlOGVjMzJhYWEzNjc4NWZkYjgxMzU0NTgzMTgzY2I2NTJkMi4u
ZDcwNzIwYjMxNThhNTE5MzA4YTQ0ZWZlYjY4YjM3Y2ZiZjQ1Y2NiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOS0xMi0yMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5jdGlvbiB3aXRo
IGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpzaGFyZWRDb250ZXh0KToKKyAgICAg
ICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHZh
bGlkYXRlQXJndW1lbnQpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlw
dDphc0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOndp
dGhBcmd1bWVudHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpmb3JjZVVzZXJHZXN0
dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIC1bVUlXS0RvY3VtZW50Q29udGV4dCBtYXJrZWRUZXh0UmFu
Z2VdIGlzIHdyb25nIHdoZW4gdGhlIGNhcmV0IGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgbWFya2Vk
IHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1NTExZTBlMjAyMzg5ODI4Mzg2OGQ1MmMwMDUyOTYzOGQzNGZkODRkLi4zNzY3
YjlmZTEyYWJhMDA0ZWVlMjc0OTRkMGNiMDJmZGNmNWVmYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTMwLDYgKzE1MzAs
NyBAQAogCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFCQkI1
Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
NEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0
ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJFMzdFMDBEQUVFMDBF
MDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQzBB
QTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgzMzAsNiArODMzMSw3IEBACiAJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJ
REJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFj
a2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkE0QUM4MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQTk0NkYy
M0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdl
QXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyog
Q2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJh
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAwRjJBQTE1RTAwMTY0
OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Mzk0
LDYgKzI1Mzk2LDcgQEAKIAkJCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQgLyogUmVhZGFibGVT
dHJlYW0uaCAqLywKIAkJCQk0MThDMzk1RTFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEz
IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLywKKwkJCQk1MUJBOTQ2RjIz
QUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLywKIAkJCQk0MUYx
RDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJ
CQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8s
CiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICov
LApAQCAtMzIxMTYsNiArMzIxMTksNyBAQAogCQkJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAv
KiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTIxNjFFN0YzRjAwQzJFNjUy
IC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBNDE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTk0NzEyM0FDMzA1MzAw
NDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDc2QkI4MjE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NjlEMjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9k
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlv
bkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRhYmRjZWE3M2UzYzVh
Li4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0zMyw3ICszMyw3IEBA
IHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQg
bGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmlu
ZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmMzNDg1ZTAwYTMwZjVhZjViZGZkNWM0
ZGVlMjZlMzBjMDc2MzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5jdGlv
biA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIEZvcmNlVXNlckdlc3R1cmUgOiBib29s
IHsgTm8sIFllcyB9OworCitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgeworICAgIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIHJ1bkFzQXN5
bmNGdW5jdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6QXJndW1lbnRX
aXJlQnl0ZXNNYXA+IGFyZ3VtZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6
IHNvdXJjZShzb3VyY2UpCisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNG
dW5jdGlvbiA/IFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpO
bykKKyAgICAgICAgLCBhcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZv
cmNlVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6
IEZvcmNlVXNlckdlc3R1cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAgICBSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFz
QXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6QXJndW1l
bnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0
dXJlKQorICAgICAgICA6IHNvdXJjZShzb3VyY2UpCisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0
aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgLCBhcmd1bWVudHMoV1RGTW92ZShhcmd1
bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSkKKyAg
ICB7CisgICAgfQorCisgICAgU3RyaW5nIHNvdXJjZTsKKyAgICBSdW5Bc0FzeW5jRnVuY3Rpb24g
cnVuQXNBc3luY0Z1bmN0aW9uOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgRm9yY2VVc2VyR2VzdHVy
ZSBmb3JjZVVzZXJHZXN0dXJlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIg
PDwgc291cmNlIDw8IHJ1bkFzQXN5bmNGdW5jdGlvbiA8PCBhcmd1bWVudHMgPDwgZm9yY2VVc2Vy
R2VzdHVyZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJ1bkFzQXN5bmNGdW5jdGlvbikpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXJndW1lbnRzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGZvcmNlVXNlckdlc3R1cmUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IHNvdXJjZSwgcnVuQXNBc3luY0Z1bmN0aW9u
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGZvcmNlVXNlckdlc3R1cmUgfSB9OworICAgIH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWY1YmFhMjA2MzgzNThjMGJiODJiMzdiY2VhMjZj
YWQ5OGVmNjRhYS4uYmY2NTdiZTU4YzBhNWY4OTEzZTIxMzM1ZmQ2MTUzZjRhNWUwNDIyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYXltZW50
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgorI2luY2x1ZGUgIlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgpAQCAtNTY1LDIwICs1NjYsMTE2IEBAIEpTQzo6SlNWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5n
JiBzY3JpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBl
eGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCB7IHNjcmlwdCwgZmFs
c2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKICAgICByZXR1cm4gcmVzdWx0
ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCi1WYWx1ZU9yRXhjZXB0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitW
YWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNl
ckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3Vy
Y2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRp
b24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlw
dEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOworICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJH
ZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKIAog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91
bGQgcmV0dXJuIGFuIEV4Y2VwdGlvbkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0
cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAg
IHN3aXRjaCAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24pIHsKKyAgICBjYXNlIFJ1bkFz
QXN5bmNGdW5jdGlvbjo6Tm86IHsKKyAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHBhcmFtZXRlcnMuc291cmNlLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQ
b3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVk
U2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7Cisg
ICAgICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAgIH0K
KyAgICBjYXNlIFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzOgorICAgICAgICByZXR1cm4gY2FsbElu
V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGQpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitWYWx1ZU9yRXhjZXB0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQocGFy
YW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMpOwor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLmFyZ3VtZW50cyk7CisKKyAgICBhdXRvJiBwcm94eSA9IGpz
V2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpwcm94eS53aW5k
b3coKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrZWRBcmd1bWVudHM7CisgICAgU3Ry
aW5nQnVpbGRlciBmdW5jdGlvblN0cmluZ0J1aWxkZXI7CisgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKKworICAgIC8vIEJ1aWxkIHVwIGEgbmV3IHNjcmlwdCBzdHJpbmcgdGhhdCBpcyBhbiBhc3lu
YyBmdW5jdGlvbiB3aXRoIGFyZ3VtZW50cywgYW5kIGRlc2VyaWFsaXplIHRob3NlIGFyZ3VtZW50
cy4KKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CisgICAg
Zm9yIChhdXRvIGFyZ3VtZW50ID0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmJlZ2luKCk7IGFyZ3Vt
ZW50ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5lbmQoKTspIHsKKyAgICAgICAgZnVuY3Rpb25T
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmd1bWVudC0+a2V5KTsKKyAgICAgICAgYXV0byBzZXJpYWxp
emVkQXJndW1lbnQgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMo
V1RGTW92ZShhcmd1bWVudC0+dmFsdWUpKTsKKworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIGF1dG8ganNBcmd1bWVu
dCA9IHNlcmlhbGl6ZWRBcmd1bWVudC0+ZGVzZXJpYWxpemUoZ2xvYmFsT2JqZWN0LCAmZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBhcmd1bWVudCB0
byBleGVjdXRlIGFzeW5jaHJvbm91cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbWFya2VkQXJndW1lbnRzLmFwcGVuZChqc0Fy
Z3VtZW50KTsKKworICAgICAgICArK2FyZ3VtZW50OworICAgICAgICBpZiAoYXJndW1lbnQgIT0g
cGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpKQorICAgICAgICAgICAgZnVuY3Rpb25TdHJpbmdC
dWlsZGVyLmFwcGVuZCgnLCcpOworICAgIH0KKworICAgIGlmICghZXJyb3JNZXNzYWdlLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyBl
cnJvck1lc3NhZ2UgfSk7CisKKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpeyIs
IHBhcmFtZXRlcnMuc291cmNlLCAifSkiKTsKKworICAgIGF1dG8gc291cmNlQ29kZSA9IFNjcmlw
dFNvdXJjZUNvZGUgeyBmdW5jdGlvblN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSwgVVJMKG1fZnJh
bWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1l
LmRvY3VtZW50KCktPmNoYXJzZXQoKSkgfTsKKyAgICBjb25zdCBhdXRvJiBqc1NvdXJjZUNvZGUg
PSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOworCisgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpz
U291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKKyAgICBjb25zdCBTdHJpbmcqIHNhdmVkU291
cmNlVVJMID0gbV9zb3VyY2VVUkw7CisgICAgbV9zb3VyY2VVUkwgPSAmc291cmNlVVJMOworCisg
ICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNv
ZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisKKyAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZTsK
KyAgICBkbyB7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QgPSBKU0V4ZWNTdGF0ZTo6
cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3Ro
ZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKworICAgICAg
ICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGlmICghZnVuY3Rpb25PYmplY3QgfHwgIWZ1bmN0aW9uT2JqZWN0LmlzRnVuY3Rpb24od29ybGQu
dm0oKSkpIHsKKyAgICAgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIGNy
ZWF0ZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwiX3MgfSB9OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU2MgorICAgICAgICAvLyBHZXR0aW5nIENhbGxE
YXRhL0NhbGxUeXBlIHNob3VsZG4ndCBiZSByZXF1aXJlZCB0byBjYWxsIGludG8gSlMuCisgICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHdvcmxkLnZtKCksIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSk7CisgICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRh
aWxzID0geyB7ICJVbmFibGUgdG8gcHJlcGFyZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9uIHRv
IGJlIGNhbGxlZCJfcyB9IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCgmZ2xvYmFsT2JqZWN0
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwg
Y2FsbERhdGEsICZwcm94eSwgbWFya2VkQXJndW1lbnRzLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
KyAgICB9IHdoaWxlIChmYWxzZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOworCisgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24g
JiYgIW9wdGlvbmFsRGV0YWlscykgeworICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFpbHM7
CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0
aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIG9wdGlv
bmFsRGV0YWlscyA9IFdURk1vdmUoZGV0YWlscyk7CisgICAgfQorCisgICAgbV9zb3VyY2VVUkwg
PSBzYXZlZFNvdXJjZVVSTDsKKworICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCkBAIC01ODcsMTMg
KzY4NCwyNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2Vu
dFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihETwogICAgIHJldHVybiByZXN1bHQgPyBy
ZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiBWYWx1ZU9yRXhjZXB0aW9uIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUp
Cit7CisgICAgcmV0dXJuIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29y
bGQsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwor
fQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkSW50ZXJuYWwoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gKm1fZnJh
bWUuZG9jdW1lbnQoKTsKICAgICBpZiAoIXNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhkb2N1
bWVudCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsg
IlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNl
Y3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlw
dHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcyB9KTsKIAogICAgIGRv
Y3VtZW50LnNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAg
cmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
K30KKwordm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwo
d29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworCisgICAgLy8gRklYTUU6IElmIHRoZSByZXN1
bHQgaXMgYSB0aGVuYWJsZSwgaW5zdGFsbCB0aGUgZnVsZmlsbC9yZWplY3QgaGFuZGxlcnMgaW5z
dGVhZCBvZiByZXNvbHZpbmcgbm93LgorCisgICAgcmVzb2x2ZUZ1bmN0aW9uKHJlc3VsdCk7CiB9
CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERv
Y3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAppbmRleCBhM2Y2YzNhZjU4YzAxYTAxNzA4MzUyMzliYWFmNTk1NjMz
OTBjZjRhLi5jNmIwMjhlNjhiYjRhNjFhMGY4MDhjZjE0N2NhOTc1ODllMDkzNzYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yMyw2ICsy
Myw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSlNXaW5k
b3dQcm94eS5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC02Miw3ICs2MywxMSBAQCBjbGFzcyBN
b2R1bGVGZXRjaFBhcmFtZXRlcnM7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBXaWRnZXQ7CisKK2VudW0gY2xhc3MgUnVuQXNBc3luY0Z1bmN0
aW9uIDogYm9vbDsKKwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CitzdHJ1Y3QgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnM7CiAKIGVudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRz
IHsKICAgICBBYm91dFRvQ3JlYXRlRXZlbnRMaXN0ZW5lciwKQEAgLTkwLDExICs5NSwxNiBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFw
cGVyV29ybGQ+PiYpOwogCisgICAgdXNpbmcgQXJndW1lbnRXaXJlQnl0ZXNNYXAgPSBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+PjsKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+OworCiAgICAgV0VCQ09SRV9FWFBP
UlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIEpTQzo6SlNW
YWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3Js
ZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7
Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2Up
OwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVl
T3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBSZXNvbHZlRnVu
Y3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxk
Jik7CiAKICAgICBib29sIHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNv
bnN0OwogCkBAIC0xMDUsMTAgKzExNSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4g
ZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZy
b20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2Vw
dGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFw
cGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1
bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsK
ICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBT
dHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZv
aWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNzAsNiArMTc2LDExIEBA
IHB1YmxpYzoKICAgICBib29sIHdpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNj
cmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZFeGVjdXRp
bmdKYXZhc2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CisgICAgVmFsdWVPckV4Y2VwdGlvbiBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7Cisg
ICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gY2FsbEluV29ybGQo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgCiAgICAg
dm9pZCBzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgSlND
OjpKU0ludGVybmFsUHJvbWlzZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9pZCBkaXNj
b25uZWN0UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNTRjMzRlODg4NGMyNGNj
YjgyNGU2ZDJiY2ZkMzYwMjc3Njg1MjcwZS4uMWY0M2U2M2M2MTEyZTBmNjQ3NjlhNDE4MzA2Yzhi
NDZiYjIwZGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCiAgICAgc3RhdGljIGlkIGRlc2Vy
aWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbik7CisgICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gd2lyZUJ5dGVzRnJv
bU5TT2JqZWN0KGlkKTsKICNlbmRpZgogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGF0YSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNj
NzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmLi5kZDc5NmI4MzMyMzU5ZTFjM2IxZTU1NzVm
ZDdhMDMzNTNjYjFmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1Bh
Z2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNh
bGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVm
KS0+c3RyaW5nKCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxi
YWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwgKGVycm9yICE9IENhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwg
Y29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0K
aW5kZXggYTI2NzNlMjVjMTEzNDA3MTkxMmMyMDI4ZmQ3ZGYyMjk2NTRhYTM4ZS4uNDA1ZGE5MjAw
NmExMWI4MDliZjFkZjA2NjRmNmQ4MjRhZGQ5ZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWVDb2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHQuaD4KICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpAQCAtNTksMTEgKzYwLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8
U2hhcmVkSlNDb250ZXh0PiBtX3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYg
c2hhcmVkQ29udGV4dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29u
dGV4dD4gc2hhcmVkQ29udGV4dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30K
KwogaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQq
IGNvbnRleHQgPSBzaGFyZWRDb250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0Nv
bnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAg
SlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVS
ZWYpCkBAIC03Myw0ICs3OSwyMCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVy
biB2YWx1ZS50b09iamVjdDsKIH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFy
ZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2Jq
ZWN0ID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisK
KyAgICBhdXRvIGNvcmVWYWx1ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCpnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0p
KTsKKyAgICByZXR1cm4gY29yZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
MTJmMDJhMTdlNmMxMjVhZDVkZGUyZmE5YTQyNDg1NWE3Y2Y3MDdhYy4uNGM2MTM3MjM5MDM1MGFj
M2IzODRlMGQ2ZmIxNWI2NmMzZDNiNjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4NiBAQCBzdGF0aWMgV0tF
cnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0
cmluZyBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFz
QXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1
YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1
cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQs
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1l
bnQoaWQgYXJndW1lbnQpCit7CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
IHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAg
ICAgX19ibG9jayBCT09MIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVy
YXRlT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3Ap
IHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0K
KworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
IHsKKyAgICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1l
bnQgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwg
IXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVz
ZXJHZXN0dXJlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2
YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJy
b3IgZXJyb3JDb2RlKSB7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50c01hcDsKKyAgICBpZiAoYXNBc3luY0Z1bmN0
aW9uKQorICAgICAgICBhcmd1bWVudHNNYXAgPSBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpB
cmd1bWVudFdpcmVCeXRlc01hcCB7IH07CisgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5p
bDsKKworICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykgeworICAgICAgICBpZiAoIVtrZXkg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICAgICAgZXJyb3JNZXNz
YWdlID0gQCJGdW5jdGlvbiBhcmd1bWVudCBuYW1lcyBtdXN0IGJlIHN0cmluZ3MiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWQgdmFsdWUgPSBbYXJndW1l
bnRzIG9iamVjdEZvcktleTprZXldOworICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQodmFs
dWUpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZh
bHVlcyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkg
dGhlIGZvbGxvd2luZyB0eXBlczogTlNTdHJpbmcsIE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXks
IGFuZCBOU0RpY3Rpb25hcnkiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAK
KyAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2ly
ZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAgICAgICAgLy8gU2luY2Ugd2UndmUgdmFsaWRh
dGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3ZlLCB3ZSBzaG91bGQgbmV2ZXIgZmFpbCB0byBz
ZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgorICAgICAgICBBU1NFUlQod2lyZUJ5dGVzKTsK
KyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5LCAqd2lyZUJ5dGVzKTsKKyAgICB9CisKKyAg
ICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CisKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZv
ckVycm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNM
b2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJy
b3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
KworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3Vy
cmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVyLCBlcnJvcl0geworICAgICAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7
CisgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsK
KworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSh7IGphdmFTY3JpcHRTdHJpbmcsIChib29sKWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92
ZShhcmd1bWVudHNNYXApLCAoYm9vbClmb3JjZVVzZXJHZXN0dXJlIH0sIFtoYW5kbGVyXShBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2Fs
bGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE5MjMsNiArMTk5NSwxMSBAQCAtICh2b2lkKV90YWtlUERGU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hv
dENvbgogICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOnBkZkNvbmZpZ3VyYXRp
b24gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCistICh2b2lkKV9j
YWxsQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVu
dHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
aWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtzZWxmIF9ldmFs
dWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKwogLSAoTlNEYXRhICopX3Nlc3Npb25TdGF0ZURhdGEK
IHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24g
c3RhdGUgZW5jb2Rlci4KQEAgLTIwNjUsNyArMjE0Miw3IEBAIC0gKHZvaWQpX2lzSklURW5hYmxl
ZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9y
Y2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cisg
ICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5j
dGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBv
bGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IDI1MTEzNzQyM2UwNzY0NDAyMGZiMDY2NmZjZDIwMDQ4NzM4MmRmM2IuLmRkM2VjOWVjMjJhYmJm
ZjE5MmE4MDgxOGJlYmVhNWY2N2ZkYzg2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzEzLDYgKzMxMyw5IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxl
bWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAogLSAodm9pZClfdGFr
ZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICop
c25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEg
KnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKHZv
aWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFy
Z3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworCiBAZW5kCiAKICNp
ZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA4MzU2MmM1ZDkwNjk3YWY2NDgyZDNiODY1YzYwNDljOTViM2ExZTI3Li42MTlkMjgz
NDM5M2ZhMGZmMDUxMzRkOWEyNzQ1NWQ3MzQ3NmU0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4NDksMTIgKzM4NDksMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQ
cm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1
bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHll
dHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2NSw3ICsz
ODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMs
IHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCAwYzZiZDIwMjY0NzJiOTc0OTkwNGRkMzZlMzI2NDhlZGI3YTk2Mzlh
Li43ODZjMjE5OGQ4NjRmMDUzNTA1NGU4YzNkYThiZGYxZDg4NTAwZTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9p
bnRlcklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgpAQCAtMTA2MSw4ICsxMDYyLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZG
cmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29y
ZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29y
bGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCiAgICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjQ0NWFhNWE3MjU2ZDZiYTg3ZDcz
NmYyNmJhZGM3MWE5ODA4ZTRkMC4uZmRmNjU2YWQzZTZjOGNmYzlhZDFmZTMxYWFjNmVjNDQ5OTMx
NWU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTIxNCw2ICsyMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CkBAIC0zMzUyLDQ1ICszMzUzLDQ5IEBAIEtleWJv
YXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRB
Y2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXli
b2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTog
V2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVj
dHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhl
Y3V0aW9uLgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVP
ckV4Y2VwdGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFt
ZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVG
cmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29y
ZVdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsg
IlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJf
cyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJl
c29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHdv
cmxkID0gbWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY2FsbGJhY2tJ
RF0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwogICAgICAgICBpZiAocmVzdWx0KSB7
Ci0gICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAorICAgICAgICAgICAg
c2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJh
bWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkLnB0cigpKSwKICAgICAgICAgICAgICAgICB0b1Jl
ZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdv
cmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwogICAgICAgICB9Ci0gICAgfQogCi0g
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZS0+ZGF0YSgpOworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAg
ICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgIGRhdGFSZWZlcmVu
Y2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKworICAgICAgICBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
ICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRl
dGFpbHM+IGRldGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1
bHQuZXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRW
YWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICB9
OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1
dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBzY3JpcHQs
IGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNj
cmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGROYW1lLCBjYWxs
YmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWlu
V2ViRnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgc2NyaXB0LCBm
b3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFT
Y3JpcHQoZnJhbWUsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0
dXJlIH0sIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0
Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTVkYjRiODlkNmM4YTdiODJkMWRkZjZi
Njc0NTQ0MDU1NjJmMTg4OC4uNjJmYTk1NzRlM2Y2MjU0ZTliOTAyNDZlOTliM2Q1ZDBiZjMyMmNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTk3
LDYgKzE5Nyw3IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwogc3RydWN0IEhpZ2hs
aWdodDsKIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50
SW5mbzsKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0Q2hlY2tp
bmdSZXN1bHQ7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAKQEAgLTE0MzQsOCArMTQzNSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxi
YWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUs
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZv
aWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJ
bnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggOTliMzJmZWY3ODQ5YTBkNWY4YjNiNTNmNmQ0MjUwZmY1NDE1MDUwMS4uOGY1ZjYzYTkz
OTI0NzE4N2U2MTk0M2YxOTkyYWI3Zjg3Y2NjN2UxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsNyArMjA0
LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3Ry
dWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFs
PFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBS
dW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3Ry
aW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
ZWRiNDAxMTFlNWRkZDU2MGNhODNlZWRkZTFmYmNhY2Y0MmRlZDQ0Li4xOTg4Njk4MzBiYzg2Njk5
N2YwYzVhNGNmMmRkNThiOWI0ZjBmMTcxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTItMjMgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJIHRv
IGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3Vt
ZW50czplcnJvcjpdKToKKwogMjAxOS0xMi0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICAtW1VJV0tEb2N1bWVudENvbnRleHQgbWFya2VkVGV4dFJh
bmdlXSBpcyB3cm9uZyB3aGVuIHRoZSBjYXJldCBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIG1hcmtl
ZCB0ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdjMmY4ZjM0M2UwNjI3ZGRiYzgyMTE0
Y2YxY2UwMzE3ZTg4NTRmODcuLjU3OGQ5NmZmYmJjMTJiMzEyYzgzNTk5ZTdmYThmYjM2MTkyMWE3
ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTAsNiArMjkwLDcgQEAKIAkJNTFBRjIz
REYxRUYxQTM3MzAwNzJGMjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFGMjNERTFFRjFBMzcyMDA3MkYy
ODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTFCMUVFOTYxQzgwRkFFRjAw
NjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NDFDODBGQUREMDA2NEZC
OTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovOyB9OwogCQk1MUIxRUU5NzFDODBG
QUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk1MUM4MEZBREQw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07CisJCTUxQjQwRDlF
MjNBQzk2MjQwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFz
eW5jRnVuY3Rpb24ubW0gKi87IH07CiAJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRl
eGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVk
REJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUg
LyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKIAkJNTFCRTlFNjYyMzc2MDg5RjAw
QjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gKi87
IH07CkBAIC0xODQwLDYgKzE4NDEsNyBAQAogCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyog
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFCMUVFOTQxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJQZXJzaXN0ZW5jZS0x
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NTFDODBGQUREMDA2
NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDU0RUIxQjRFMjM2QjAwODVFQUE2
IC8qIFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlzaExvYWRGb3JGcmFtZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlz
aExvYWRGb3JGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNDkx
Qzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODI2LDYgKzI4MjgsNyBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBB
bmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyogQXBw
bGVQYXkubW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3QubW0gKi8sCisJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FD
QyAvKiBBdHRyU3R5bGUubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1
dG9GaWxsQXZhaWxhYmxlLm1tICovLApAQCAtNDUzMSw2ICs0NTM0LDcgQEAKIAkJCQlBMTc5OEI4
MjIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQk2M0Y2
NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQjQwRDlFMjNBQzk2MjQwMEUwNTI0MSAv
KiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0MTM4QzcyMDMyNjFDQTAw
RjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzNzYwQzRGMTIxMTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxl
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwMTc4Yzc5ZjE2YmQ1
Nzk4NjY3NTczNzJmOTVjN2E1Mjg0ZGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMCwwICsxLDE2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitURVNUKEFzeW5jRnVuY3Rpb24sIEJhc2ljKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBG
dW5jdGlvbiB3aXRoIG5vIHJldHVybiB2YWx1ZS4KKyAgICAvLyBSZXR1cm5zIEphdmFTY3JpcHQg
dW5kZWZpbmVkIHdoaWNoIHRyYW5zbGF0ZXMgdG8gbmlsLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJW
aWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCIxIiB3aXRoQXJndW1lbnRzOm5pbCBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfRVEocmVz
dWx0LCBuaWwpOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBleHBsaWNpdCBudWxsLgorICAg
IC8vIFJldHVybnMgSmF2YVNjcmlwdCBudWxsIHdoaWNoIHRyYW5zbGF0ZXMgdG8gTlNOdWxsLgor
ICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1
cm4gbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bGwg
Y2xhc3NdXSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgbnVtYmVyLgorICAgIHJlc3Vs
dCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0
aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsK
KyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworCisgICAgLy8g
RnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RC
eUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuICcxJyIgd2l0aEFyZ3VtZW50czpuaWwgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIjEiXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBsZSBh
cmd1bWVudHMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwLCBAImIiIDog
QDIgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOworCisgICAgLy8gVGFrZXMgbXVs
dGlwbGUgYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcywgZm9sbG93cyBqYXZhc2NyaXB0cyAi
dHlwZSBhcHBlbmRpbmciIHJ1bGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gZm9vICsgYmFyIiB3aXRoQXJndW1lbnRzOkB7IEAi
Zm9vIiA6IEAiZm9vIiwgQCJiYXIiIDogQDQyIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpA
ImZvbzQyIl0pOworCisgICAgLy8gSW52YWxpZCBKYXZhU2NyaXB0LCBzaG91bGQgcmV0dXJuIGFu
IGVycm9yLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1bnIgbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworfQor
CitURVNUKEFzeW5jRnVuY3Rpb24sIEludmFsaWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEFy
Z3VtZW50IGtleXMgbXVzdCBiZSBzdHJpbmdzLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpAeyBA
MSA6IEAxIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVY
UEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgLy8gVmFsdWVzIGNhbiBvbmx5IGJlIE5T
U3RyaW5nLCBOU051bWJlciwgTlNEYXRlLCBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBtYXkg
b25seSBjb250YWluIHRob3NlIDUgdHlwZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIg
OiBbTlNEYXRhIGRhdGFdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRz
OkB7IEAiYSIgOiBAWyBAMSwgW05TRGF0YSBkYXRhXSBdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisg
ICAgLy8gUmVmZXJlbmNlcyBhbiBhcmd1bWVudCB0aGF0IHdhcyBub3QgcHJvdmlkZWQuCisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBh
ICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwIH0gZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworfQor
CitURVNUKEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJpcCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gVGVzdHMgcm91
bmQgdHJpcHBpbmcgYSB3aG9sZSBidW5jaCBvZiBhcmd1bWVudCBpbnB1dHMgYW5kIHZlcmlmeWlu
ZyB0aGUgcmVzdWx0LgorCisgICAgaWQgdmFsdWUgPSBANDI7CisgICAgaWQgYXJndW1lbnRzID0g
QHsgQCJhIiA6IHZhbHVlIH07CisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFs
dWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQCJGb28iOworICAgIGFyZ3VtZW50
cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1l
SW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6
IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOwor
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpy
ZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQDEsIEAyIF07CisgICAgYXJndW1lbnRzID0gQHsg
QCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNF
cXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQCJmb28iLCBbTlNEYXRlIGRhdGVXaXRo
VGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIF07CisgICAgYXJndW1lbnRzID0gQHsg
QCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNF
cXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEAxLCBAImIiIDogQDIgfTsK
KyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmll
dyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6
YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVY
UEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAeyBAImEi
IDogQCJmb28iLCBAImIiIDogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJl
bmNlRGF0ZTowXSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJl
c3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIg
d2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2
YWx1ZSA9IEB7IEAiYSIgOiBAeyBAImEiIDogQDEgfSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAi
YSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5j
RnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9y
XTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1
YWw6cmVzdWx0XSk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaAppbmRleCAyYWQxNWVmMjA5NGRlZjQyNzI5ZjYwMTcwNGNmODUxNjcxNTRjMjVlLi4z
Y2M0MzRhNWQyNWUwZThkM2Q3N2Y4Yjk1YWZhMmRjNjk0YzJmMTdhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjMsNiArNjMsNyBAQAogLSAoTlNTdHJp
bmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0g
KGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5n
ICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHQ7CistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5T
RXJyb3IgKiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1
bnNpZ25lZClleHBlY3RlZENsaWVudFdpZHRoOwogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggYWFmZjI1Y2Q3MTZlY2FlNmNlNjJiNTgxNzJj
MzkyOTM1MDkyMjZlYS4uNzRhZDU4MTI1MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc4LDYg
KzE3OCwyNyBAQCAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0
dXJlOihOU1N0cmluZyAqKXNjcmlwdAogICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNl
KCk7CiB9CiAKKy0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICop
c2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNF
cnJvciAqKillcnJvck91dAoreworICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZh
bHNlOworICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgKmVycm9yT3V0ID0gbmlsOworCisgICAg
UmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OworICAgIFtzZWxmIF9jYWxsQXN5bmNGdW5jdGlvbjpz
Y3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7Cisg
ICAgICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRh
aW5dOworICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOworCisg
ICAgaWYgKGVycm9yT3V0KQorICAgICAgICBbKmVycm9yT3V0IGF1dG9yZWxlYXNlXTsKKworICAg
IHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKE5TU3RyaW5nICopc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKIHsKICAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386365</attachid>
            <date>2019-12-23 16:09:10 -0800</date>
            <delta_ts>2019-12-23 21:39:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191223160909.patch</filename>
            <type>text/plain</type>
            <size>59261</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5OGEwMzM5MmIyNDRj
ZWM1ZmE0NWUzMWY5MDNlZTg3MjQ3M2QwMi4uNTE1Mzc4YzlmMGQ4NGY1NDcyNzg5MjU1YWI1NWUy
MTQ5MWI5MzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTIzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlciBzaG91bGQgb2JzZXJ2ZSBuZXdseSBpbnNlcnRlZCBvciBkaXNwbGF5ZWQgY29udGVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzIwOWRlOGVjMzJhYWEzNjc4NWZkYjgxMzU0NTgzMTgzY2I2NTJkMi4u
ZDcwNzIwYjMxNThhNTE5MzA4YTQ0ZWZlYjY4YjM3Y2ZiZjQ1Y2NiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOS0xMi0yMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5jdGlvbiB3aXRo
IGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpzaGFyZWRDb250ZXh0KToKKyAgICAg
ICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHZh
bGlkYXRlQXJndW1lbnQpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlw
dDphc0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOndp
dGhBcmd1bWVudHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpmb3JjZVVzZXJHZXN0
dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorCiAyMDE5LTEyLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIC1bVUlXS0RvY3VtZW50Q29udGV4dCBtYXJrZWRUZXh0UmFu
Z2VdIGlzIHdyb25nIHdoZW4gdGhlIGNhcmV0IGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgbWFya2Vk
IHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1NTExZTBlMjAyMzg5ODI4Mzg2OGQ1MmMwMDUyOTYzOGQzNGZkODRkLi4zNzY3
YjlmZTEyYWJhMDA0ZWVlMjc0OTRkMGNiMDJmZGNmNWVmYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTMwLDYgKzE1MzAs
NyBAQAogCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFCQkI1
Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
NEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0
ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJFMzdFMDBEQUVFMDBF
MDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQzBB
QTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgzMzAsNiArODMzMSw3IEBACiAJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJ
REJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFj
a2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkE0QUM4MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQTk0NkYy
M0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdl
QXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyog
Q2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJh
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAwRjJBQTE1RTAwMTY0
OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Mzk0
LDYgKzI1Mzk2LDcgQEAKIAkJCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQgLyogUmVhZGFibGVT
dHJlYW0uaCAqLywKIAkJCQk0MThDMzk1RTFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEz
IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLywKKwkJCQk1MUJBOTQ2RjIz
QUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLywKIAkJCQk0MUYx
RDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJ
CQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8s
CiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICov
LApAQCAtMzIxMTYsNiArMzIxMTksNyBAQAogCQkJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAv
KiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTIxNjFFN0YzRjAwQzJFNjUy
IC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBNDE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTk0NzEyM0FDMzA1MzAw
NDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDc2QkI4MjE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NjlEMjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9k
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlv
bkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRhYmRjZWE3M2UzYzVh
Li4xMTQxMTk4ZDJiYzNiOWQzM2Q0NTczMmFlZTFkNGM2NDkxZTZmODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0zMyw3ICszMyw3IEBA
IHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQg
bGluZU51bWJlciB7IDAgfTsKICAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmlu
ZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTFlOGMxMGRkODRkM2ZmNWM0MzA0ODNi
MzYxODc3YWNhNDRhZDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5jdGlvbiA6IGJvb2wgeyBO
bywgWWVzIH07CitlbnVtIGNsYXNzIEZvcmNlVXNlckdlc3R1cmUgOiBib29sIHsgTm8sIFllcyB9
OworCit1c2luZyBBcmd1bWVudFdpcmVCeXRlc01hcCA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
dWludDhfdD4+OworCitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgeworICAgIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIHJ1bkFzQXN5bmNG
dW5jdGlvbiwgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50cywgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZShzb3VyY2UpCisgICAgICAgICwgcnVu
QXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbiA/IFJ1bkFzQXN5bmNGdW5jdGlvbjo6
WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpObykKKyAgICAgICAgLCBhcmd1bWVudHMoV1RGTW92
ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVy
ZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6IEZvcmNlVXNlckdlc3R1cmU6Ok5vKQorICAgIHsK
KyAgICB9CisKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJndW1l
bnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0
dXJlKQorICAgICAgICA6IHNvdXJjZShzb3VyY2UpCisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0
aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgLCBhcmd1bWVudHMoV1RGTW92ZShhcmd1
bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUoZm9yY2VVc2VyR2VzdHVyZSkKKyAg
ICB7CisgICAgfQorCisgICAgU3RyaW5nIHNvdXJjZTsKKyAgICBSdW5Bc0FzeW5jRnVuY3Rpb24g
cnVuQXNBc3luY0Z1bmN0aW9uOworICAgIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBh
cmd1bWVudHM7CisgICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlOworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc291cmNlIDw8IHJ1bkFzQXN5bmNGdW5j
dGlvbiA8PCBhcmd1bWVudHMgPDwgZm9yY2VVc2VyR2VzdHVyZTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNv
dXJjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNB
c3luY0Z1bmN0aW9uOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJ1bkFzQXN5bmNGdW5j
dGlvbikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlv
bmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXJndW1lbnRzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlOworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGZvcmNlVXNlckdlc3R1cmUpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IHNvdXJjZSwgcnVuQXNBc3luY0Z1bmN0
aW9uLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGZvcmNlVXNlckdlc3R1cmUgfSB9OworICAgIH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWY1YmFhMjA2MzgzNThjMGJiODJiMzdiY2Vh
MjZjYWQ5OGVmNjRhYS4uYmY2NTdiZTU4YzBhNWY4OTEzZTIxMzM1ZmQ2MTUzZjRhNWUwNDIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYXlt
ZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgorI2luY2x1ZGUg
IlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U291cmNlQ29kZS5oIgpAQCAtNTY1LDIwICs1NjYsMTE2IEBAIEpTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3Ry
aW5nJiBzY3JpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCB7IHNjcmlwdCwg
ZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKICAgICByZXR1cm4gcmVz
dWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCi1WYWx1ZU9yRXhj
ZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUp
CitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNl
VXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBz
b3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9z
aXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNj
cmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOworICAg
IFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVz
ZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsK
IAogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBz
aG91bGQgcmV0dXJuIGFuIEV4Y2VwdGlvbkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2Ny
aXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwor
ICAgIHN3aXRjaCAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24pIHsKKyAgICBjYXNlIFJ1
bkFzQXN5bmNGdW5jdGlvbjo6Tm86IHsKKyAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VD
b2RlKHBhcmFtZXRlcnMuc291cmNlLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRl
eHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2Fj
aGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7
CisgICAgICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAg
IH0KKyAgICBjYXNlIFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzOgorICAgICAgICByZXR1cm4gY2Fs
bEluV29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGQpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitWYWx1ZU9yRXhj
ZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQo
cGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMp
OworICAgIEFTU0VSVChwYXJhbWV0ZXJzLmFyZ3VtZW50cyk7CisKKyAgICBhdXRvJiBwcm94eSA9
IGpzV2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpwcm94eS53
aW5kb3coKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrZWRBcmd1bWVudHM7CisgICAg
U3RyaW5nQnVpbGRlciBmdW5jdGlvblN0cmluZ0J1aWxkZXI7CisgICAgU3RyaW5nIGVycm9yTWVz
c2FnZTsKKworICAgIC8vIEJ1aWxkIHVwIGEgbmV3IHNjcmlwdCBzdHJpbmcgdGhhdCBpcyBhbiBh
c3luYyBmdW5jdGlvbiB3aXRoIGFyZ3VtZW50cywgYW5kIGRlc2VyaWFsaXplIHRob3NlIGFyZ3Vt
ZW50cy4KKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7Cisg
ICAgZm9yIChhdXRvIGFyZ3VtZW50ID0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmJlZ2luKCk7IGFy
Z3VtZW50ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5lbmQoKTspIHsKKyAgICAgICAgZnVuY3Rp
b25TdHJpbmdCdWlsZGVyLmFwcGVuZChhcmd1bWVudC0+a2V5KTsKKyAgICAgICAgYXV0byBzZXJp
YWxpemVkQXJndW1lbnQgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0
ZXMoV1RGTW92ZShhcmd1bWVudC0+dmFsdWUpKTsKKworICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIGF1dG8ganNBcmd1
bWVudCA9IHNlcmlhbGl6ZWRBcmd1bWVudC0+ZGVzZXJpYWxpemUoZ2xvYmFsT2JqZWN0LCAmZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewor
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBhcmd1bWVu
dCB0byBleGVjdXRlIGFzeW5jaHJvbm91cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbWFya2VkQXJndW1lbnRzLmFwcGVuZChq
c0FyZ3VtZW50KTsKKworICAgICAgICArK2FyZ3VtZW50OworICAgICAgICBpZiAoYXJndW1lbnQg
IT0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpKQorICAgICAgICAgICAgZnVuY3Rpb25TdHJp
bmdCdWlsZGVyLmFwcGVuZCgnLCcpOworICAgIH0KKworICAgIGlmICghZXJyb3JNZXNzYWdlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMg
eyBlcnJvck1lc3NhZ2UgfSk7CisKKyAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
eyIsIHBhcmFtZXRlcnMuc291cmNlLCAifSkiKTsKKworICAgIGF1dG8gc291cmNlQ29kZSA9IFNj
cmlwdFNvdXJjZUNvZGUgeyBmdW5jdGlvblN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSwgVVJMKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkgfTsKKyAgICBjb25zdCBhdXRvJiBqc1NvdXJjZUNv
ZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOworCisgICAgU3RyaW5nIHNvdXJjZVVSTCA9
IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKKyAgICBjb25zdCBTdHJpbmcqIHNhdmVk
U291cmNlVVJMID0gbV9zb3VyY2VVUkw7CisgICAgbV9zb3VyY2VVUkwgPSAmc291cmNlVVJMOwor
CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJj
ZUNvZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisKKyAgICBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1
ZTsKKyAgICBkbyB7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QgPSBKU0V4ZWNTdGF0
ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6
T3RoZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKworICAg
ICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGlmICghZnVuY3Rpb25PYmplY3QgfHwgIWZ1bmN0aW9uT2JqZWN0LmlzRnVuY3Rpb24od29y
bGQudm0oKSkpIHsKKyAgICAgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRv
IGNyZWF0ZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwiX3MgfSB9OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU2MgorICAgICAgICAvLyBHZXR0aW5nIENh
bGxEYXRhL0NhbGxUeXBlIHNob3VsZG4ndCBiZSByZXF1aXJlZCB0byBjYWxsIGludG8gSlMuCisg
ICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHdvcmxkLnZtKCksIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSk7CisgICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgb3B0aW9uYWxE
ZXRhaWxzID0geyB7ICJVbmFibGUgdG8gcHJlcGFyZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9u
IHRvIGJlIGNhbGxlZCJfcyB9IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCgmZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlw
ZSwgY2FsbERhdGEsICZwcm94eSwgbWFya2VkQXJndW1lbnRzLCBldmFsdWF0aW9uRXhjZXB0aW9u
KTsKKyAgICB9IHdoaWxlIChmYWxzZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOworCisgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRp
b24gJiYgIW9wdGlvbmFsRGV0YWlscykgeworICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFp
bHM7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhj
ZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIG9w
dGlvbmFsRGV0YWlscyA9IFdURk1vdmUoZGV0YWlscyk7CisgICAgfQorCisgICAgbV9zb3VyY2VV
UkwgPSBzYXZlZFNvdXJjZVVSTDsKKworICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCkBAIC01ODcs
MTMgKzY4NCwyNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihETwogICAgIHJldHVybiByZXN1bHQg
PyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiBWYWx1ZU9yRXhjZXB0aW9u
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUpCit7CisgICAgcmV0dXJuIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwo
d29ybGQsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0p
OworfQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gKm1f
ZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAoIXNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhk
b2N1bWVudCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxz
IHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9y
IHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAsIDAsIHsgfSB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNj
cmlwdHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcyB9KTsKIAogICAg
IGRvY3VtZW50LnNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4g
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Cisg
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
KTsKK30KKwordm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJu
YWwod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworCisgICAgLy8gRklYTUU6IElmIHRoZSBy
ZXN1bHQgaXMgYSB0aGVuYWJsZSwgaW5zdGFsbCB0aGUgZnVsZmlsbC9yZWplY3QgaGFuZGxlcnMg
aW5zdGVhZCBvZiByZXNvbHZpbmcgbm93LgorCisgICAgcmVzb2x2ZUZ1bmN0aW9uKHJlc3VsdCk7
CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRz
KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhM2Y2YzNhZjU4YzAxYTAxNzA4MzUyMzliYWFmNTk1
NjMzOTBjZjRhLi40NWM0YTZlOTFiMmViZDE1ZDkxNDhiODJhOWI1MzVlNzY0NjU5NjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSlNX
aW5kb3dQcm94eS5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CkBAIC02Miw3ICs2MywxMSBAQCBjbGFz
cyBNb2R1bGVGZXRjaFBhcmFtZXRlcnM7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXaWRnZXQ7CisKK2VudW0gY2xhc3MgUnVuQXNBc3luY0Z1
bmN0aW9uIDogYm9vbDsKKwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CitzdHJ1Y3QgUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnM7CiAKIGVudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3Jp
cHRzIHsKICAgICBBYm91dFRvQ3JlYXRlRXZlbnRMaXN0ZW5lciwKQEAgLTkwLDExICs5NSwxNSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01X
cmFwcGVyV29ybGQ+PiYpOwogCisgICAgdXNpbmcgUmVzb2x2ZUZ1bmN0aW9uID0gV1RGOjpGdW5j
dGlvbjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6
SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBKU0M6OkpTVmFsdWUgZXhl
Y3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZh
bHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0
aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgUmVzb2x2ZUZ1bmN0aW9uJiYp
OworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAg
ICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmKSBjb25zdDsKIApA
QCAtMTA1LDEwICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlv
biB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0
aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxk
Jik7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0
SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwg
UmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9p
ZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsKICAgICB2b2lkIGxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTcwLDYgKzE3NSwxMSBAQCBwdWJsaWM6
CiAgICAgYm9vbCB3aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3JpcHRVUkwo
KSBjb25zdCB7IHJldHVybiBtX3dpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNj
cmlwdFVSTDsgfQogCiBwcml2YXRlOgorICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVl
T3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01X
cmFwcGVyV29ybGQmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGNhbGxJbldvcmxkKFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIAogICAgIHZvaWQgc2V0
dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIEpTQzo6SlNJbnRl
cm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdFBs
YXRmb3JtU2NyaXB0T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDU0YzM0ZTg4ODRjMjRjY2I4MjRlNmQy
YmNmZDM2MDI3NzY4NTI3MGUuLjFmNDNlNjNjNjExMmUwZjY0NzY5YTQxODMwNmM4YjQ2YmIyMGRm
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwor
ICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVj
dChpZCk7CiAjZW5kaWYKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMGMxNWY4YjkzYzc4MDdlZmQ3
NGJiZTQwMDgyODQ0NDFjNTZmYWRiZi4uZGQ3OTZiODMzMjM1OWUxYzNiMWU1NTc1ZmQ3YTAzMzUz
Y2IxZmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0y
NDcyLDcgKzI0NzIsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYg
cGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykK
IHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwo
c2NyaXB0UmVmKS0+c3RyaW5nKCksIHRydWUsIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHRvSW1wbChwYWdl
UmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmlu
ZygpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10oQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBj
YWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCmluZGV4IGEy
NjczZTI1YzExMzQwNzE5MTJjMjAyOGZkN2RmMjI5NjU0YWEzOGUuLjQwNWRhOTIwMDZhMTFiODA5
YmYxZGYwNjY0ZjZkODI0YWRkOWY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29j
b2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+CiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
QEAgLTU5LDExICs2MCwxNiBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVyPFNoYXJlZEpT
Q29udGV4dD4gbV90aW1lcjsKIH07CiAKK3N0YXRpYyBTaGFyZWRKU0NvbnRleHQmIHNoYXJlZENv
bnRleHQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRKU0NvbnRleHQ+IHNo
YXJlZENvbnRleHQ7CisgICAgcmV0dXJuIHNoYXJlZENvbnRleHQuZ2V0KCk7Cit9CisKIGlkIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFyZWRKU0NvbnRleHQ+IHNoYXJlZENvbnRleHQ7Ci0gICAgSlNDb250ZXh0KiBjb250ZXh0
ID0gc2hhcmVkQ29udGV4dC5nZXQoKS5lbnN1cmVDb250ZXh0KCk7CisgICAgSlNDb250ZXh0KiBj
b250ZXh0ID0gc2hhcmVkQ29udGV4dCgpLmVuc3VyZUNvbnRleHQoKTsKIAogICAgIEpTVmFsdWVS
ZWYgdmFsdWVSZWYgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgZXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbHVlUmVmKQpAQCAt
NzMsNCArNzksMjAgQEAgaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWQKICAgICByZXR1cm4gdmFsdWUu
dG9PYmplY3Q7CiB9CiAKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQgb2JqZWN0KQoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4
dCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGdsb2JhbE9iamVjdCA9IHRv
SlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOworCisgICAgYXV0
byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZ2xv
YmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7CisgICAg
cmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKK30KKwogfSAvLyBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDEyZjAyYTE3
ZTZjMTI1YWQ1ZGRlMmZhOWE0MjQ4NTVhN2NmNzA3YWMuLmI5YTQ0OGNlMGI4Zjg1M2JhODZhZmNk
NTMxNWQwYTlhZmRiZjQzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtODIyLDE0ICs4MjIsODYgQEAgc3RhdGljIFdLRXJyb3JDb2Rl
IGNhbGxiYWNrRXJyb3JDb2RlKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKIAog
LSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9y
Y2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwor
ICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVu
Y3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlv
bkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCi0tICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihCT09M
KWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9y
ICopKWNvbXBsZXRpb25IYW5kbGVyCitzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3VtZW50KGlkIGFy
Z3VtZW50KQoreworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJn
dW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9m
Q2xhc3M6W05TTnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChb
YXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxv
Y2sgQk9PTCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVj
dHNVc2luZ0Jsb2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQob2JqZWN0KSkgeworICAgICAgICAgICAgICAg
IHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0b3AgPSBZRVM7CisgICAgICAgICAg
ICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2YWxpZDsKKyAgICB9CisKKyAgICBp
ZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAg
ICAgIF9fYmxvY2sgYm9vbCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1l
cmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKGlkIGtleSwgaWQgdmFsdWUsIEJPT0wgKnN0
b3ApIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChrZXkpIHx8ICF2YWxpZGF0
ZUFyZ3VtZW50KHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgKnN0b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisg
ICAgICAgIHJldHVybiB2YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy0g
KHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFz
QXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3VtZW50czooTlNEaWN0
aW9uYXJ5ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVy
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRT
dHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9y
Q29kZSkgeworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1
bWVudHNNYXA7CisgICAgaWYgKGFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgYXJndW1lbnRzTWFw
ID0gV2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXAgeyB9OworICAgIE5TU3RyaW5nICplcnJv
ck1lc3NhZ2UgPSBuaWw7CisKKyAgICBmb3IgKGlkIGtleSBpbiBhcmd1bWVudHMpIHsKKyAgICAg
ICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAg
ICAgIGVycm9yTWVzc2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgbmFtZXMgbXVzdCBiZSBzdHJp
bmdzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgCisgICAgICAgIGlkIHZh
bHVlID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgaWYgKCF2YWxpZGF0
ZUFyZ3VtZW50KHZhbHVlKSkgeworICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlv
biBhcmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3Ig
Y29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNE
YXRlLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgCisgICAgICAgIGF1dG8gd2lyZUJ5dGVzID0gQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2YWx1ZSk7CisgICAgICAgIC8vIFNpbmNl
IHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlvbmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5l
dmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2lyZSBieXRlcy4KKyAgICAgICAgQVNTRVJU
KHdpcmVCeXRlcyk7CisgICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgKndpcmVCeXRlcyk7
CisgICAgfQorCisgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOworCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6bG9jYWxpemVk
RGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25PY2N1cnJl
ZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICBbdXNlckluZm8g
c2V0T2JqZWN0OmVycm9yTWVzc2FnZSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbk1lc3Nh
Z2VFcnJvcktleV07CisKKyAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOworICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbaGFuZGxlciwgZXJyb3JdIHsK
KyAgICAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSlo
YW5kbGVyLmdldCgpOworICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYWdlLT5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoeyBqYXZhU2NyaXB0U3RyaW5nLCAoYm9vbClhc0FzeW5jRnVu
Y3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBb
aGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5k
bGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTIzLDYgKzE5OTUsMTEgQEAgLSAodm9p
ZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0
aW9uICopc25hcHNob3RDb24KICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpw
ZGZDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0K
IAorLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0
aW9uOllFUyB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKIC0gKE5TRGF0YSAqKV9zZXNz
aW9uU3RhdGVEYXRhCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxl
Z2FjeSBzZXNzaW9uIHN0YXRlIGVuY29kZXIuCkBAIC0yMDY1LDcgKzIxNDIsNyBAQCAtICh2b2lk
KV9pc0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9p
ZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFT
Y3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2Ny
aXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlv
bkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmlu
ZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpO
TyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX3Vw
ZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0ZVBvbGljaWVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAppbmRleCAyNTExMzc0MjNlMDc2NDQwMjBmYjA2NjZmY2QyMDA0ODczODJkZjNiLi5k
ZDNlYzllYzIyYWJiZmYxOTJhODA4MThiZWJlYTVmNjdmZGM4NmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTMx
Myw2ICszMTMsOSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2Up
IHsKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAq
KXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAK
IC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCistICh2b2lkKV9jYWxsQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsK
KwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggODM1NjJjNWQ5MDY5N2FmNjQ4MmQzYjg2NWM2MDQ5Yzk1YjNh
MWUyNy4uNjE5ZDI4MzQzOTNmYTBmZjA1MTM0ZDlhMjc0NTVkNzM0NzZlNDYwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ5LDEyICszODQ5LDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAg
ICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9j
ZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQs
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxp
dHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25l
IGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsK
QEAgLTM4NjUsNyArMzg2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQo
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChwYXJhbWV0ZXJzLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGM2YmQyMDI2NDcyYjk3NDk5MDRkZDM2ZTMy
NjQ4ZWRiN2E5NjM5YS4uNzg2YzIxOThkODY0ZjA1MzUwNTRlOGMzZGE4YmRmMWQ4ODUwMGU5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkyLDYgKzkyLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BvaW50ZXJJRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9w
dXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KQEAgLTEwNjEsOCAr
MTA2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAg
IHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0
V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0
YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwotICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFs
PFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVz
LgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDY0NDVhYTVh
NzI1NmQ2YmE4N2Q3MzZmMjZiYWRjNzFhOTgwOGU0ZDAuLmZkZjY1NmFkM2U2YzhjZmM5YWQxZmUz
MWFhYzZlYzQ0OTkzMTVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0yMTQsNiArMjE0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgpAQCAtMzM1Miw0NSArMzM1
Myw0OSBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJU
b0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0
aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJp
bmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkp
OwotICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29y
bGROYW1lID8gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUo
KSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFtZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9
IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGlm
ICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0
aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBQYWdlIGlzIGluIGlu
dmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJhY2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFt
ZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAg
aWYgKHJlc3VsdCkgewotICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwK
KyAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCiAgICAgICAg
ICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
d29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LnZhbHVlKCkpLCBudWxscHRyKTsKICAgICAgICAg
fQotICAgIH0KIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlm
IChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxp
emVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2U7CisgICAgICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCisgICAgICAgICAg
ICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisKKyAgICAg
ICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBk
ZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFj
a0lEKSk7CisgICAgfTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0
VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y3JpcHQoKS5leGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+
Y29yZVdvcmxkKCksIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9u
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJh
bWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwor
ICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdv
cmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdElu
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBBU1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJh
bWUsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsK
KyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
Zm9yY2VVc2VyR2VzdHVyZSB9LCBXVEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE1ZGI0Yjg5ZDZj
OGE3YjgyZDFkZGY2YjY3NDU0NDA1NTYyZjE4ODguLjYyZmE5NTc0ZTNmNjI1NGU5YjkwMjQ2ZTk5
YjNkNWQwYmYzMjJjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsK
IHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm87CitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM7CiBzdHJ1
Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogCkBAIC0x
NDM0LDggKzE0MzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVu
SmF2YVNjcmlwdChXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5h
bWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8
U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVj
dCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFj
a0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDk5YjMyZmVmNzg0OWEwZDVmOGIzYjUzZjZkNDI1MGZmNTQxNTA1
MDEuLjhmNWY2M2E5MzkyNDcxODdlNjE5NDNmMTk5MmFiN2Y4N2NjYzdlMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBH
ZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQotICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0
ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggOWVkYjQwMTExZTVkZGQ1NjBjYTgzZWVkZGUxZmJjYWNmNDJkZWQ0NC4uMTk4
ODY5ODMwYmM4NjY5OTdmMGM1YTRjZjJkZDU4YjliNGYwZjE3MSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEy
LTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tX
ZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbTogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOndpdGhBcmd1bWVudHM6ZXJyb3I6XSk6CisKIDIwMTktMTItMTYgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgLVtVSVdLRG9jdW1lbnRDb250ZXh0
IG1hcmtlZFRleHRSYW5nZV0gaXMgd3Jvbmcgd2hlbiB0aGUgY2FyZXQgaXMgbm90IGF0IHRoZSBz
dGFydCBvZiBtYXJrZWQgdGV4dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YzJmOGYzNDNl
MDYyN2RkYmM4MjExNGNmMWNlMDMxN2U4ODU0Zjg3Li41NzhkOTZmZmJiYzEyYjMxMmM4MzU5OWU3
ZmE4ZmIzNjE5MjFhN2U1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkwLDYgKzI5MCw3
IEBACiAJCTUxQUYyM0RGMUVGMUEzNzMwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRjIzREUx
RUYxQTM3MjAwNzJGMjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gKi87IH07CiAJCTUxQjFF
RTk2MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTQx
QzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCAqLzsgfTsKIAkJ
NTFCMUVFOTcxQzgwRkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIx
RUU5NTFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9
OworCQk1MUI0MEQ5RTIzQUM5NjI0MDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjQwRDlEMjNBQzk2MEUw
MEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0
MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4
MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0
RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUy
QzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CiAJCTUxQkU5
RTY2MjM3NjA4OUYwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUU2NTIzNzYwODk1MDBCNEUxMTcgLyogTWVk
aWFUeXBlLm1tICovOyB9OwpAQCAtMTg0MCw2ICsxODQxLDcgQEAKIAkJNTFCMUVFOEQxQzgwRjU4
ODAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCUGVyc2lzdGVuY2UubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQ
ZXJzaXN0ZW5jZS0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERC
UGVyc2lzdGVuY2UtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMUVF
OTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5
bmNGdW5jdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFz
eW5jRnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1NEVCMUI0
RTIzNkIwMDg1RUFBNiAvKiBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRGaW5pc2hMb2FkRm9yRnJhbWUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3Q2xvc2VJ
bnNpZGVEaWRGaW5pc2hMb2FkRm9yRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQkNFRTQ5MUM4NEY0QUYwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJNdWx0aVBy
b2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTRDMUM4NEY1MkMw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjgyNiw2ICsyODI4LDcgQEAKIAkJCQkyREU3MUFGRDFENDlDMEJE
MDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJQTE3OThCODEyMjQzMUQ2NTAw
MDc2NEJEIC8qIEFwcGxlUGF5Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLAorCQkJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0
MSAvKiBBc3luY0Z1bmN0aW9uLm1tICovLAogCQkJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAv
KiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQkzNzYwQzRGMDIx
MTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tICovLAogCQkJCTc1NENFQzgwMUY2NzIyREMw
MEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKQEAgLTQ1MzEsNiArNDUzNCw3IEBA
CiAJCQkJQTE3OThCODIyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjNGNjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3Qu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyogQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUI0MEQ5RTIzQUM5
NjI0MDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzNDEz
OEM3MjAzMjYxQ0EwMEYyNjk2MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBBdHRyaWJ1
dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MEM0RjEyMTEyNDlBRjAwMjMzQUND
IC8qIEF0dHJTdHlsZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5
MDE3OGM3OWYxNmJkNTc5ODY2NzU3MzcyZjk1YzdhNTI4NGRkN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0K
QEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChBc3luY0Z1bmN0aW9uLCBCYXNpYykKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9y
OworCisgICAgLy8gRnVuY3Rpb24gd2l0aCBubyByZXR1cm4gdmFsdWUuCisgICAgLy8gUmV0dXJu
cyBKYXZhU2NyaXB0IHVuZGVmaW5lZCB3aGljaCB0cmFuc2xhdGVzIHRvIG5pbC4KKyAgICBpZCBy
ZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAiMSIgd2l0aEFy
Z3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
RVhQRUNUX0VRKHJlc3VsdCwgbmlsKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgZXhwbGlj
aXQgbnVsbC4KKyAgICAvLyBSZXR1cm5zIEphdmFTY3JpcHQgbnVsbCB3aGljaCB0cmFuc2xhdGVz
IHRvIE5TTnVsbC4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1
bmN0aW9uOkAicmV0dXJuIG51bGwiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07Cisg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZD
bGFzczpbTlNOdWxsIGNsYXNzXV0pOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBhIG51bWJl
ci4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAi
cmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFd
KTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcuCisgICAgcmVzdWx0ID0gW3dl
YlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAnMSciIHdpdGhBcmd1
bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVY
UEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCIxIl0pOworCisgICAgLy8gVGFr
ZXMgbXVsdGlwbGUgYXJndW1lbnRzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6
IEA0MCwgQCJiIiA6IEAyIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
KTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKKworICAg
IC8vIFRha2VzIG11bHRpcGxlIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMsIGZvbGxvd3Mg
amF2YXNjcmlwdHMgInR5cGUgYXBwZW5kaW5nIiBydWxlcy4KKyAgICByZXN1bHQgPSBbd2ViVmll
dyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGZvbyArIGJhciIgd2l0aEFy
Z3VtZW50czpAeyBAImZvbyIgOiBAImZvbyIsIEAiYmFyIiA6IEA0MiB9IGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0Vx
dWFsVG9TdHJpbmc6QCJmb280MiJdKTsKKworICAgIC8vIEludmFsaWQgSmF2YVNjcmlwdCwgc2hv
dWxkIHJldHVybiBhbiBlcnJvci4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxp
bmdBc3luY0Z1bmN0aW9uOkAicmV0dW5yIG51bGwiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZl
cnJvcl07CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKK30KKworVEVTVChBc3luY0Z1bmN0aW9uLCBJbnZhbGlkQXJndW1lbnRzKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7
CisKKyAgICAvLyBBcmd1bWVudCBrZXlzIG11c3QgYmUgc3RyaW5ncy4KKyAgICBpZCByZXN1bHQg
PSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhB
cmd1bWVudHM6QHsgQDEgOiBAMSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIC8vIFZhbHVlcyBj
YW4gb25seSBiZSBOU1N0cmluZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgTlNEaWN0aW9u
YXJ5LCBhbmQgbWF5IG9ubHkgY29udGFpbiB0aG9zZSA1IHR5cGVzLgorICAgIHJlc3VsdCA9IFt3
ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3Vt
ZW50czpAeyBAImEiIDogW05TRGF0YSBkYXRhXSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNU
X05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIHJl
c3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIg
d2l0aEFyZ3VtZW50czpAeyBAImEiIDogQFsgQDEsIFtOU0RhdGEgZGF0YV0gXSB9IGVycm9yOiZl
cnJvcl07CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3Ig
PT0gbmlsKTsKKworICAgIC8vIFJlZmVyZW5jZXMgYW4gYXJndW1lbnQgdGhhdCB3YXMgbm90IHBy
b3ZpZGVkLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gYSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCB9IGVycm9yOiZl
cnJvcl07CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3Ig
PT0gbmlsKTsKK30KKworVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAg
IC8vIFRlc3RzIHJvdW5kIHRyaXBwaW5nIGEgd2hvbGUgYnVuY2ggb2YgYXJndW1lbnQgaW5wdXRz
IGFuZCB2ZXJpZnlpbmcgdGhlIHJlc3VsdC4KKworICAgIGlkIHZhbHVlID0gQDQyOworICAgIGlk
IGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3
IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czph
cmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQ
RUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEAiRm9vIjsK
KyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmll
dyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6
YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVY
UEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdOworICAgIGFyZ3VtZW50
cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEBbIEAxLCBAMiBdOworICAgIGFy
Z3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVj
dEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RS
VUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEBbIEAiZm9vIiwgW05T
RGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTowXSBdOworICAgIGFy
Z3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVj
dEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RS
VUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAMSwg
QCJiIiA6IEAyIH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVz
dWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3
aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZh
bHVlID0gQHsgQCJhIiA6IEAiZm9vIiwgQCJiIiA6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZVJlZmVyZW5jZURhdGU6MF0gfTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFs
dWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9u
OkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3Vs
dF0pOworCisgICAgdmFsdWUgPSBAeyBAImEiIDogQHsgQCJhIiA6IEAxIH0gfTsKKyAgICBhcmd1
bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RC
eUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRz
IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVF
KFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggMmFkMTVlZjIwOTRkZWY0MjcyOWY2MDE3MDRjZjg1
MTY3MTU0YzI1ZS4uM2NjNDM0YTVkMjVlMGU4ZDNkNzdmOGI5NWFmYTJkYzY5NGMyZjE3YSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTYzLDYgKzYzLDcg
QEAKIC0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHQ7CiAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0
dXJlOihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6KE5TU3RyaW5nICopc2NyaXB0OworLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlv
bjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1l
bnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVudGlsQ2xp
ZW50V2lkdGhJczoodW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGFhZmYyNWNkNzE2ZWNh
ZTZjZTYyYjU4MTcyYzM5MjkzNTA5MjI2ZWEuLjc0YWQ1ODEyNTAxNmMwMzFmOGM1ZTRlZGJiOTQ4
ZTE4MDVlYjU1MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KQEAgLTE3OCw2ICsxNzgsMjcgQEAgLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQKICAgICByZXR1cm4gZXZhbFJlc3Vs
dC5hdXRvcmVsZWFzZSgpOwogfQogCistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9u
OihOU1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVu
dHMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JPdXQKK3sKKyAgICBib29sIGlzV2FpdGluZ0Zvckph
dmFTY3JpcHQgPSBmYWxzZTsKKyAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICplcnJvck91dCA9
IG5pbDsKKworICAgIFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBfY2FsbEFz
eW5jRnVuY3Rpb246c2NyaXB0IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBldmFsUmVzdWx0
ID0gcmVzdWx0OworICAgICAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICAgICAqZXJyb3JPdXQg
PSBbZXJyb3IgcmV0YWluXTsKKyAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZh
U2NyaXB0KTsKKworICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgWyplcnJvck91dCBhdXRvcmVs
ZWFzZV07CisKKyAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOworfQorCiAtIChO
U1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
CiB7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386373</attachid>
            <date>2019-12-23 21:39:09 -0800</date>
            <delta_ts>2019-12-23 21:47:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191223213908.patch</filename>
            <type>text/plain</type>
            <size>59970</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uYWIzMTEzZDliNmMzOTU5ZTI2YzJiMmVlNWVhNGQ4
NzE4OTBlZjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTIzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBTcGVjaWFsIGNvbWJpbmF0aW9uIGNoYXJhY3RlcnMgZG9lc24ndCByZXNwZWN0IHRoZSBrZXlz
dHJva2Ugb3JkZXIgd2hlbiBoaWdoIENQVSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc3YzQ2ZDdmNGY5ZDhj
NTgyNzkzZTg2ZDlhMDBjNzQ4NTUwYWQ4MDAuLjQwODA3OWY1YjdkZWI1ZmNlYjc5NTM1ZDAzNjZm
OGE2YWNkMjkxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTItMjMgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJ
IHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbToKKyAgICAgICAg
KEFQSTo6c2hhcmVkQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVu
dHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaE9TIGJ1
aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXRWTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0Vk0uaAppbmRleCBm
MThhMTU4OTIzMWU4YzY1ZTQ3MDg0YjI3ZmMzZjNjMGQzZTU5YWVmLi4zMzYwZTY5YjkzMzVlNGY0
YjhiYjg3NmNhMDFiNWVkYzYxM2I5Y2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXRWTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dFZNLmgKQEAgLTI1LDEyICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgVk07Ci0KLS8vIEhlbHBlciBmdW5j
dGlvbiB0byBnZXQgVk0mIGZyb20gSlNHbG9iYWxPYmplY3QqIGlmIEpTR2xvYmFsT2JqZWN0Lmgg
aXMgbm90IGluY2x1ZGVkLgotVk0mIGdldFZNKEpTR2xvYmFsT2JqZWN0Kik7Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQworLy9uYW1lc3BhY2UgSlNDIHsKKy8vCisvL2NsYXNzIEpTR2xvYmFsT2JqZWN0
OworLy9jbGFzcyBWTTsKKy8vCisvLy8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgVk0mIGZyb20g
SlNHbG9iYWxPYmplY3QqIGlmIEpTR2xvYmFsT2JqZWN0LmggaXMgbm90IGluY2x1ZGVkLgorLy9W
TSYgZ2V0Vk0oSlNHbG9iYWxPYmplY3QqKTsKKy8vCisvL30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDg4OTU0ZTk5MDZmNTg2M2NlYjQ1ODc4Y2FjZjE5ZmE2NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBj
NGI5MzkzNTZhNjljYWJkYWFmN2FhM2VkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MzMsNiArMTUzMyw3IEBACiAJCTUx
QkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2
RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87
IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVB
RDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVF
NzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAv
KiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEw
QTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMz
NSw2ICs4MzM2LDcgQEAKIAkJNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdT
dG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZE
IC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0
b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0
NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2Fj
aGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVk
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0MDMsNiArMjU0MDUs
NyBAQAogCQkJCTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICov
LAogCQkJCTQxOEMzOTVFMUM4RjBBQUIwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyLmNwcCAqLywKIAkJCQk0MThDMzk1RjFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovLAorCQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVD
MkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICovLAogCQkJCTQxRjFEMjFE
MEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLywKIAkJCQk5M0I3
MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCkBAIC0zMjEy
OSw2ICszMjEzMiw3IEBACiAJCQkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBMjE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZl
YXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJBREE0MTYxRTdGM0YwMEMyRTY1MiAvKiBS
dWxlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyog
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzZCQjgyMTk0
NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9u
RGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5o
CmluZGV4IGU4MGE5OTBhMmQ3OTUyZmQwYzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjExNDExOThk
MmJjM2I5ZDMzZDQ1NzMyYWVlMWQ0YzY0OTFlNmY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IEV4
Y2VwdGlvbkRldGFpbHMgewogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGludCBsaW5lTnVtYmVy
IHsgMCB9OwogICAgIGludCBjb2x1bW5OdW1iZXIgeyAwIH07Ci0gICAgU3RyaW5nIHNvdXJjZVVS
TDsKKyAgICBTdHJpbmcgc291cmNlVVJMIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMWU4YzEwZGQ4NGQzZmY1YzQzMDQ4M2IzNjE4NzdhY2E0
NGFkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2VudW0gY2xhc3MgUnVuQXNBc3luY0Z1bmN0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsK
K2VudW0gY2xhc3MgRm9yY2VVc2VyR2VzdHVyZSA6IGJvb2wgeyBObywgWWVzIH07CisKK3VzaW5n
IEFyZ3VtZW50V2lyZUJ5dGVzTWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47
CisKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CisgICAgUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgcnVuQXNBc3luY0Z1bmN0aW9uLCBP
cHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBydW5Bc0FzeW5jRnVu
Y3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5B
c0FzeW5jRnVuY3Rpb246Ok5vKQorICAgICAgICAsIGFyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50
cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlID8gRm9yY2VV
c2VyR2VzdHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVyZTo6Tm8pCisgICAgeworICAgIH0KKwor
ICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBSdW5Bc0Fz
eW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRl
c01hcD4gYXJndW1lbnRzLCBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmUpCisgICAg
ICAgIDogc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNB
c3luY0Z1bmN0aW9uKQorICAgICAgICAsIGFyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCisg
ICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlKQorICAgIHsKKyAgICB9
CisKKyAgICBTdHJpbmcgc291cmNlOworICAgIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5j
RnVuY3Rpb247CisgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsK
KyAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UgPDwgcnVuQXNBc3luY0Z1bmN0aW9uIDw8IGFy
Z3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJlOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSdW5KYXZhU2NyaXB0UGFyYW1ldGVycz4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBTdHJpbmcgc291cmNlOworICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rp
b247CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVuQXNBc3luY0Z1bmN0aW9uKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QXJndW1l
bnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
cmd1bWVudHMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBG
b3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIHJldHVybiB7IHsgc291cmNlLCBydW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1v
dmUoYXJndW1lbnRzKSwgZm9yY2VVc2VyR2VzdHVyZSB9IH07CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA0MWViYjc0ZDE1MjM3MDdhZmU0NDE4ZTYzMjc3MWI4MzZkODJl
N2IwLi42NmQ4NjQxYzkyNTcwNGM4NDczZjQ5NDlmOTNlZjUyYzczNmJkMDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGlu
YXRvci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIK
ICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTYgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkK
IAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVT
Y3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGF1dG8g
cmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBmYWxzZSwgV1RG
OjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1
bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK1ZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewot
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVy
ZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
c2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBK
U0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hl
cjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7CisgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0ZXJzLmZvcmNlVXNlckdlc3R1cmUg
PT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
U3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwogCiAgICAgLy8g
RklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IEpTVmFsdWUsIHNob3VsZCByZXR1
cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0
VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgc3dpdGNo
IChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikgeworICAgIGNhc2UgUnVuQXNBc3luY0Z1
bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUocGFyYW1l
dGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9u
KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKKyAgICAgICAg
cmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgfQorICAgIGNh
c2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAgICAgIHJldHVybiBjYWxsSW5Xb3JsZChX
VEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2Ny
aXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5jRnVuY3Rpb246Olllcyk7CisgICAgQVNT
RVJUKHBhcmFtZXRlcnMuYXJndW1lbnRzKTsKKworICAgIGF1dG8mIHByb3h5ID0ganNXaW5kb3dQ
cm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKnByb3h5LndpbmRvdygpOwor
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtlZEFyZ3VtZW50czsKKyAgICBTdHJpbmdCdWls
ZGVyIGZ1bmN0aW9uU3RyaW5nQnVpbGRlcjsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworCisg
ICAgLy8gQnVpbGQgdXAgYSBuZXcgc2NyaXB0IHN0cmluZyB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0
aW9uIHdpdGggYXJndW1lbnRzLCBhbmQgZGVzZXJpYWxpemUgdGhvc2UgYXJndW1lbnRzLgorICAg
IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIihmdW5jdGlvbigiKTsKKyAgICBmb3IgKGF1
dG8gYXJndW1lbnQgPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+YmVnaW4oKTsgYXJndW1lbnQgIT0g
cGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpOykgeworICAgICAgICBmdW5jdGlvblN0cmluZ0J1
aWxkZXIuYXBwZW5kKGFyZ3VtZW50LT5rZXkpOworICAgICAgICBhdXRvIHNlcmlhbGl6ZWRBcmd1
bWVudCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhXVEZNb3Zl
KGFyZ3VtZW50LT52YWx1ZSkpOworCisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAgYXV0byBqc0FyZ3VtZW50ID0gc2Vy
aWFsaXplZEFyZ3VtZW50LT5kZXNlcmlhbGl6ZShnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3Qp
OworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGFyZ3VtZW50IHRvIGV4ZWN1
dGUgYXN5bmNocm9ub3VzIEphdmFTY3JpcHQgZnVuY3Rpb24iOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBtYXJrZWRBcmd1bWVudHMuYXBwZW5kKGpzQXJndW1lbnQp
OworCisgICAgICAgICsrYXJndW1lbnQ7CisgICAgICAgIGlmIChhcmd1bWVudCAhPSBwYXJhbWV0
ZXJzLmFyZ3VtZW50cy0+ZW5kKCkpCisgICAgICAgICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIu
YXBwZW5kKCcsJyk7CisgICAgfQorCisgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7IGVycm9yTWVz
c2FnZSB9KTsKKworICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIil7IiwgcGFyYW1l
dGVycy5zb3VyY2UsICJ9KSIpOworCisgICAgYXV0byBzb3VyY2VDb2RlID0gU2NyaXB0U291cmNl
Q29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci50b1N0cmluZygpLCBVUkwobV9mcmFtZS5kb2N1
bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNl
VHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1l
bnQoKS0+Y2hhcnNldCgpKSB9OworICAgIGNvbnN0IGF1dG8mIGpzU291cmNlQ29kZSA9IHNvdXJj
ZUNvZGUuanNTb3VyY2VDb2RlKCk7CisKKyAgICBTdHJpbmcgc291cmNlVVJMID0ganNTb3VyY2VD
b2RlLnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0cmluZyogc2F2ZWRTb3VyY2VVUkwg
PSBtX3NvdXJjZVVSTDsKKyAgICBtX3NvdXJjZVVSTCA9ICZzb3VyY2VVUkw7CisKKyAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5zdGFy
dExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVtbigpKTsKKworICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRl
dGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKKyAgICBKU1ZhbHVlIHJldHVyblZhbHVlOworICAgIGRv
IHsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCA9IEpTRXhlY1N0YXRlOjpwcm9maWxl
ZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNT
b3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNlcHRpb24pOworCisgICAgICAgIGlmIChl
dmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCFm
dW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3QuaXNGdW5jdGlvbih3b3JsZC52bSgpKSkg
eworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0geyB7ICJVbmFibGUgdG8gY3JlYXRlIEph
dmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCJfcyB9IH07CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCisgICAgICAgIC8vIEdldHRpbmcgQ2FsbERhdGEvQ2Fs
bFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwgaW50byBKUy4KKyAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
d29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAgICBvcHRpb25hbERldGFpbHMgPSB7
IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gYmUgY2Fs
bGVkIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKCZnbG9iYWxPYmplY3QsIEpTQzo6
UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0
YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIH0g
d2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVh
dGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbiAmJiAhb3B0
aW9uYWxEZXRhaWxzKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICAg
ICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNv
dXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKKyAgICAgICAgb3B0aW9uYWxEZXRh
aWxzID0gV1RGTW92ZShkZXRhaWxzKTsKKyAgICB9CisKKyAgICBtX3NvdXJjZVVSTCA9IHNhdmVk
U291cmNlVVJMOworCisgICAgaWYgKG9wdGlvbmFsRGV0YWlscykKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKQEAgLTU4NywxMyArNjg0LDI3
IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52
YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK3sKKyAg
ICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbCh3b3JsZCwgeyBz
Y3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7Cit9CisKK1Zh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1
bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50KSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxl
IHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkg
cmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0
aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zIH0pOwogCiAgICAgZG9jdW1lbnQu
c2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVjdXRlU2Ny
aXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4g
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworfQorCit2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQoreworICAgIGF1
dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbCh3b3JsZCwg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIHJlc3VsdCBpcyBh
IHRoZW5hYmxlLCBpbnN0YWxsIHRoZSBmdWxmaWxsL3JlamVjdCBoYW5kbGVycyBpbnN0ZWFkIG9m
IHJlc29sdmluZyBub3cuCisKKyAgICByZXNvbHZlRnVuY3Rpb24ocmVzdWx0KTsKIH0KIAogYm9v
bCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oCmluZGV4IDI2ODgxY2I3MjM5ZGY4MjcwNjhjZjhhYzhiNWYxODdjYWJjNjFkNjAu
LmNjZGRjODFiODJhMzgxMzg5ODVhZjNiMDhlOTNhNDMyYTlkNWU0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5
LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2luZG93
UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTYzLDcgKzY0LDExIEBAIGNsYXNzIE1vZHVsZUZl
dGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFdpZGdldDsKKworZW51bSBjbGFzcyBSdW5Bc0FzeW5jRnVuY3Rpb24gOiBi
b29sOworCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVyczsKIAogZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgewogICAg
IEFib3V0VG9DcmVhdGVFdmVudExpc3RlbmVyLApAQCAtOTEsMTEgKzk2LDE1IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3Js
ZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
VmFsdWVPckV4Y2VwdGlvbik+OworCiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4
ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgVmFsdWVPckV4Y2Vw
dGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
eGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQm
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBSZXNvbHZlRnVuY3Rpb24mJik7CisgICAgSlND
OjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBib29sIHNo
b3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDYsMTAg
KzExNSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZl
biByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
LSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBW
YWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExv
YWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxl
RmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUs
IFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlw
dEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNzEsNiArMTc2LDExIEBAIHB1YmxpYzoKICAgICBib29s
IHdpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNjcmlwdFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZhc2NyaXB0VVJMOyB9
CiAKIHByaXZhdGU6CisgICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7CisgICAgVmFsdWVPckV4Y2VwdGlv
biBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3Js
ZCYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gY2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgCiAgICAgdm9pZCBzZXR1cE1vZHVsZVNj
cmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgSlNDOjpKU0ludGVybmFsUHJvbWlz
ZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0UGxhdGZvcm1TY3Jp
cHRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNTRjMzRlODg4NGMyNGNjYjgyNGU2ZDJiY2ZkMzYwMjc3
Njg1MjcwZS4uMWY0M2U2M2M2MTEyZTBmNjQ3NjlhNDE4MzA2YzhiNDZiYjIwZGYxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IGRlZmluZWQoX19PQkpDX18pCiAgICAgc3RhdGljIGlkIGRlc2VyaWFsaXplKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gd2lyZUJ5dGVzRnJvbU5TT2JqZWN0KGlkKTsKICNl
bmRpZgogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4
NDQ0MWM1NmZhZGJmLi5kZDc5NmI4MzMyMzU5ZTFjM2IxZTU1NzVmZDdhMDMzNTNjYjFmYWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3
Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1Bh
Z2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYp
LT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIGZhbHNl
LCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRv
QVBJKHJldHVyblZhbHVlKSwgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8g
dG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXggYTI2NzNlMjVjMTEz
NDA3MTkxMmMyMDI4ZmQ3ZGYyMjk2NTRhYTM4ZS4uNjZlOGIyN2EwOWFmODNlNWZiZjcxMzFkMGYx
ZWQ3YTE4YWI0NzVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAt
MjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHQuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgpAQCAtNTksMTEgKzYxLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8
U2hhcmVkSlNDb250ZXh0PiBtX3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYg
c2hhcmVkQ29udGV4dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29u
dGV4dD4gc2hhcmVkQ29udGV4dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30K
KwogaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQq
IGNvbnRleHQgPSBzaGFyZWRDb250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0Nv
bnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAg
SlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVS
ZWYpCkBAIC03Myw0ICs4MCwyMCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVy
biB2YWx1ZS50b09iamVjdDsKIH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFy
ZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2Jq
ZWN0ID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisK
KyAgICBhdXRvIGNvcmVWYWx1ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCpnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0p
KTsKKyAgICByZXR1cm4gY29yZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
NGU3YmMwY2Y3NjhlMTM0ZWIwZjNjOTg2NmZjMjg5Y2Y1MzQxYzliZC4uMzg5ZjRmYzM5YzM1NjQ5
YWJlOTk0MDRlOGVlNTg0NzdlZmMyY2E1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4NiBAQCBzdGF0aWMgV0tF
cnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0
cmluZyBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFz
QXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1
YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1
cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQs
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1l
bnQoaWQgYXJndW1lbnQpCit7CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
IHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAg
ICAgX19ibG9jayBCT09MIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVy
YXRlT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3Ap
IHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0K
KworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
IHsKKyAgICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1l
bnQgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwg
IXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVz
ZXJHZXN0dXJlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2
YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJy
b3IgZXJyb3JDb2RlKSB7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNN
YXA+IGFyZ3VtZW50c01hcDsKKyAgICBpZiAoYXNBc3luY0Z1bmN0aW9uKQorICAgICAgICBhcmd1
bWVudHNNYXAgPSBXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcCB7IH07CisgICAgTlNTdHJp
bmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKKworICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykg
eworICAgICAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewor
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBhcmd1bWVudCBuYW1lcyBtdXN0
IGJlIHN0cmluZ3MiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTprZXldOworICAgICAgICBpZiAo
IXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBA
IkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5
cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB0eXBlczogTlNTdHJpbmcsIE5TTnVt
YmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBOU0RpY3Rpb25hcnkiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAgICAgICAg
Ly8gU2luY2Ugd2UndmUgdmFsaWRhdGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3ZlLCB3ZSBz
aG91bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgorICAgICAg
ICBBU1NFUlQod2lyZUJ5dGVzKTsKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5LCAqd2ly
ZUJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDps
b2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlv
bk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAgICAgIFt1
c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0
aW9uTWVzc2FnZUVycm9yS2V5XTsKKworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05T
RXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9ySmF2
YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVyLCBl
cnJvcl0geworICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vy
cm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3Iu
Z2V0KCkpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3Bh
Z2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IGphdmFTY3JpcHRTdHJpbmcsIChib29sKWFz
QXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHNNYXApLCAoYm9vbClmb3JjZVVzZXJHZXN0
dXJlIH0sIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBX
ZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBp
ZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE5MjMsNiArMTk5NSwxMSBA
QCAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbgogICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1
cmF0aW9uOnBkZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXJdOwogfQogCistICh2b2lkKV9jYWxsQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0Fz
eW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6
WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKwogLSAoTlNEYXRh
ICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVz
ZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5jb2Rlci4KQEAgLTIwNjUsNyArMjE0Miw3IEBA
IC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgog
CiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0
OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAo
dm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRl
UG9saWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGMzMTJjODE4OGMwZmMwOGM2OTMxODY4MWViODNmYzFhNzg3
MDkzNjguLmUxMzc5MGNiZGNjY2E5NWEyMDEyZTU0MzFiNDk2ZTM1ZDViYzY3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aApAQCAtMzE1LDYgKzMxNSw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tS
ZWN0RWRnZSkgewogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRD
b250ZXh0ICopdGV4dElucHV0RWxlbWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEz
LjApKTsKIAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25h
cHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKKy0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0YTRjY2MyNTM0ZTEwZjNkMzJjZmQ4NTkwYTZi
YjNkZmRhNzc5NjRmLi44MzhiNGRhODUwMzljNmMyYWRlZTIzYTZmZmEyYzE4MzczY2YzYmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4NDksMTIgKzM4
NDksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3Nh
cnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5p
dGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6
RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAg
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6
bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29t
cGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMg
bm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vz
c2FyeSgpOwpAQCAtMzg2NSw3ICszODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAg
ICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhY2I3MGY1NjdkMzk5ZmViNmNm
ZmFkNDBjYWI3OTFkOTQyZDNkZTVlLi43N2ZjMDQ1ODdjZDk5YzM0ZGZkNWRmNjZiMTI3YzJhYWZk
NGM2ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTIsNiAr
OTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRlcklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgpAQCAt
MTA2Miw4ICsxMDYzLDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAo
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBi
b29sLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3Qg
T3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1
YiBmcmFtZXMuCiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdU
Rjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MThiZDY4ZDEzN2U5NjY2MTNjYjYxNTNjMjUzNjc0M2M0ODJhNzFmMS4uMTNkNDNlZDAwOTUwNWVh
MDFiNWJmMTlhMDIzNzdlZWQyZTIwNzJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNCw2ICsyMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25u
ZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CkBAIC0zMzUy
LDQ1ICszMzUzLDQ5IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8
IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBz
Y3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBw
ZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29t
bW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29y
bGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFt
ZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwot
ICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAg
cmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2Ny
aXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7
CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9
LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2Ug
aXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHRoaXMsIHdvcmxkID0gbWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VS
ZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwog
ICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQo
d29ybGQpLAorICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkLnB0cigpKSwK
ICAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2Jh
bE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwog
ICAgICAgICB9Ci0gICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAg
ICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsK
KworICAgICAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOworICAgICAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMs
IGNhbGxiYWNrSUQpKTsKKyAgICB9OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQp
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZy
YW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxk
KHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZl
RnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1h
aW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJh
Y2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNj
cmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIGNhbGxi
YWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpu
dWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzhl
YTAyZWY1ZjJiMDNkM2MwZjljOWFmNzFjMzkwOWJlNDExYWU4Ny4uYjA3Y2YxN2YxYjIyYzcxMTlm
NWNiZGRkMWJhZThjMjljZjlkOWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyOwogc3RydWN0IEhpZ2hsaWdodDsKIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1
Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
czsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7
CiAKQEAgLTE0MzUsOCArMTQzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQp
OwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3Ry
aW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50
KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMs
IENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYmFhZDc2ZTUwOTM3ZDY2MWFiOTUwNjQ1MWZhNjc0
NGI0NmFkNzljMS4uOWJmMjFlYzM1MWMyYmJiNTQzZjgwMWZiODU0YWYwYThkMTE4MTk5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0yMDQsNyArMjA0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBH
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5n
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFt
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBhMDhlMTNhNGFlZmIwYTVjN2FjYjRjZDhkNzA5MDRlOGE3Yjdl
YWEzLi5mYTVlYmFmODIwNmY0NDYzYWQxMDBiMDNjMTczNDYzMTA0YzFiMTMxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTktMTItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBXS1dlYlZpZXcgU1BJIHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW5w
dXRNZXRob2QgQVBJIHVuaXQgdGVzdHMgZG9uJ3Qgd29yayB1bmRlciBYMTEKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZTBlODAwOTQ3MjdlNGUxZjI2YTBiNjFiMzQwYjkzYzcwNTI3N2YwYy4u
ZmVkZmNmMjM1ZmRmOWMyMGU5ZGM2ZmU4MGE5NTViYTllMDdiNWUzMyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTI5MCw2ICsyOTAsNyBAQAogCQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEg
LyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUYyM0RFMUVGMUEzNzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0Rl
bGVnYXRlLm1tICovOyB9OwogCQk1MUIxRUU5NjFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERC
UGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJz
aXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUxQjFFRTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRl
eGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWRE
QlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKKwkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8q
IEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsg
fTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0x
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0
bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVBy
b2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sICovOyB9OwogCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlF
NjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLzsgfTsKQEAgLTE4NDEsNiArMTg0
Miw3IEBACiAJCTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5j
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBl
cnNpc3RlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBG
QUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk1MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQ
ZXJzaXN0ZW5jZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERC
UGVyc2lzdGVuY2UtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBE
OUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUI0NTRFQjFCNEUyMzZCMDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5z
aWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nl
c3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3
IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICov
LAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2
M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJ
CQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4
MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAq
LywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0g
Ki8sCkBAIC00NTM2LDYgKzQ1MzksNyBAQAogCQkJCUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAv
KiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1
MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDEx
RjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFB
NDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNG
dW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNG
dW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTAxNzhjNzlmMTZiZDU3OTg2Njc1NzM3MmY5NWM3YTUy
ODRkZDdmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1Qo
QXN5bmNGdW5jdGlvbiwgQmFzaWMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEZ1bmN0aW9uIHdpdGggbm8gcmV0
dXJuIHZhbHVlLgorICAgIC8vIFJldHVybnMgSmF2YVNjcmlwdCB1bmRlZmluZWQgd2hpY2ggdHJh
bnNsYXRlcyB0byBuaWwuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAIjEiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9FUShyZXN1bHQsIG5pbCk7CisKKyAgICAv
LyBGdW5jdGlvbiByZXR1cm5zIGV4cGxpY2l0IG51bGwuCisgICAgLy8gUmV0dXJucyBKYXZhU2Ny
aXB0IG51bGwgd2hpY2ggdHJhbnNsYXRlcyB0byBOU051bGwuCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBudWxsIiB3aXRoQXJndW1l
bnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFzc11dKTsKKworICAgIC8v
IEZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEg
c3RyaW5nLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gJzEnIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3Ry
aW5nOkAiMSJdKTsKKworICAgIC8vIFRha2VzIG11bHRpcGxlIGFyZ3VtZW50cy4KKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBi
IiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAsIEAiYiIgOiBAMiB9IGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0Vx
dWFsVG9OdW1iZXI6QDQyXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBsZSBhcmd1bWVudHMgb2Yg
ZGlmZmVyZW50IHR5cGVzLCBmb2xsb3dzIGphdmFzY3JpcHRzICJ0eXBlIGFwcGVuZGluZyIgcnVs
ZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBmb28gKyBiYXIiIHdpdGhBcmd1bWVudHM6QHsgQCJmb28iIDogQCJmb28iLCBAImJh
ciIgOiBANDIgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiZm9vNDIiXSk7CisKKyAgICAv
LyBJbnZhbGlkIEphdmFTY3JpcHQsIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCisgICAgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVuciBudWxsIiB3
aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9
PSBuaWwpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlv
biwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gQXJndW1lbnQga2V5cyBtdXN0IGJl
IHN0cmluZ3MuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNG
dW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAxIDogQDEgfSBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09
IG5pbCk7CisKKyAgICAvLyBWYWx1ZXMgY2FuIG9ubHkgYmUgTlNTdHJpbmcsIE5TTnVtYmVyLCBO
U0RhdGUsIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gdGhvc2Ug
NSB0eXBlcy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IFtOU0RhdGEgZGF0YV0gfSBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNF
KGVycm9yID09IG5pbCk7CisKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEBbIEAxLCBb
TlNEYXRhIGRhdGFdIF0gfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICAvLyBSZWZlcmVuY2VzIGFu
IGFyZ3VtZW50IHRoYXQgd2FzIG5vdCBwcm92aWRlZC4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBv
YmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRz
OkB7IEAiYSIgOiBANDAgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlv
biwgUm91bmRUcmlwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Cisg
ICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBUZXN0cyByb3VuZCB0cmlwcGluZyBhIHdob2xl
IGJ1bmNoIG9mIGFyZ3VtZW50IGlucHV0cyBhbmQgdmVyaWZ5aW5nIHRoZSByZXN1bHQuCisKKyAg
ICBpZCB2YWx1ZSA9IEA0MjsKKyAgICBpZCBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsK
KyAgICBpZCByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAi
cmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0p
OworCisgICAgdmFsdWUgPSBAIkZvbyI7CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVl
IH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRd
KTsKKworICAgIHZhbHVlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJl
bmNlRGF0ZTowXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdp
dGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFs
dWUgPSBAWyBAMSwgQDIgXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAg
ICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJu
IGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisg
ICAgdmFsdWUgPSBAWyBAImZvbyIsIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJl
ZmVyZW5jZURhdGU6MF0gXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAg
ICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJu
IGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisg
ICAgdmFsdWUgPSBAeyBAImEiIDogQDEsIEAiYiIgOiBAMiB9OworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAImZvbyIsIEAiYiIgOiBb
TlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIH07CisgICAg
YXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3Vt
ZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEB7
IEAiYSIgOiBAMSB9IH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBh
IiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKK30KKwor
fQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDJhZDE1
ZWYyMDk0ZGVmNDI3MjlmNjAxNzA0Y2Y4NTE2NzE1NGMyNWUuLjNjYzQzNGE1ZDI1ZTBlOGQzZDc3
ZjhiOTVhZmEyZGM2OTRjMmYxN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5oCkBAIC02Myw2ICs2Myw3IEBACiAtIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQ7CiAtIChpZClv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlkKW9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVu
dHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsK
IC0gKHVuc2lnbmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xp
ZW50V2lkdGg7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQppbmRleCBhYWZmMjVjZDcxNmVjYWU2Y2U2MmI1ODE3MmMzOTI5MzUwOTIyNmVhLi43NGFk
NTgxMjUwMTZjMDMxZjhjNWU0ZWRiYjk0OGUxODA1ZWI1NTBlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0xNzgsNiArMTc4LDI3IEBAIC0gKGlkKW9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2Ny
aXB0CiAgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAoaWQpb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50
czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0Cit7
CisgICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgaWYgKGVycm9y
T3V0KQorICAgICAgICAqZXJyb3JPdXQgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IGV2YWxS
ZXN1bHQ7CisgICAgW3NlbGYgX2NhbGxBc3luY0Z1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKGVycm9yT3V0
KQorICAgICAgICAgICAgKmVycm9yT3V0ID0gW2Vycm9yIHJldGFpbl07CisgICAgICAgIGlzV2Fp
dGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CisKKyAgICBpZiAoZXJyb3JPdXQpCisg
ICAgICAgIFsqZXJyb3JPdXQgYXV0b3JlbGVhc2VdOworCisgICAgcmV0dXJuIGV2YWxSZXN1bHQu
YXV0b3JlbGVhc2UoKTsKK30KKwogLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAogewogICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3Jp
cHRdXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386374</attachid>
            <date>2019-12-23 21:47:13 -0800</date>
            <delta_ts>2019-12-23 23:33:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191223214712.patch</filename>
            <type>text/plain</type>
            <size>59249</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uYWIzMTEzZDliNmMzOTU5ZTI2YzJiMmVlNWVhNGQ4
NzE4OTBlZjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTIzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBTcGVjaWFsIGNvbWJpbmF0aW9uIGNoYXJhY3RlcnMgZG9lc24ndCByZXNwZWN0IHRoZSBrZXlz
dHJva2Ugb3JkZXIgd2hlbiBoaWdoIENQVSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc3YzQ2ZDdmNGY5ZDhj
NTgyNzkzZTg2ZDlhMDBjNzQ4NTUwYWQ4MDAuLjQwODA3OWY1YjdkZWI1ZmNlYjc5NTM1ZDAzNjZm
OGE2YWNkMjkxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTItMjMgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJ
IHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbToKKyAgICAgICAg
KEFQSTo6c2hhcmVkQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVu
dHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaE9TIGJ1
aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggODg5NTRlOTkwNmY1ODYzY2ViNDU4NzhjYWNmMTlmYTY0ZDQ4
MTk5NC4uMzk3MzdiNDcyMTRlMGM0YjkzOTM1NmE2OWNhYmRhYWY3YWEzZWQwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUz
Myw2ICsxNTMzLDcgQEAKIAkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNl
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
QTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNCMUJCQzVCRDkwMERG
M0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaCAqLzsgfTsKIAkJNTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElE
QkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxQkE5NDcxMjNB
QzMwNTMwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTk0NkYyM0FDMzA1MDAwNDQ0ODQ2
IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQ0NFMzAxRjhGMTc5RTAwNkJBMEVEIC8qIFNlcnZp
Y2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCRTM3
RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3Rv
cmFnZUFyZWEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2
NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MzM1LDYgKzgzMzYsNyBAQAogCQk1MUJBNEFDNzFCQkM1QUQ2MDBE
RjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJB
NEFDODFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAv
KiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMg
LyogU3RvcmFnZUFyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFn
ZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBMzgwRjJBQTEwQTAw
MTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTQwMEYy
QUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYWNoZWRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTQwMyw2ICsyNTQwNSw3IEBACiAJCQkJNDFCNDU5REExRjRDQURCOTAwMDBGNkZEIC8q
IFJlYWRhYmxlU3RyZWFtLmggKi8sCiAJCQkJNDE4QzM5NUUxQzhGMEFBQjAwNTFDOEEzIC8qIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQxOEMzOTVGMUM4RjBB
QUIwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggKi8sCisJCQkJ
NTFCQTk0NkYyM0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi8s
CiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5j
cHAgKi8sCiAJCQkJNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1l
RGF0YS5oICovLAogCQkJCTkzQjcwRDUzMDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRDb250cm9s
bGVyLmNwcCAqLywKQEAgLTMyMTI5LDYgKzMyMTMyLDcgQEAKIAkJCQlFNDg2M0NGRTIzODQyRTlF
MDA5NzIxNTggLyogUnVsZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJBREEyMTYxRTdG
M0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTQx
NjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkE5NDcx
MjNBQzMwNTMwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMUYwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDIxMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50
aW1lX21ldGhvZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9FeGNlcHRpb25EZXRhaWxzLmgKaW5kZXggZTgwYTk5MGEyZDc5NTJmZDBjMjYxZGNlMTU0YWJk
Y2VhNzNlM2M1YS4uMTE0MTE5OGQyYmMzYjlkMzNkNDU3MzJhZWUxZDRjNjQ5MWU2Zjg2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaApAQCAtMzMs
NyArMzMsNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1lc3NhZ2U7
CiAgICAgaW50IGxpbmVOdW1iZXIgeyAwIH07CiAgICAgaW50IGNvbHVtbk51bWJlciB7IDAgfTsK
LSAgICBTdHJpbmcgc291cmNlVVJMOworICAgIFN0cmluZyBzb3VyY2VVUkwgeyB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxZThjMTBkZDg0ZDNm
ZjVjNDMwNDgzYjM2MTg3N2FjYTQ0YWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw4OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBSdW5Bc0FzeW5jRnVuY3Rpb24g
OiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBGb3JjZVVzZXJHZXN0dXJlIDogYm9vbCB7
IE5vLCBZZXMgfTsKKwordXNpbmcgQXJndW1lbnRXaXJlQnl0ZXNNYXAgPSBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPHVpbnQ4X3Q+PjsKKworc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsK
KyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBy
dW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVu
dHMsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2Uoc291cmNlKQorICAg
ICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24gPyBSdW5Bc0FzeW5j
RnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm8pCisgICAgICAgICwgYXJndW1l
bnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJlKGZvcmNl
VXNlckdlc3R1cmUgPyBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgOiBGb3JjZVVzZXJHZXN0dXJlOjpO
bykKKyAgICB7CisgICAgfQorCisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlv
bmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHMsIEZvcmNlVXNlckdlc3R1cmUgZm9y
Y2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2Uoc291cmNlKQorICAgICAgICAsIHJ1bkFz
QXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAgICwgYXJndW1lbnRzKFdU
Rk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJlKGZvcmNlVXNlckdl
c3R1cmUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBzb3VyY2U7CisgICAgUnVuQXNBc3lu
Y0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICBPcHRpb25hbDxBcmd1bWVudFdpcmVC
eXRlc01hcD4gYXJndW1lbnRzOworICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VVc2VyR2VzdHVy
ZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZSA8PCBydW5B
c0FzeW5jRnVuY3Rpb24gPDwgYXJndW1lbnRzIDw8IGZvcmNlVXNlckdlc3R1cmU7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IFN0cmluZyBzb3VyY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgUnVuQXNBc3luY0Z1bmN0
aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShydW5B
c0FzeW5jRnVuY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VVc2VyR2VzdHVyZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmb3JjZVVzZXJHZXN0dXJlKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHsgeyBzb3VyY2UsIHJ1bkFz
QXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHMpLCBmb3JjZVVzZXJHZXN0dXJlIH0gfTsK
KyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQxZWJiNzRkMTUyMzcwN2Fm
ZTQ0MThlNjMyNzcxYjgzNmQ4MmU3YjAuLjY2ZDg2NDFjOTI1NzA0Yzg0NzNmNDk0OWY5M2VmNTJj
NzM2YmQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIK
KyNpbmNsdWRlICJSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKQEAgLTU2NSwyMCArNTY2LDExNiBAQCBKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KGNvbnN0IFN0cmluZyYgc2NyaQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewotICAgIGF1
dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2Vy
R2VzdHVyZSk7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwg
eyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7CiAgICAg
cmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAot
VmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQorVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGlj
YXRvcihmb3JjZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwotICAgIFNjcmlwdFNv
dXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgp
KSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFt
LCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0
KCkpKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHBhcmFtZXRl
cnMuZm9yY2VVc2VyR2VzdHVyZSA9PSBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgPyBPcHRpb25hbDxQ
cm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6
bnVsbG9wdCk7CiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1wdHkg
SlNWYWx1ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRpb25EZXRhaWxzLgogICAgIGlmICghY2Fu
RXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUs
IHdvcmxkKTsKKyAgICBzd2l0Y2ggKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1bmN0aW9uKSB7Cisg
ICAgY2FzZSBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vOiB7CisgICAgICAgIFNjcmlwdFNvdXJjZUNv
ZGUgc291cmNlQ29kZShwYXJhbWV0ZXJzLnNvdXJjZSwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNo
YXJzZXQoKSkpOworICAgICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdv
cmxkKTsKKyAgICB9CisgICAgY2FzZSBSdW5Bc0FzeW5jRnVuY3Rpb246OlllczoKKyAgICAgICAg
cmV0dXJuIGNhbGxJbldvcmxkKFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwor
VmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZChSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7Cisg
ICAgQVNTRVJUKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1bmN0aW9uID09IFJ1bkFzQXN5bmNGdW5j
dGlvbjo6WWVzKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5hcmd1bWVudHMpOworCisgICAgYXV0
byYgcHJveHkgPSBqc1dpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSAqcHJveHkud2luZG93KCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya2VkQXJndW1l
bnRzOworICAgIFN0cmluZ0J1aWxkZXIgZnVuY3Rpb25TdHJpbmdCdWlsZGVyOworICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2U7CisKKyAgICAvLyBCdWlsZCB1cCBhIG5ldyBzY3JpcHQgc3RyaW5nIHRo
YXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMsIGFuZCBkZXNlcmlhbGl6ZSB0
aG9zZSBhcmd1bWVudHMuCisgICAgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLmFwcGVuZCgiKGZ1bmN0
aW9uKCIpOworICAgIGZvciAoYXV0byBhcmd1bWVudCA9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5i
ZWdpbigpOyBhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5kKCk7KSB7CisgICAg
ICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoYXJndW1lbnQtPmtleSk7CisgICAgICAg
IGF1dG8gc2VyaWFsaXplZEFyZ3VtZW50ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tV2lyZUJ5dGVzKFdURk1vdmUoYXJndW1lbnQtPnZhbHVlKSk7CisKKyAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZ2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBh
dXRvIGpzQXJndW1lbnQgPSBzZXJpYWxpemVkQXJndW1lbnQtPmRlc2VyaWFsaXplKGdsb2JhbE9i
amVjdCwgJmdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpIHsKKyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJVbmFibGUgdG8gZGVzZXJpYWxp
emUgYXJndW1lbnQgdG8gZXhlY3V0ZSBhc3luY2hyb25vdXMgSmF2YVNjcmlwdCBmdW5jdGlvbiI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1hcmtlZEFyZ3VtZW50
cy5hcHBlbmQoanNBcmd1bWVudCk7CisKKyAgICAgICAgKythcmd1bWVudDsKKyAgICAgICAgaWYg
KGFyZ3VtZW50ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5lbmQoKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoJywnKTsKKyAgICB9CisKKyAgICBpZiAoIWVycm9y
TWVzc2FnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRp
b25EZXRhaWxzIHsgZXJyb3JNZXNzYWdlIH0pOworCisgICAgZnVuY3Rpb25TdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKXsiLCBwYXJhbWV0ZXJzLnNvdXJjZSwgIn0pIik7CisKKyAgICBhdXRvIHNvdXJj
ZUNvZGUgPSBTY3JpcHRTb3VyY2VDb2RlIHsgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCksIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpj
cmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpIH07CisgICAgY29uc3QgYXV0byYg
anNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKKworICAgIFN0cmluZyBz
b3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CisgICAgY29uc3QgU3Ry
aW5nKiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOworICAgIG1fc291cmNlVVJMID0gJnNv
dXJjZVVSTDsKKworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOworCisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNl
VVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkpOwor
CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOworICAgIEpTVmFsdWUg
cmV0dXJuVmFsdWU7CisgICAgZG8geworICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0ID0g
SlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxp
bmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisKKyAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0IHx8ICFmdW5jdGlvbk9iamVjdC5pc0Z1
bmN0aW9uKHdvcmxkLnZtKCkpKSB7CisgICAgICAgICAgICBvcHRpb25hbERldGFpbHMgPSB7IHsg
IlVuYWJsZSB0byBjcmVhdGUgSmF2YVNjcmlwdCBhc3luYyBmdW5jdGlvbiB0byBjYWxsIl9zIH0g
fTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NjIKKyAgICAgICAgLy8g
R2V0dGluZyBDYWxsRGF0YS9DYWxsVHlwZSBzaG91bGRuJ3QgYmUgcmVxdWlyZWQgdG8gY2FsbCBp
bnRvIEpTLgorICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh3b3JsZC52bSgpLCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEp
OworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAg
IG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIHByZXBhcmUgSmF2YVNjcmlwdCBhc3lu
YyBmdW5jdGlvbiB0byBiZSBjYWxsZWQiX3MgfSB9OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwo
Jmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbk9iamVj
dCwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmcHJveHksIG1hcmtlZEFyZ3VtZW50cywgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7CisgICAgfSB3aGlsZSAoZmFsc2UpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKKworICAgIGlmIChldmFsdWF0
aW9uRXhjZXB0aW9uICYmICFvcHRpb25hbERldGFpbHMpIHsKKyAgICAgICAgRXhjZXB0aW9uRGV0
YWlscyBkZXRhaWxzOworICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZh
bHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOwor
ICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOworICAgIH0KKworICAg
IG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7CisKKyAgICBpZiAob3B0aW9uYWxEZXRhaWxz
KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0YWlscyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
KQpAQCAtNTg3LDEzICs2ODQsMjcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE8KICAgICByZXR1
cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogVmFsdWVP
ckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZEludGVybmFsKHdvcmxkLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2Vy
R2VzdHVyZSB9KTsKK30KKworVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvJiBkb2N1
bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2Vu
dFNjcmlwdHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRv
Y3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNl
ciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3Mg
fSk7CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7Cit9CisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJv
bm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZl
RnVuY3Rpb24pCit7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKworICAgIC8vIEZJWE1F
OiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFibGUsIGluc3RhbGwgdGhlIGZ1bGZpbGwvcmVqZWN0
IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4KKworICAgIHJlc29sdmVGdW5jdGlv
bihyZXN1bHQpOwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFn
ZW50U2NyaXB0cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMjY4ODFjYjcyMzlkZjgyNzA2OGNm
OGFjOGI1ZjE4N2NhYmM2MWQ2MC4uY2NkZGM4MWI4MmEzODEzODk4NWFmM2IwOGU5M2E0MzJhOWQ1
ZTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2lu
Y2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
QmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpAQCAtNjMsNyArNjQs
MTEgQEAgY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2lkZ2V0OworCitlbnVtIGNsYXNzIFJ1
bkFzQXN5bmNGdW5jdGlvbiA6IGJvb2w7CisKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOworc3Ry
dWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOwogCiBlbnVtIFJlYXNvbkZvckNhbGxpbmdDYW5F
eGVjdXRlU2NyaXB0cyB7CiAgICAgQWJvdXRUb0NyZWF0ZUV2ZW50TGlzdGVuZXIsCkBAIC05MSwx
MSArOTYsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3Rv
cjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAorICAgIHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9
IFdURjo6RnVuY3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKICAgICBXRUJDT1JFX0VY
UE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CiAgICAgSlNDOjpK
U1ZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldv
cmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNl
KTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxz
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmFs
dWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFJlc29sdmVG
dW5jdGlvbiYmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29y
bGQmKTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50Jikg
Y29uc3Q7CiAKQEAgLTEwNiwxMCArMTE1LDYgQEAgcHVibGljOgogICAgIC8vIERhcndpbiBpcyBh
biBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24g
ZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdy
YXBwZXJXb3JsZCYpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLQogICAgIHZvaWQgbG9hZE1v
ZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYsIERPTVdyYXBwZXJXb3JsZCYp
OwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0
IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAgICAg
dm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKQEAgLTE3MSw2ICsxNzYsMTEg
QEAgcHVibGljOgogICAgIGJvb2wgd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZh
c2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV93aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1
dGluZ0phdmFzY3JpcHRVUkw7IH0KIAogcHJpdmF0ZToKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwoRE9NV3JhcHBlcldvcmxkJiwgUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7CisgICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsK
KyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgVmFsdWVPckV4Y2VwdGlvbiBjYWxsSW5Xb3Js
ZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICAKICAg
ICB2b2lkIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBK
U0M6OkpTSW50ZXJuYWxQcm9taXNlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGRp
c2Nvbm5lY3RQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA1NGMzNGU4ODg0YzI0
Y2NiODI0ZTZkMmJjZmQzNjAyNzc2ODUyNzBlLi4xZjQzZTYzYzYxMTJlMGY2NDc2OWE0MTgzMDZj
OGI0NmJiMjBkZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09CSkNfXykKICAgICBzdGF0aWMgaWQgZGVz
ZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3aXJlQnl0ZXNG
cm9tTlNPYmplY3QoaWQpOwogI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDBjMTVmOGI5
M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2ZmFkYmYuLmRkNzk2YjgzMzIzNTllMWMzYjFlNTU3
NWZkN2EwMzM1M2NiMWZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdL
UGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24g
Y2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRS
ZWYpLT5zdHJpbmcoKSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2Fs
bGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
ICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAw
LCBjb250ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5t
bQppbmRleCBhMjY3M2UyNWMxMTM0MDcxOTEyYzIwMjhmZDdkZjIyOTY1NGFhMzhlLi42NmU4YjI3
YTA5YWY4M2U1ZmJmNzEzMWQwZjFlZDdhMThhYjQ3NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUNvY29hLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKKyNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0FQSUNhc3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgor
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CkBAIC01OSwxMSArNjEsMTYgQEAgcHJpdmF0ZToK
ICAgICBSdW5Mb29wOjpUaW1lcjxTaGFyZWRKU0NvbnRleHQ+IG1fdGltZXI7CiB9OwogCitzdGF0
aWMgU2hhcmVkSlNDb250ZXh0JiBzaGFyZWRDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBzaGFyZWRDb250ZXh0OworICAgIHJldHVybiBzaGFy
ZWRDb250ZXh0LmdldCgpOworfQorCiBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBzaGFyZWRDb250
ZXh0OwotICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQuZ2V0KCkuZW5zdXJl
Q29udGV4dCgpOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1
cmVDb250ZXh0KCk7CiAKICAgICBKU1ZhbHVlUmVmIHZhbHVlUmVmID0gc2VyaWFsaXplZFNjcmlw
dFZhbHVlLmRlc2VyaWFsaXplKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIGV4Y2VwdGlv
bik7CiAgICAgaWYgKCF2YWx1ZVJlZikKQEAgLTczLDQgKzgwLDIwIEBAIGlkIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBz
ZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCitPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0
KGlkIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEpTQ29u
dGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1cmVDb250ZXh0KCk7CisgICAgSlNW
YWx1ZSAqdmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0IGluQ29udGV4dDpj
b250ZXh0XTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0pOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2soZ2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8gY29yZVZhbHVlID0gV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3Qs
IFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworICAgIHJldHVybiBjb3JlVmFsdWUtPnRvV2lyZUJ5dGVz
KCk7Cit9CisKIH0gLy8gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA0ZTdiYzBjZjc2OGUxMzRlYjBmM2M5ODY2ZmMyODljZjUzNDFj
OWJkLi4zODlmNGZjMzljMzU2NDlhYmU5OTQwNGU4ZWU1ODQ3N2VmYzJjYTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTgyMiwxNCAr
ODIyLDg2IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9yQ29kZShXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihO
U1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0
OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZv
cmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsK
IH0KIAotLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgorc3RhdGlj
IGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKK3sKKyAgICBpZiAoW2FyZ3VtZW50
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBj
bGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3NdXSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TQXJy
YXkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVlOworCisgICAg
ICAgIFthcmd1bWVudCBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIG9iamVjdCwgTlNV
SW50ZWdlciwgQk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50
KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKworICAgICAgICBy
ZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltO
U0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIGJvb2wgdmFsaWQgPSB0cnVl
OworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6
XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBpZiAoIXZhbGlk
YXRlQXJndW1lbnQoa2V5KSB8fCAhdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKKyAgICAgICAg
ICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAg
ICAgICAgICAgfQorICAgICAgICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5T
U3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYXNBc3luY0Z1
bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBmb3JjZVVzZXJH
ZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0gICAgX3BhZ2UtPnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlLCBbaGFu
ZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3Jp
cHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOworICAgIGlmIChhc0FzeW5jRnVu
Y3Rpb24pCisgICAgICAgIGFyZ3VtZW50c01hcCA9IFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVz
TWFwIHsgfTsKKyAgICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gbmlsOworCisgICAgZm9yIChp
ZCBrZXkgaW4gYXJndW1lbnRzKSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9u
IGFyZ3VtZW50IG5hbWVzIG11c3QgYmUgc3RyaW5ncyI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIAorICAgICAgICBpZCB2YWx1ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5
OmtleV07CisgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKKyAgICAgICAg
ICAgIGVycm9yTWVzc2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25l
IG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5
cGVzOiBOU1N0cmluZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlvbmFy
eSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAgICBhdXRvIHdp
cmVCeXRlcyA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmpl
Y3QodmFsdWUpOworICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIGlucHV0IGRp
Y3Rpb25hcnkgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRvIHNlcmlhbGl6ZSBpdCBpbnRv
IHdpcmUgYnl0ZXMuCisgICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMpOworICAgICAgICBhcmd1bWVu
dHNNYXAtPnNldChrZXksICp3aXJlQnl0ZXMpOworICAgIH0KKworICAgIGlmIChlcnJvck1lc3Nh
Z2UpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVzZXJJbmZvID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9uRm9yRXJyb3JDb2RlKFdLRXJy
b3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvck1lc3NhZ2UgZm9yS2V5
Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXldOworCisgICAgICAgIGF1dG8g
ZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46V0tFcnJvckRv
bWFpbiBjb2RlOldLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQgdXNlckluZm86dXNl
ckluZm8uZ2V0KCldKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7CisgICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgICAgIHJh
d0hhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNj
cmlwdFN0cmluZywgKGJvb2wpYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCks
IChib29sKWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJy
b3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMTkyMyw2ICsxOTk1LDExIEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAgICAgW3NlbGYg
Y3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKKy0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9u
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5
ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJy
b3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpq
YXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXJdOworfQorCiAtIChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0YQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBlbmNvZGVyLgpA
QCAtMjA2NSw3ICsyMTQyLDcgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRV
c2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxm
IF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5P
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVh
dGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1
bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlv
bkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV91cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNp
dGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYzMxMmM4MTg4YzBmYzA4
YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2OC4uZTEzNzkwY2JkY2NjYTk1YTIwMTJlNTQzMWI0OTZl
MzVkNWJjNjc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTUsNiArMzE1LDkgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRo
Q29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3Vy
YXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRh
LCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAodm9pZClfY2FsbEFzeW5jRnVu
Y3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rp
b25hcnkgKilhcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9y
ICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRhNGNjYzI1
MzRlMTBmM2QzMmNmZDg1OTBhNmJiM2RmZGE3Nzk2NGYuLjgzOGI0ZGE4NTAzOWM2YzJhZGVlMjNh
NmZmYTJjMTgzNzNjZjNiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzg0OSwxMiArMzg0OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5p
dGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9j
ZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV1RGTW92
ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVubmluZyBzY3JpcHQgaW4g
YSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0cy4KICAgICBsYXVuY2hJ
bml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODY1LDcgKzM4NjUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29y
bGROYW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGROYW1lLCBjYWxs
YmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGFjYjcwZjU2N2QzOTlmZWI2Y2ZmYWQ0MGNhYjc5MWQ5NDJkM2RlNWUuLjc3ZmMwNDU4N2NkOTlj
MzRkZmQ1ZGY2NmIxMjdjMmFhZmQ0YzY4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVySUQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dENoZWNraW5nLmg+CkBAIC0xMDYyLDggKzEwNjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZy
YW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgYm9vbCwg
V1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNv
cmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAxOGJkNjhkMTM3ZTk2NjYxM2NiNjE1M2MyNTM2NzQzYzQ4MmE3
MWYxLi4xM2Q0M2VkMDA5NTA1ZWEwMWI1YmYxOWEwMjM3N2VlZDJlMjA3MmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjE0LDYgKzIxNCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENv
bnRyb2xsZXIuaD4KQEAgLTMzNTIsNDUgKzMzNTMsNDkgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFn
ZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9k
ZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXli
b2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1Rv
TGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNh
cmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24g
ZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3Vs
dDsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFs
dWU7Ci0KICAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ6Om5vcm1hbFdvcmxkKCk7Ci0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAm
JiB3b3JsZCkgewotICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
LmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1l
KCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2Ny
aXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1
dGUgSmF2YVNjcmlwdDogUGFnZSBpcyBpbiBpbnZhbGlkIHN0YXRlIl9zIH0sIGNhbGxiYWNrSUQp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0g
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3
b3JsZCksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0
aW9uIHJlc3VsdCkgeworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkUmVzdWx0VmFsdWU7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1l
LT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZCksCisgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0
VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9y
V29ybGQod29ybGQucHRyKCkpLAogICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJh
bWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC52
YWx1ZSgpKSwgbnVsbHB0cik7CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQotICAg
ICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisgICAg
ICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoc2VyaWFs
aXplZFJlc3VsdFZhbHVlKQorICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZS0+ZGF0YSgpOworCisgICAgICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHM7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgZGV0YWlscyA9IHJl
c3VsdC5lcnJvcigpOwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsK
LSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
ZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkp
OworICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91c1Vz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewot
ICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFt
ZSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgQVNTRVJUKG1haW5XZWJGcmFtZSgpICE9IGZy
YW1lKTsKLSAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUs
IFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgeyBz
Y3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV1RGOjpudWxs
b3B0LCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5n
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCA3OGVhMDJlZjVmMmIwM2QzYzBmOWM5YWY3MWMzOTA5YmU0MTFhZTg3
Li5iMDdjZjE3ZjFiMjJjNzExOWY1Y2JkZGQxYmFlOGMyOWNmOWQ5YWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTcsNiArMTk3LDcgQEAgc3Ry
dWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Owogc3RydWN0IEtl
eXByZXNzQ29tbWFuZDsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOworc3RydWN0IFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVj
dCBWaWV3cG9ydEFyZ3VtZW50czsKIApAQCAtMTQzNSw4ICsxNDM2LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBjb25zdCBT
dHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdv
cmxkTmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3Qo
V2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6
ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiYWFkNzZlNTA5
MzdkNjYxYWI5NTA2NDUxZmE2NzQ0YjQ2YWQ3OWMxLi45YmYyMWVjMzUxYzJiYmI1NDNmODAxZmI4
NTRhZjBhOGQxMTgxOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIwNCw3ICsyMDQsNyBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIE9wdGlv
bmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5h
bWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZv
cmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwOGUxM2E0YWVmYjBhNWM3
YWNiNGNkOGQ3MDkwNGU4YTdiN2VhYTMuLmZhNWViYWY4MjA2ZjQ0NjNhZDEwMGIwM2MxNzM0NjMx
MDRjMWIxMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMi0yMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5j
dGlvbiB3aXRoIGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fz
eW5jRnVuY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmVycm9yOl0pOgor
CiAyMDE5LTEyLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBJbnB1dE1ldGhvZCBBUEkgdW5pdCB0ZXN0cyBkb24ndCB3b3JrIHVu
ZGVyIFgxMQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMGU4MDA5NDcyN2U0ZTFmMjZhMGI2
MWIzNDBiOTNjNzA1Mjc3ZjBjLi5mZWRmY2YyMzVmZGY5YzIwZTlkYzZmZTgwYTk1NWJhOWUwN2I1
ZTMzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkwLDYgKzI5MCw3IEBACiAJCTUxQUYy
M0RGMUVGMUEzNzMwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRjIzREUxRUYxQTM3MjAwNzJG
MjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gKi87IH07CiAJCTUxQjFFRTk2MUM4MEZBRUYw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTQxQzgwRkFERDAwNjRG
Qjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCAqLzsgfTsKIAkJNTFCMUVFOTcxQzgw
RkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBGQURE
MDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OworCQk1MUI0MEQ5
RTIzQUM5NjI0MDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBB
c3luY0Z1bmN0aW9uLm1tICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUgLyogSW5k
ZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJF
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CiAJCTUxQkU5RTY2MjM3NjA4OUYw
MEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFOUU2NTIzNzYwODk1MDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tICov
OyB9OwpAQCAtMTg0MSw2ICsxODQyLDcgQEAKIAkJNTFCMUVFOEQxQzgwRjU4ODAwNjRGQjk4IC8q
IEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSW5kZXhlZERCUGVyc2lzdGVuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0x
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2Ut
MS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMUVFOTUxQzgwRkFERDAw
NjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb24u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1NEVCMUI0RTIzNkIwMDg1RUFB
NiAvKiBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRGaW5pc2hMb2FkRm9yRnJhbWUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRGaW5p
c2hMb2FkRm9yRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTQ5
MUM4NEY0QUYwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJNdWx0aVByb2Nlc3MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJ
bmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
IkluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgyOSw2ICsyODMxLDcgQEAKIAkJCQkyREU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyog
QW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJQTE3OThCODEyMjQzMUQ2NTAwMDc2NEJEIC8qIEFw
cGxlUGF5Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tICovLAorCQkJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBBc3luY0Z1
bmN0aW9uLm1tICovLAogCQkJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAvKiBBc3luY1BvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQkzNzYwQzRGMDIxMTI0OUFGMDAyMzNB
Q0MgLyogQXR0clN0eWxlLm1tICovLAogCQkJCTc1NENFQzgwMUY2NzIyREMwMEQwMDM5QSAvKiBB
dXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKQEAgLTQ1MzYsNiArNDUzOSw3IEBACiAJCQkJQTE3OThC
ODIyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjNG
NjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUI0MEQ5RTIzQUM5NjI0MDBFMDUyNDEg
LyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzNDEzOEM3MjAzMjYxQ0Ew
MEYyNjk2MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MEM0RjEyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHls
ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MDE3OGM3OWYxNmJk
NTc5ODY2NzU3MzcyZjk1YzdhNTI4NGRkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KQEAgLTAsMCArMSwx
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKKworVEVTVChBc3luY0Z1bmN0aW9uLCBCYXNpYykKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8g
RnVuY3Rpb24gd2l0aCBubyByZXR1cm4gdmFsdWUuCisgICAgLy8gUmV0dXJucyBKYXZhU2NyaXB0
IHVuZGVmaW5lZCB3aGljaCB0cmFuc2xhdGVzIHRvIG5pbC4KKyAgICBpZCByZXN1bHQgPSBbd2Vi
VmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAiMSIgd2l0aEFyZ3VtZW50czpuaWwg
ZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX0VRKHJl
c3VsdCwgbmlsKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgZXhwbGljaXQgbnVsbC4KKyAg
ICAvLyBSZXR1cm5zIEphdmFTY3JpcHQgbnVsbCB3aGljaCB0cmFuc2xhdGVzIHRvIE5TTnVsbC4K
KyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0
dXJuIG51bGwiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdWxs
IGNsYXNzXV0pOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBhIG51bWJlci4KKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdp
dGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7
CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKworICAgIC8v
IEZ1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAnMSciIHdpdGhBcmd1bWVudHM6bmlsIGVy
cm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCIxIl0pOworCisgICAgLy8gVGFrZXMgbXVsdGlwbGUg
YXJndW1lbnRzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVu
Y3Rpb246QCJyZXR1cm4gYSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCwgQCJiIiA6
IEAyIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKKyAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKKworICAgIC8vIFRha2VzIG11
bHRpcGxlIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMsIGZvbGxvd3MgamF2YXNjcmlwdHMg
InR5cGUgYXBwZW5kaW5nIiBydWxlcy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGZvbyArIGJhciIgd2l0aEFyZ3VtZW50czpAeyBA
ImZvbyIgOiBAImZvbyIsIEAiYmFyIiA6IEA0MiB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNU
X05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6
QCJmb280MiJdKTsKKworICAgIC8vIEludmFsaWQgSmF2YVNjcmlwdCwgc2hvdWxkIHJldHVybiBh
biBlcnJvci4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOkAicmV0dW5yIG51bGwiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKK30K
KworVEVTVChBc3luY0Z1bmN0aW9uLCBJbnZhbGlkQXJndW1lbnRzKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBB
cmd1bWVudCBrZXlzIG11c3QgYmUgc3RyaW5ncy4KKyAgICBpZCByZXN1bHQgPSBbd2ViVmlldyBv
YmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsg
QDEgOiBAMSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBF
WFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIC8vIFZhbHVlcyBjYW4gb25seSBiZSBO
U1N0cmluZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgbWF5
IG9ubHkgY29udGFpbiB0aG9zZSA1IHR5cGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVj
dEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpAeyBAImEi
IDogW05TRGF0YSBkYXRhXSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwocmVzdWx0
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIHJlc3VsdCA9IFt3ZWJW
aWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50
czpAeyBAImEiIDogQFsgQDEsIFtOU0RhdGEgZGF0YV0gXSB9IGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKwor
ICAgIC8vIFJlZmVyZW5jZXMgYW4gYXJndW1lbnQgdGhhdCB3YXMgbm90IHByb3ZpZGVkLgorICAg
IHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4g
YSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCB9IGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKK30K
KworVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIFRlc3RzIHJv
dW5kIHRyaXBwaW5nIGEgd2hvbGUgYnVuY2ggb2YgYXJndW1lbnQgaW5wdXRzIGFuZCB2ZXJpZnlp
bmcgdGhlIHJlc3VsdC4KKworICAgIGlkIHZhbHVlID0gQDQyOworICAgIGlkIGFyZ3VtZW50cyA9
IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEAiRm9vIjsKKyAgICBhcmd1bWVu
dHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVy
cm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2
YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBbTlNEYXRlIGRhdGVXaXRoVGlt
ZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdOworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIg
OiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVu
Y3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsK
KyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6
cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEBbIEAxLCBAMiBdOworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEBbIEAiZm9vIiwgW05TRGF0ZSBkYXRlV2l0
aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTowXSBdOworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAMSwgQCJiIiA6IEAyIH07
CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBF
WFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJh
IiA6IEAiZm9vIiwgQCJiIiA6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVy
ZW5jZURhdGU6MF0gfTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICBy
ZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEi
IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAg
dmFsdWUgPSBAeyBAImEiIDogQHsgQCJhIiA6IEAxIH0gfTsKKyAgICBhcmd1bWVudHMgPSBAeyBA
ImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3lu
Y0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJv
cl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0Vx
dWFsOnJlc3VsdF0pOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmgKaW5kZXggMmFkMTVlZjIwOTRkZWY0MjcyOWY2MDE3MDRjZjg1MTY3MTU0YzI1ZS4u
M2NjNDM0YTVkMjVlMGU4ZDNkNzdmOGI5NWFmYTJkYzY5NGMyZjE3YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTYzLDYgKzYzLDcgQEAKIC0gKE5TU3Ry
aW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CiAt
IChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmlu
ZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5n
ICopc2NyaXB0OworLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcg
KilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihO
U0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVudGlsQ2xpZW50V2lkdGhJczoo
dW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGFhZmYyNWNkNzE2ZWNhZTZjZTYyYjU4MTcy
YzM5MjkzNTA5MjI2ZWEuLjc0YWQ1ODEyNTAxNmMwMzFmOGM1ZTRlZGJiOTQ4ZTE4MDVlYjU1MGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTE3OCw2
ICsxNzgsMjcgQEAgLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2Vz
dHVyZTooTlNTdHJpbmcgKilzY3JpcHQKICAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFz
ZSgpOwogfQogCistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5T
RXJyb3IgKiopZXJyb3JPdXQKK3sKKyAgICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBm
YWxzZTsKKyAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICplcnJvck91dCA9IG5pbDsKKworICAg
IFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBfY2FsbEFzeW5jRnVuY3Rpb246
c2NyaXB0IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0Owor
ICAgICAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICAgICAqZXJyb3JPdXQgPSBbZXJyb3IgcmV0
YWluXTsKKyAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKKwor
ICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgWyplcnJvck91dCBhdXRvcmVsZWFzZV07CisKKyAg
ICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOworfQorCiAtIChOU1N0cmluZyAqKXN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0CiB7CiAgICAgcmV0
dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386380</attachid>
            <date>2019-12-23 23:33:21 -0800</date>
            <delta_ts>2019-12-24 13:27:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191223233320.patch</filename>
            <type>text/plain</type>
            <size>64843</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc4MmQ4MzQwMmI0OTZl
ZjNhZDk0ZGYyZGE1ZTZlYzk3ZTcwYjllMy4uZGI4ZGEwNzA5ZWQxNjUwNGUzM2QzODE5OTgxYWFh
NWEyMzQ0NjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTIzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChy
MjUzNjM0KTogUmVwcm9kdWNpYmxlIGNyYXNoIGdvaW5nIGJhY2sgYW5kIGZvcndhcmQgb24gZ29v
ZHJlYWRzLmNvbSBpbiBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzdjNDZk
N2Y0ZjlkOGM1ODI3OTNlODZkOWEwMGM3NDg1NTBhZDgwMC4uNDA4MDc5ZjViN2RlYjVmY2ViNzk1
MzVkMDM2NmY4YTZhY2QyOTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0xMi0y
MyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLV2Vi
VmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5jdGlvbiB3aXRoIGFyZ3VtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tOgor
ICAgICAgICAoQVBJOjpzaGFyZWRDb250ZXh0KToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHZhbGlkYXRlQXJndW1lbnQpOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rpb246d2l0
aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0
aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5
LTEyLTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIHdh
dGNoT1MgYnVpbGQgZml4IGF0dGVtcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDhjN2U1YzU5NDdm
MGI1Yzk0MzY1OTc0ZTFlY2ZmYmFkZTE4YTBhNzAuLjM2NmQ5ZmE2YTQ5MTNkNTljYzlmNGYxZDRj
ODgzYWJjYzUxMjkzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjQwLDYgKzI0MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9KU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0LmgKICAgICBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKICAg
ICBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKyAgICBiaW5k
aW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODg5NTRlOTkwNmY1ODYzY2ViNDU4Nzhj
YWNmMTlmYTY0ZDQ4MTk5NC4uMzk3MzdiNDcyMTRlMGM0YjkzOTM1NmE2OWNhYmRhYWY3YWEzZWQw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTUzMyw2ICsxNTMzLDcgQEAKIAkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8q
IElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNC
MUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2
RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKIAkJNTFCQTRBQ0MxQkJDNUJERDAw
REYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdT
dG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTUxQkE5NDcxMjNBQzMwNTMwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTk0NkYyM0FD
MzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQ0NFMzAxRjhGMTc5RTAwNkJB
MEVEIC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29y
a2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBFMDAx
MDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4
MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzM1LDYgKzgzMzYsNyBAQAogCQk1MUJBNEFD
NzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUJBNEFDODFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkE0QUM5MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJFMzdERTBEQUVF
MDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFB
MzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNTQwMyw2ICsyNTQwNSw3IEBACiAJCQkJNDFCNDU5REExRjRDQURC
OTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCiAJCQkJNDE4QzM5NUUxQzhGMEFBQjAw
NTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQx
OEMzOTVGMUM4RjBBQUIwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
LmggKi8sCisJCQkJNTFCQTk0NkYyM0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzLmggKi8sCiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hl
ZEZyYW1lRGF0YS5jcHAgKi8sCiAJCQkJNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlw
dENhY2hlZEZyYW1lRGF0YS5oICovLAogCQkJCTkzQjcwRDUzMDlFQjBDN0MwMDlEODQ2OCAvKiBT
Y3JpcHRDb250cm9sbGVyLmNwcCAqLywKQEAgLTMyMTI5LDYgKzMyMTMyLDcgQEAKIAkJCQlFNDg2
M0NGRTIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
OUJBREEyMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc5QkFEQTQxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxQkE5NDcxMjNBQzMwNTMwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMUYwRDdFMkI4MjAwN0MzOTgzIC8q
IHJ1bnRpbWVfYXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDIxMEQ3RTJCODIwMDdD
Mzk4MyAvKiBydW50aW1lX21ldGhvZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKaW5kZXggZTgwYTk5MGEyZDc5NTJmZDBj
MjYxZGNlMTU0YWJkY2VhNzNlM2M1YS4uMTE0MTE5OGQyYmMzYjlkMzNkNDU3MzJhZWUxZDRjNjQ5
MWU2Zjg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9u
RGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFp
bHMuaApAQCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiAgICAgU3Ry
aW5nIG1lc3NhZ2U7CiAgICAgaW50IGxpbmVOdW1iZXIgeyAwIH07CiAgICAgaW50IGNvbHVtbk51
bWJlciB7IDAgfTsKLSAgICBTdHJpbmcgc291cmNlVVJMOworICAgIFN0cmluZyBzb3VyY2VVUkwg
eyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUx
ZThjMTBkZDg0ZDNmZjVjNDMwNDgzYjM2MTg3N2FjYTQ0YWQ5YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBSdW5Bc0Fz
eW5jRnVuY3Rpb24gOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBGb3JjZVVzZXJHZXN0
dXJlIDogYm9vbCB7IE5vLCBZZXMgfTsKKwordXNpbmcgQXJndW1lbnRXaXJlQnl0ZXNNYXAgPSBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+PjsKKworc3RydWN0IFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHsKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNv
dXJjZSwgYm9vbCBydW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVz
TWFwPiBhcmd1bWVudHMsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2Uo
c291cmNlKQorICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24g
PyBSdW5Bc0FzeW5jRnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm8pCisgICAg
ICAgICwgYXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJH
ZXN0dXJlKGZvcmNlVXNlckdlc3R1cmUgPyBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgOiBGb3JjZVVz
ZXJHZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVu
Y3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHMsIEZvcmNlVXNl
ckdlc3R1cmUgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2Uoc291cmNlKQorICAg
ICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAgICwg
YXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJl
KGZvcmNlVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBzb3VyY2U7Cisg
ICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICBPcHRpb25hbDxB
cmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOworICAgIEZvcmNlVXNlckdlc3R1cmUgZm9y
Y2VVc2VyR2VzdHVyZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHNv
dXJjZSA8PCBydW5Bc0FzeW5jRnVuY3Rpb24gPDwgYXJndW1lbnRzIDw8IGZvcmNlVXNlckdlc3R1
cmU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIFN0cmluZyBzb3VyY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c291cmNlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgUnVu
QXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShydW5Bc0FzeW5jRnVuY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRz
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VVc2Vy
R2VzdHVyZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmb3JjZVVzZXJHZXN0dXJlKSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHsgeyBz
b3VyY2UsIHJ1bkFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHMpLCBmb3JjZVVzZXJH
ZXN0dXJlIH0gfTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQxZWJi
NzRkMTUyMzcwN2FmZTQ0MThlNjMyNzcxYjgzNmQ4MmU3YjAuLjY2ZDg2NDFjOTI1NzA0Yzg0NzNm
NDk0OWY5M2VmNTJjNzM2YmQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUGFnZUdy
b3VwLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
Vmlld0Jhc2UuaCIKKyNpbmNsdWRlICJSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93
ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKQEAgLTU2NSwyMCArNTY2
LDExNiBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5X
b3JsZCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1
cmUgfSk7CiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVl
IHsgfTsKIH0KIAotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQorVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwot
ICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVu
dCgpLT5jaGFyc2V0KCkpKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKHBhcmFtZXRlcnMuZm9yY2VVc2VyR2VzdHVyZSA9PSBGb3JjZVVzZXJHZXN0dXJlOjpZZXMg
PyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZXR1cm5p
bmcgYW4gZW1wdHkgSlNWYWx1ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRpb25EZXRhaWxzLgog
ICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1
c2VkKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxk
KHNvdXJjZUNvZGUsIHdvcmxkKTsKKyAgICBzd2l0Y2ggKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1
bmN0aW9uKSB7CisgICAgY2FzZSBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vOiB7CisgICAgICAgIFNj
cmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShwYXJhbWV0ZXJzLnNvdXJjZSwgVVJMKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNv
dXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRv
Y3VtZW50KCktPmNoYXJzZXQoKSkpOworICAgICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNv
dXJjZUNvZGUsIHdvcmxkKTsKKyAgICB9CisgICAgY2FzZSBSdW5Bc0FzeW5jRnVuY3Rpb246Olll
czoKKyAgICAgICAgcmV0dXJuIGNhbGxJbldvcmxkKFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxk
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KK30KKworVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3Js
ZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCit7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1bmN0aW9uID09IFJ1
bkFzQXN5bmNGdW5jdGlvbjo6WWVzKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5hcmd1bWVudHMp
OworCisgICAgYXV0byYgcHJveHkgPSBqc1dpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBn
bG9iYWxPYmplY3QgPSAqcHJveHkud2luZG93KCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
bWFya2VkQXJndW1lbnRzOworICAgIFN0cmluZ0J1aWxkZXIgZnVuY3Rpb25TdHJpbmdCdWlsZGVy
OworICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisKKyAgICAvLyBCdWlsZCB1cCBhIG5ldyBzY3Jp
cHQgc3RyaW5nIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMsIGFuZCBk
ZXNlcmlhbGl6ZSB0aG9zZSBhcmd1bWVudHMuCisgICAgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKGZ1bmN0aW9uKCIpOworICAgIGZvciAoYXV0byBhcmd1bWVudCA9IHBhcmFtZXRlcnMu
YXJndW1lbnRzLT5iZWdpbigpOyBhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5k
KCk7KSB7CisgICAgICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoYXJndW1lbnQtPmtl
eSk7CisgICAgICAgIGF1dG8gc2VyaWFsaXplZEFyZ3VtZW50ID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYXJndW1lbnQtPnZhbHVlKSk7CisKKyAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZ2xvYmFsT2JqZWN0LnZtKCkp
OworICAgICAgICBhdXRvIGpzQXJndW1lbnQgPSBzZXJpYWxpemVkQXJndW1lbnQtPmRlc2VyaWFs
aXplKGdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJVbmFibGUg
dG8gZGVzZXJpYWxpemUgYXJndW1lbnQgdG8gZXhlY3V0ZSBhc3luY2hyb25vdXMgSmF2YVNjcmlw
dCBmdW5jdGlvbiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1h
cmtlZEFyZ3VtZW50cy5hcHBlbmQoanNBcmd1bWVudCk7CisKKyAgICAgICAgKythcmd1bWVudDsK
KyAgICAgICAgaWYgKGFyZ3VtZW50ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5lbmQoKSkKKyAg
ICAgICAgICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoJywnKTsKKyAgICB9CisKKyAg
ICBpZiAoIWVycm9yTWVzc2FnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JNZXNzYWdlIH0pOworCisgICAgZnVuY3Rpb25T
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKXsiLCBwYXJhbWV0ZXJzLnNvdXJjZSwgIn0pIik7CisKKyAg
ICBhdXRvIHNvdXJjZUNvZGUgPSBTY3JpcHRTb3VyY2VDb2RlIHsgZnVuY3Rpb25TdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCksIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0
aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3Jp
cHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpIH07CisgICAg
Y29uc3QgYXV0byYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKKwor
ICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7Cisg
ICAgY29uc3QgU3RyaW5nKiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOworICAgIG1fc291
cmNlVVJMID0gJnNvdXJjZVVSTDsKKworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUp
OworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9m
cmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0
Q29sdW1uKCkpOworCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247CisgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwor
ICAgIEpTVmFsdWUgcmV0dXJuVmFsdWU7CisgICAgZG8geworICAgICAgICBKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwg
SlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZwcm94eSwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisKKyAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0IHx8ICFmdW5jdGlv
bk9iamVjdC5pc0Z1bmN0aW9uKHdvcmxkLnZtKCkpKSB7CisgICAgICAgICAgICBvcHRpb25hbERl
dGFpbHMgPSB7IHsgIlVuYWJsZSB0byBjcmVhdGUgSmF2YVNjcmlwdCBhc3luYyBmdW5jdGlvbiB0
byBjYWxsIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NjIK
KyAgICAgICAgLy8gR2V0dGluZyBDYWxsRGF0YS9DYWxsVHlwZSBzaG91bGRuJ3QgYmUgcmVxdWly
ZWQgdG8gY2FsbCBpbnRvIEpTLgorICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh3b3JsZC52bSgpLCBmdW5jdGlvbk9iamVj
dCwgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
KyAgICAgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIHByZXBhcmUgSmF2
YVNjcmlwdCBhc3luYyBmdW5jdGlvbiB0byBiZSBjYWxsZWQiX3MgfSB9OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpw
cm9maWxlZENhbGwoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBm
dW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmcHJveHksIG1hcmtlZEFyZ3VtZW50
cywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgfSB3aGlsZSAoZmFsc2UpOworCisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKKworICAg
IGlmIChldmFsdWF0aW9uRXhjZXB0aW9uICYmICFvcHRpb25hbERldGFpbHMpIHsKKyAgICAgICAg
RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2Jh
bE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwg
JmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOwor
ICAgIH0KKworICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7CisKKyAgICBpZiAob3B0
aW9uYWxEZXRhaWxzKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKm9wdGlvbmFsRGV0
YWlscyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlKQpAQCAtNTg3LDEzICs2ODQsMjcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
RE8KICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9
OwogfQogVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9w
dCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKK30KKworVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFzaG91bGRB
bGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0
cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJs
ZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5
IHJlYXNvbnMiX3MgfSk7CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRT
Y3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQs
IGZvcmNlVXNlckdlc3R1cmUpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cit9CisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rp
b24mJiByZXNvbHZlRnVuY3Rpb24pCit7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKwor
ICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFibGUsIGluc3RhbGwgdGhlIGZ1
bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4KKworICAgIHJl
c29sdmVGdW5jdGlvbihyZXN1bHQpOwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3Vs
ZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMjY4ODFjYjcy
MzlkZjgyNzA2OGNmOGFjOGI1ZjE4N2NhYmM2MWQ2MC4uY2NkZGM4MWI4MmEzODEzODk4NWFmM2Iw
OGU5M2E0MzJhOWQ1ZTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJU
eXBlcy5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpA
QCAtNjMsNyArNjQsMTEgQEAgY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3MgU2Ny
aXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2lkZ2V0OworCitl
bnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5jdGlvbiA6IGJvb2w7CisKIHN0cnVjdCBFeGNlcHRpb25E
ZXRhaWxzOworc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOwogCiBlbnVtIFJlYXNvbkZv
ckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgQWJvdXRUb0NyZWF0ZUV2ZW50TGlzdGVu
ZXIsCkBAIC05MSwxMSArOTYsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxs
V29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAorICAgIHVzaW5nIFJlc29s
dmVGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0aW9uKT47CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7
CiAgICAgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
RE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSA9IGZhbHNlKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVV
c2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdl
bnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYsIFJlc29sdmVGdW5jdGlvbiYmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBE
T01XcmFwcGVyV29ybGQmKTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRz
KERvY3VtZW50JikgY29uc3Q7CiAKQEAgLTEwNiwxMCArMTE1LDYgQEAgcHVibGljOgogICAgIC8v
IERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRo
aXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNl
Q29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLQogICAg
IHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYsIERPTVdy
YXBwZXJXb3JsZCYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNj
cmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVy
cz4mJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNj
cmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKQEAgLTE3
MSw2ICsxNzYsMTEgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZF
eGVjdXRpbmdKYXZhc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV93aWxsUmVwbGFjZVdpdGhS
ZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3JpcHRVUkw7IH0KIAogcHJpdmF0ZToKKyAgICBWYWx1ZU9y
RXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwoRE9NV3JhcHBl
cldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7CisgICAgVmFsdWVPckV4Y2VwdGlv
biBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgVmFsdWVPckV4Y2VwdGlv
biBjYWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBET01XcmFwcGVyV29ybGQm
KTsKKyAgICAKICAgICB2b2lkIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1
bGVTY3JpcHQmLCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAK
ICAgICB2b2lkIGRpc2Nvbm5lY3RQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci5jcHAKaW5kZXggNWUwNjlkNzkxMDcyYmY1N2RkZDczYzQzZTRlMWVhOTE2
NzMxZjVmYS4uMDg3NWE1ZWNmZmE5YzY3ZTYwYzFhZjY2YzkwYzcwOTVmZTdiZDEwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAKQEAgLTE5NjksNyArMTk2OSw3IEBAIHl5cmVkdWNl
OgogI2xpbmUgNDAyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKICAgICB7CiAgICAgICAg
ICh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7Ci0gICAgICAg
ICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlv
blBhdGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKKyAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlv
blBhdGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCkBAIC0xOTc4LDcgKzE5NzgsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5
eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnByZXBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0
cjxTdGVwPigoeXl2c3BbKDIpIC0gKDMpXS5zdGVwKSkpOwogICAgICAgICAoeXl2c3BbKDMpIC0g
KDMpXS5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvbikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAt
ICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigoeXl2c3Bb
KDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9
IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAt
ICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigoeXl2c3Bb
KDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CiAgICAgO30KICAgICBicmVhazsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55CmluZGV4IDRlYjIwYjkyYTU2NDg5ZTBmZmI2MDU5ZTExYWZhOTI2
Y2JhM2I5NDYuLmI3NTFhNjFiYTNmNDIyMjQwZTdjMGJlMGU0ZjVkNjEzZTJmN2E1NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkKQEAgLTQwMSwxNCArNDAxLDE0IEBAIFBhdGhFeHByOgog
ICAgIEZpbHRlckV4cHIgJy8nIFJlbGF0aXZlTG9jYXRpb25QYXRoCiAgICAgewogICAgICAgICAk
My0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgJCQgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOworICAg
ICAgICAkJCA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oJDEp
LCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOwogICAgIH0KICAgICB8CiAgICAg
RmlsdGVyRXhwciBEZXNjZW5kYW50T3JTZWxmIFJlbGF0aXZlTG9jYXRpb25QYXRoCiAgICAgewog
ICAgICAgICAkMy0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCQyKSk7CiAgICAg
ICAgICQzLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAkJCA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7
CisgICAgICAgICQkID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CiAgICAgfQogICAgIDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCmluZGV4IDU0YzM0ZTg4ODRjMjRjY2I4MjRlNmQyYmNmZDM2MDI3NzY4NTI3MGUuLjFm
NDNlNjNjNjExMmUwZjY0NzY5YTQxODMwNmM4YjQ2YmIyMGRmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYxLDYg
KzYxLDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9f
T0JKQ19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CiAjZW5kaWYKIAogICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJp
YWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKaW5kZXggMGMxNWY4YjkzYzc4MDdlZmQ3NGJiZTQwMDgyODQ0NDFjNTZmYWRi
Zi4uZGQ3OTZiODMzMjM1OWUxYzNiMWU1NTc1ZmQ3YTAzMzUzY2IxZmFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGll
bnRCYXNlKiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdL
UGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCks
IHRydWUsIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJl
dHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5W
YWx1ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSA/IHRvQVBJKEFQSTo6
RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCmluZGV4IGEyNjczZTI1YzExMzQwNzE5MTJjMjAy
OGZkN2RmMjI5NjU0YWEzOGUuLjY2ZThiMjdhMDlhZjgzZTVmYmY3MTMxZDBmMWVkN2ExOGFiNDc1
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KQEAgLTI2LDcgKzI2LDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKIAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2Jh
bE9iamVjdElubGluZXMuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KQEAg
LTU5LDExICs2MSwxNiBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVyPFNoYXJlZEpTQ29u
dGV4dD4gbV90aW1lcjsKIH07CiAKK3N0YXRpYyBTaGFyZWRKU0NvbnRleHQmIHNoYXJlZENvbnRl
eHQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRKU0NvbnRleHQ+IHNoYXJl
ZENvbnRleHQ7CisgICAgcmV0dXJuIHNoYXJlZENvbnRleHQuZ2V0KCk7Cit9CisKIGlkIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFyZWRKU0NvbnRleHQ+IHNoYXJlZENvbnRleHQ7Ci0gICAgSlNDb250ZXh0KiBjb250ZXh0ID0g
c2hhcmVkQ29udGV4dC5nZXQoKS5lbnN1cmVDb250ZXh0KCk7CisgICAgSlNDb250ZXh0KiBjb250
ZXh0ID0gc2hhcmVkQ29udGV4dCgpLmVuc3VyZUNvbnRleHQoKTsKIAogICAgIEpTVmFsdWVSZWYg
dmFsdWVSZWYgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSwgZXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbHVlUmVmKQpAQCAtNzMs
NCArODAsMjAgQEAgaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWQKICAgICByZXR1cm4gdmFsdWUudG9P
YmplY3Q7CiB9CiAKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQgb2JqZWN0KQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4dCgp
LmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGdsb2JhbE9iamVjdCA9IHRvSlMo
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7
CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOworCisgICAgYXV0byBj
b3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZ2xvYmFs
T2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7CisgICAgcmV0
dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKK30KKwogfSAvLyBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDRlN2JjMGNmNzY4
ZTEzNGViMGYzYzk4NjZmYzI4OWNmNTM0MWM5YmQuLjM4OWY0ZmMzOWMzNTY0OWFiZTk5NDA0ZThl
ZTU4NDc3ZWZjMmNhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtODIyLDE0ICs4MjIsODYgQEAgc3RhdGljIFdLRXJyb3JDb2RlIGNh
bGxiYWNrRXJyb3JDb2RlKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKIAogLSAo
dm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VV
c2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rp
b246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCi0tICh2b2lkKV9ldmFsdWF0ZUphdmFTY3Jp
cHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKWZv
cmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyCitzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3VtZW50KGlkIGFyZ3Vt
ZW50KQoreworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJndW1l
bnQgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xh
c3M6W05TTnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChbYXJn
dW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sg
Qk9PTCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVjdHNV
c2luZ0Jsb2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAg
ICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIHZh
bGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0b3AgPSBZRVM7CisgICAgICAgICAgICB9
CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2YWxpZDsKKyAgICB9CisKKyAgICBpZiAo
W2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAgICAg
IF9fYmxvY2sgYm9vbCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0
ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKGlkIGtleSwgaWQgdmFsdWUsIEJPT0wgKnN0b3Ap
IHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChrZXkpIHx8ICF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgKnN0b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAg
ICAgIHJldHVybiB2YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy0gKHZv
aWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5
bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3VtZW50czooTlNEaWN0aW9u
YXJ5ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5
XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJp
bmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29k
ZSkgeworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVu
dHNNYXA7CisgICAgaWYgKGFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgYXJndW1lbnRzTWFwID0g
V2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXAgeyB9OworICAgIE5TU3RyaW5nICplcnJvck1l
c3NhZ2UgPSBuaWw7CisKKyAgICBmb3IgKGlkIGtleSBpbiBhcmd1bWVudHMpIHsKKyAgICAgICAg
aWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgICAg
IGVycm9yTWVzc2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgbmFtZXMgbXVzdCBiZSBzdHJpbmdz
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgCisgICAgICAgIGlkIHZhbHVl
ID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgeworICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRl
LCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgCisgICAgICAgIGF1dG8gd2lyZUJ5dGVzID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2YWx1ZSk7CisgICAgICAgIC8vIFNpbmNlIHdl
J3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlvbmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5ldmVy
IGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2lyZSBieXRlcy4KKyAgICAgICAgQVNTRVJUKHdp
cmVCeXRlcyk7CisgICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgKndpcmVCeXRlcyk7Cisg
ICAgfQorCisgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6bG9jYWxpemVkRGVz
Y3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25PY2N1cnJlZCkg
Zm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICBbdXNlckluZm8gc2V0
T2JqZWN0OmVycm9yTWVzc2FnZSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbk1lc3NhZ2VF
cnJvcktleV07CisKKyAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9j
XSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOworICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbaGFuZGxlciwgZXJyb3JdIHsKKyAg
ICAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5k
bGVyLmdldCgpOworICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYWdlLT5ydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoeyBqYXZhU2NyaXB0U3RyaW5nLCAoYm9vbClhc0FzeW5jRnVuY3Rp
b24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgKGJvb2wpZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFu
ZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3Jp
cHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVy
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTIzLDYgKzE5OTUsMTEgQEAgLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb24KICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpwZGZD
b25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAor
LSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3
aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBb
c2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9u
OllFUyB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKIC0gKE5TRGF0YSAqKV9zZXNzaW9u
U3RhdGVEYXRhCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2Fj
eSBzZXNzaW9uIHN0YXRlIGVuY29kZXIuCkBAIC0yMDY1LDcgKzIxNDIsNyBAQCAtICh2b2lkKV9p
c0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClf
ZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0
U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBh
c0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpOTyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX3VwZGF0
ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0ZVBvbGljaWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCBjMzEyYzgxODhjMGZjMDhjNjkzMTg2ODFlYjgzZmMxYTc4NzA5MzY4Li5lMTM3
OTBjYmRjY2NhOTVhMjAxMmU1NDMxYjQ5NmUzNWQ1YmM2NzQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTMxNSw2
ICszMTUsOSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsK
IC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRl
eHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKIC0g
KHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmln
dXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCistICh2b2lkKV9jYWxsQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKwog
QGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyYTQzOTg4MDFmYWFhOWZjMDhk
NjQxNTBiMzE4ZDZmZjBjMzg2MzllLi42NDZlNDVhZGMyODE4Mjg3ZjQ3ZDAwMzQwNTY3ODIyYzIx
MGExNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtMzYzNiw3ICszNjM2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHNjcmlw
dCwKICAgICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7CiAKICAgICBHUmVmUHRyPEdUYXNrPiB0
YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNr
LCB1c2VyRGF0YSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlv
bkRldGFpbHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9uRGV0
YWlscyA9ICpkZXRhaWxzOwpAQCAtMzczNyw3ICszNzM3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfaW5fd29ybGQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Z2NoYXIKICAgICBnX3JldHVybl9pZl9mYWlsKHdvcmxkTmFtZSk7CiAKICAgICBHUmVmUHRyPEdU
YXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNh
bGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBTdHJp
bmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAg
Z2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCh7IFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBTdHJp
bmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAg
ICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFp
bHMpCiAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zNzc5LDcg
KzM3NzksNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09iamVj
dCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogCiAgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5n
ZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURhdGEgPSBnX21lbW9yeV9vdXRwdXRf
c3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJFQU0ob2JqZWN0KSk7Ci0gICAgZ2V0
UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChy
ZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCB0cnVlLAor
ICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpm
cm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkp
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlfSwKICAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAg
ICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAgICAgICAgaWYg
KGRldGFpbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0
YTRjY2MyNTM0ZTEwZjNkMzJjZmQ4NTkwYTZiYjNkZmRhNzc5NjRmLi44MzhiNGRhODUwMzljNmMy
YWRlZTIzYTZmZmEyYzE4MzczY2YzYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTM4NDksMTIgKzM4NDksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxh
dW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsg
fSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxk
KFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2Ny
aXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAg
bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2NSw3ICszODY1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxkTmFt
ZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBhY2I3MGY1NjdkMzk5ZmViNmNmZmFkNDBjYWI3OTFkOTQyZDNkZTVlLi43N2ZjMDQ1
ODdjZDk5YzM0ZGZkNWRmNjZiMTI3YzJhYWZkNGM2ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRlcklELmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5
cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRDaGVja2luZy5oPgpAQCAtMTA2Miw4ICsxMDYzLDggQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFt
ZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJG
cmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYs
IGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSos
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCiAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVw
YWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMThiZDY4ZDEzN2U5NjY2MTNjYjYxNTNjMjUzNjc0
M2M0ODJhNzFmMS4uMTNkNDNlZDAwOTUwNWVhMDFiNWJmMTlhMDIzNzdlZWQyZTIwNzJmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNCw2
ICsyMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1l
dGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+CkBAIC0zMzUyLDQ1ICszMzUzLDQ5IEBAIEtleWJvYXJkVUlNb2Rl
IFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9h
cmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxs
IDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vz
c1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29y
bGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVlZCB0
byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVw
ZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgog
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlv
biByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJl
c3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZy
YW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCks
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNv
cmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0
byBleGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxs
YmFja0lEKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVGdW5j
dGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHdvcmxkID0gbWFr
ZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0oVmFsdWVP
ckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwogICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAg
ICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAorICAgICAgICAgICAgc2VyaWFsaXpl
ZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29u
dGV4dEZvcldvcmxkKHdvcmxkLnB0cigpKSwKICAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+
Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCBy
ZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgp
OworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYg
KHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJp
YWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKworICAgICAgICBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiBkZXRhaWxzOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGRldGFp
bHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRl
dGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3Io
KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxi
YWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICB9OwogCi0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21t
b25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5h
bWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChtYWlu
V2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJhbWUo
KSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlLCBXVEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQoZnJh
bWUsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIFdU
Rjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNB
c1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzhlYTAyZWY1ZjJiMDNkM2MwZjljOWFmNzFjMzkwOWJl
NDExYWU4Ny4uYjA3Y2YxN2YxYjIyYzcxMTlmNWNiZGRkMWJhZThjMjljZjlkOWFkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTk3LDYgKzE5Nyw3
IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwogc3RydWN0IEhpZ2hsaWdodDsKIHN0
cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKK3N0
cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7
CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAKQEAgLTE0MzUsOCArMTQzNiw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQg
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNu
YXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJp
dG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYmFh
ZDc2ZTUwOTM3ZDY2MWFiOTUwNjQ1MWZhNjc0NGI0NmFkNzljMS4uOWJmMjFlYzM1MWMyYmJiNTQz
ZjgwMWZiODU0YWYwYThkMTE4MTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsNyArMjA0LDcgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdlYkNv
cmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmluZz4g
d29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2Ny
aXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYjE2YWNlMzRl
ODA0MmMxNGRiMWRhMjI2NDI0YjZjODNiZjU3ZWJhLi4zMTE3MThmN2MwZmU0NWE5ODlmNDM3YjBj
YmQzYWI0MmZlZWMzY2RlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTItMjMgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJIHRvIGV2YWx1YXRl
IGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJv
cjpdKToKKwogMjAxOS0xMi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcvRlRMIHNob3VsZCBiZSBhYmxlIHRvIGV4aXQgdG8gdGhlIG1pZGRs
ZSBvZiBhIGJ5dGVjb2RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwZTgwMDk0NzI3ZTRl
MWYyNmEwYjYxYjM0MGI5M2M3MDUyNzdmMGMuLmZlZGZjZjIzNWZkZjljMjBlOWRjNmZlODBhOTU1
YmE5ZTA3YjVlMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTAsNiArMjkwLDcgQEAK
IAkJNTFBRjIzREYxRUYxQTM3MzAwNzJGMjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFGMjNERTFFRjFB
MzcyMDA3MkYyODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTFCMUVFOTYx
QzgwRkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NDFDODBG
QUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovOyB9OwogCQk1MUIx
RUU5NzFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk1
MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07CisJ
CTUxQjQwRDlFMjNBQzk2MjQwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDBEOUQyM0FDOTYwRTAwRTA1
MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi87IH07CiAJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgy
RSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0RjFDODRGNTNC
MDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFDODRGNTJDMDA0
MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKIAkJNTFCRTlFNjYy
Mzc2MDg5RjAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5
cGUubW0gKi87IH07CkBAIC0xODQxLDYgKzE4NDIsNyBAQAogCQk1MUIxRUU4RDFDODBGNTg4MDA2
NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCMUVFOTQxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNp
c3RlbmNlLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJQZXJz
aXN0ZW5jZS0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NTFD
ODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBBc3luY0Z1
bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXN5bmNG
dW5jdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDU0RUIxQjRFMjM2
QjAwODVFQUE2IC8qIFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlzaExvYWRGb3JGcmFtZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDbG9zZUluc2lk
ZURpZEZpbmlzaExvYWRGb3JGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vz
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJD
ODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yODI5LDYgKzI4MzEsNyBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkw
NDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0
QkQgLyogQXBwbGVQYXkubW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFw
cGxpY2F0aW9uTWFuaWZlc3QubW0gKi8sCisJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8q
IEFzeW5jRnVuY3Rpb24ubW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFz
eW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5
QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAw
MzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tICovLApAQCAtNDUzNiw2ICs0NTM5LDcgQEAKIAkJ
CQlBMTc5OEI4MjIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywK
IAkJCQk2M0Y2NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQjQwRDlFMjNBQzk2MjQw
MEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0MTM4Qzcy
MDMyNjFDQTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRT
dHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzYwQzRGMTIxMTI0OUFGMDAyMzNBQ0MgLyog
QXR0clN0eWxlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwMTc4
Yzc5ZjE2YmQ1Nzk4NjY3NTczNzJmOTVjN2E1Mjg0ZGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAt
MCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKEFzeW5jRnVuY3Rpb24sIEJhc2ljKQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisK
KyAgICAvLyBGdW5jdGlvbiB3aXRoIG5vIHJldHVybiB2YWx1ZS4KKyAgICAvLyBSZXR1cm5zIEph
dmFTY3JpcHQgdW5kZWZpbmVkIHdoaWNoIHRyYW5zbGF0ZXMgdG8gbmlsLgorICAgIGlkIHJlc3Vs
dCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCIxIiB3aXRoQXJndW1l
bnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBF
Q1RfRVEocmVzdWx0LCBuaWwpOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBleHBsaWNpdCBu
dWxsLgorICAgIC8vIFJldHVybnMgSmF2YVNjcmlwdCBudWxsIHdoaWNoIHRyYW5zbGF0ZXMgdG8g
TlNOdWxsLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNz
OltOU051bGwgY2xhc3NdXSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgbnVtYmVyLgor
ICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1
cm4gMSIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBj
bGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOwor
CisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZy4KKyAgICByZXN1bHQgPSBbd2ViVmll
dyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuICcxJyIgd2l0aEFyZ3VtZW50
czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIjEiXSk7CisKKyAgICAvLyBUYWtlcyBt
dWx0aXBsZSBhcmd1bWVudHMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAInJldHVybiBhICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQw
LCBAImIiIDogQDIgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwor
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOworCisgICAgLy8g
VGFrZXMgbXVsdGlwbGUgYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcywgZm9sbG93cyBqYXZh
c2NyaXB0cyAidHlwZSBhcHBlbmRpbmciIHJ1bGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gZm9vICsgYmFyIiB3aXRoQXJndW1l
bnRzOkB7IEAiZm9vIiA6IEAiZm9vIiwgQCJiYXIiIDogQDQyIH0gZXJyb3I6JmVycm9yXTsKKyAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxU
b1N0cmluZzpAImZvbzQyIl0pOworCisgICAgLy8gSW52YWxpZCBKYXZhU2NyaXB0LCBzaG91bGQg
cmV0dXJuIGFuIGVycm9yLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1bnIgbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9y
XTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1
bHQpOworfQorCitURVNUKEFzeW5jRnVuY3Rpb24sIEludmFsaWRBcmd1bWVudHMpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKwor
ICAgIC8vIEFyZ3VtZW50IGtleXMgbXVzdCBiZSBzdHJpbmdzLgorICAgIGlkIHJlc3VsdCA9IFt3
ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3Vt
ZW50czpAeyBAMSA6IEAxIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgLy8gVmFsdWVzIGNhbiBv
bmx5IGJlIE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRlLCBOU0FycmF5LCBOU0RpY3Rpb25hcnks
IGFuZCBtYXkgb25seSBjb250YWluIHRob3NlIDUgdHlwZXMuCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRz
OkB7IEAiYSIgOiBbTlNEYXRhIGRhdGFdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVM
TChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRo
QXJndW1lbnRzOkB7IEAiYSIgOiBAWyBAMSwgW05TRGF0YSBkYXRhXSBdIH0gZXJyb3I6JmVycm9y
XTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBu
aWwpOworCisgICAgLy8gUmVmZXJlbmNlcyBhbiBhcmd1bWVudCB0aGF0IHdhcyBub3QgcHJvdmlk
ZWQuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwIH0gZXJyb3I6JmVycm9y
XTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBu
aWwpOworfQorCitURVNUKEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJpcCkKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8g
VGVzdHMgcm91bmQgdHJpcHBpbmcgYSB3aG9sZSBidW5jaCBvZiBhcmd1bWVudCBpbnB1dHMgYW5k
IHZlcmlmeWluZyB0aGUgcmVzdWx0LgorCisgICAgaWQgdmFsdWUgPSBANDI7CisgICAgaWQgYXJn
dW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3Vt
ZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQCJGb28iOworICAg
IGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1
bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNU
X1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU0RhdGUgZGF0
ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF07CisgICAgYXJndW1lbnRzID0g
QHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjom
ZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUg
aXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQDEsIEAyIF07CisgICAgYXJndW1l
bnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlD
YWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShb
dmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQCJmb28iLCBbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIF07CisgICAgYXJndW1l
bnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlD
YWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShb
dmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEAxLCBAImIi
IDogQDIgfTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQg
PSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUg
PSBAeyBAImEiIDogQCJmb28iLCBAImIiIDogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNp
bmNlUmVmZXJlbmNlRGF0ZTowXSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9
OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJy
ZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7
CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAeyBAImEiIDogQDEgfSB9OworICAgIGFyZ3VtZW50
cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaAppbmRleCAyYWQxNWVmMjA5NGRlZjQyNzI5ZjYwMTcwNGNmODUxNjcx
NTRjMjVlLi4zY2M0MzRhNWQyNWUwZThkM2Q3N2Y4Yjk1YWZhMmRjNjk0YzJmMTdhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjMsNiArNjMsNyBAQAog
LSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNj
cmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6
KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilzY3JpcHQ7CistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihO
U1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRX
aWR0aElzOih1bnNpZ25lZClleHBlY3RlZENsaWVudFdpZHRoOwogQGVuZAogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggYWFmZjI1Y2Q3MTZlY2FlNmNl
NjJiNTgxNzJjMzkyOTM1MDkyMjZlYS4uNzRhZDU4MTI1MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgw
NWViNTUwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpA
QCAtMTc4LDYgKzE3OCwyNyBAQCAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0
aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdAogICAgIHJldHVybiBldmFsUmVzdWx0LmF1
dG9yZWxlYXNlKCk7CiB9CiAKKy0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5T
U3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBl
cnJvcjooTlNFcnJvciAqKillcnJvck91dAoreworICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNj
cmlwdCA9IGZhbHNlOworICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgKmVycm9yT3V0ID0gbmls
OworCisgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OworICAgIFtzZWxmIF9jYWxsQXN5bmNG
dW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGV2YWxSZXN1bHQgPSBy
ZXN1bHQ7CisgICAgICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgICAgICplcnJvck91dCA9IFtl
cnJvciByZXRhaW5dOworICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3Jp
cHQpOworCisgICAgaWYgKGVycm9yT3V0KQorICAgICAgICBbKmVycm9yT3V0IGF1dG9yZWxlYXNl
XTsKKworICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKE5TU3Ry
aW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKIHsK
ICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386393</attachid>
            <date>2019-12-24 13:27:43 -0800</date>
            <delta_ts>2019-12-26 21:52:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191224132742.patch</filename>
            <type>text/plain</type>
            <size>65784</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uMjQzOWEyODk4YjA1YzJhYWRhNTBhMjlhMjdlZWFj
YjVjYTAzMzY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTI0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBTcGVjaWFsIGNvbWJpbmF0aW9uIGNoYXJhY3RlcnMgZG9lc24ndCByZXNwZWN0IHRoZSBrZXlz
dHJva2Ugb3JkZXIgd2hlbiBoaWdoIENQVSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc3YzQ2ZDdmNGY5ZDhj
NTgyNzkzZTg2ZDlhMDBjNzQ4NTUwYWQ4MDAuLjUxYjVkZWQ0MWYyNjNiMWVmNjgxZDc0OWMzMjU5
NDU1MTFjN2E1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTItMjQgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJ
IHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbToKKyAgICAgICAg
KEFQSTo6c2hhcmVkQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVu
dHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaE9TIGJ1
aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4YzdlNWM1OTQ3ZjBiNWM5NDM2
NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5ZjRmMWQ0Yzg4M2FiY2M1
MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvSlNWYWx1ZUluV3Jh
cHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCiAgICAgYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisgICAgYmluZGluZ3MvanMv
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2NlYjQ1ODc4Y2FjZjE5ZmE2
NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFmN2FhM2VkMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRh
YmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8q
IFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJNTFCQTRBQzcxQkJDNUFE
NjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNE
NkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUEx
MEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUE0
MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZG
RCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4RjBBQUIwMDUxQzhBMyAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk0MThDMzk1RjFD
OEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovLAor
CQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
ICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29u
dHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJCQkJRTQ4NjNDRkUyMzg0
MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBMjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJB
REE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUJB
OTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3OTUyZmQwYzI2MWRjZTE1
NGFiZGNlYTczZTNjNWEuLjExNDExOThkMmJjM2I5ZDMzZDQ1NzMyYWVlMWQ0YzY0OTFlNmY4Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKQEAg
LTMzLDcgKzMzLDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFpbHMgewogICAgIFN0cmluZyBtZXNz
YWdlOwogICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwogICAgIGludCBjb2x1bW5OdW1iZXIgeyAw
IH07Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICBTdHJpbmcgc291cmNlVVJMIHsgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMWU4YzEwZGQ4
NGQzZmY1YzQzMDQ4M2IzNjE4NzdhY2E0NGFkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgUnVuQXNBc3luY0Z1bmN0
aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgRm9yY2VVc2VyR2VzdHVyZSA6IGJv
b2wgeyBObywgWWVzIH07CisKK3VzaW5nIEFyZ3VtZW50V2lyZUJ5dGVzTWFwID0gSGFzaE1hcDxT
dHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CisKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyB7CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJv
b2wgcnVuQXNBc3luY0Z1bmN0aW9uLCBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJn
dW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkK
KyAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNB
c3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vKQorICAgICAgICAsIGFy
Z3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShm
b3JjZVVzZXJHZXN0dXJlID8gRm9yY2VVc2VyR2VzdHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVy
ZTo6Tm8pCisgICAgeworICAgIH0KKworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKGNvbnN0
IFN0cmluZyYgc291cmNlLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBP
cHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzLCBGb3JjZVVzZXJHZXN0dXJl
IGZvcmNlVXNlckdlc3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBy
dW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uKQorICAgICAgICAsIGFyZ3VtZW50
cyhXVEZNb3ZlKGFyZ3VtZW50cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVz
ZXJHZXN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgc291cmNlOworICAgIFJ1bkFz
QXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgT3B0aW9uYWw8QXJndW1lbnRX
aXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdl
c3R1cmU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UgPDwg
cnVuQXNBc3luY0Z1bmN0aW9uIDw8IGFyZ3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJlOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAg
ICAgICBTdHJpbmcgc291cmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFJ1bkFzQXN5bmNG
dW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cnVuQXNBc3luY0Z1bmN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IHsgc291cmNlLCBy
dW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzKSwgZm9yY2VVc2VyR2VzdHVyZSB9
IH07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MWViYjc0ZDE1MjM3
MDdhZmU0NDE4ZTYzMjc3MWI4MzZkODJlN2IwLi42NmQ4NjQxYzkyNTcwNGM4NDczZjQ5NDlmOTNl
ZjUyYzczNmJkMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNl
LmgiCisjaW5jbHVkZSAiUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTYgQEAg
SlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2Vw
dGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUpOworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwog
ICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9
CiAKLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSkKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJ
bmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3Jp
cHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJv
Z3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hh
cnNldCgpKSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJh
bWV0ZXJzLmZvcmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9u
YWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBX
VEY6Om51bGxvcHQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVt
cHR5IEpTVmFsdWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAo
IWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VD
b2RlLCB3b3JsZCk7CisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikg
eworICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3Vy
Y2VDb2RlIHNvdXJjZUNvZGUocGFyYW1ldGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBl
OjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgp
LT5jaGFyc2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2Rl
LCB3b3JsZCk7CisgICAgfQorICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAg
ICAgIHJldHVybiBjYWxsSW5Xb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQor
eworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5j
RnVuY3Rpb246Olllcyk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuYXJndW1lbnRzKTsKKworICAg
IGF1dG8mIHByb3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2Jq
ZWN0ID0gKnByb3h5LndpbmRvdygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtlZEFy
Z3VtZW50czsKKyAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5nQnVpbGRlcjsKKyAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlOworCisgICAgLy8gQnVpbGQgdXAgYSBuZXcgc2NyaXB0IHN0cmlu
ZyB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzLCBhbmQgZGVzZXJpYWxp
emUgdGhvc2UgYXJndW1lbnRzLgorICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIihm
dW5jdGlvbigiKTsKKyAgICBmb3IgKGF1dG8gYXJndW1lbnQgPSBwYXJhbWV0ZXJzLmFyZ3VtZW50
cy0+YmVnaW4oKTsgYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpOykgewor
ICAgICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3VtZW50LT5rZXkpOworICAg
ICAgICBhdXRvIHNlcmlhbGl6ZWRBcmd1bWVudCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlRnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGFyZ3VtZW50LT52YWx1ZSkpOworCisgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAg
ICAgYXV0byBqc0FyZ3VtZW50ID0gc2VyaWFsaXplZEFyZ3VtZW50LT5kZXNlcmlhbGl6ZShnbG9i
YWxPYmplY3QsICZnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIGRlc2Vy
aWFsaXplIGFyZ3VtZW50IHRvIGV4ZWN1dGUgYXN5bmNocm9ub3VzIEphdmFTY3JpcHQgZnVuY3Rp
b24iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtYXJrZWRBcmd1
bWVudHMuYXBwZW5kKGpzQXJndW1lbnQpOworCisgICAgICAgICsrYXJndW1lbnQ7CisgICAgICAg
IGlmIChhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5kKCkpCisgICAgICAgICAg
ICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgfQorCisgICAgaWYgKCFl
cnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhj
ZXB0aW9uRGV0YWlscyB7IGVycm9yTWVzc2FnZSB9KTsKKworICAgIGZ1bmN0aW9uU3RyaW5nQnVp
bGRlci5hcHBlbmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIpOworCisgICAgYXV0byBz
b3VyY2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci50b1N0
cmluZygpLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBK
U0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hl
cjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSB9OworICAgIGNvbnN0IGF1
dG8mIGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CisKKyAgICBTdHJp
bmcgc291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0
IFN0cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKKyAgICBtX3NvdXJjZVVSTCA9
ICZzb3VyY2VVUkw7CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNv
dXJjZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVtbigp
KTsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwor
ICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKKyAgICBKU1Zh
bHVlIHJldHVyblZhbHVlOworICAgIGRvIHsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbk9iamVj
dCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJv
ZmlsaW5nUmVhc29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNl
cHRpb24pOworCisgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3Qu
aXNGdW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0g
eyB7ICJVbmFibGUgdG8gY3JlYXRlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCJf
cyB9IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCisgICAgICAg
IC8vIEdldHRpbmcgQ2FsbERhdGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNh
bGwgaW50byBKUy4KKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxE
YXRhKTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAg
ICAgICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQg
YXN5bmMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRD
YWxsKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25P
YmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1
YXRpb25FeGNlcHRpb24pOworICAgIH0gd2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBpZiAoZXZh
bHVhdGlvbkV4Y2VwdGlvbiAmJiAhb3B0aW9uYWxEZXRhaWxzKSB7CisgICAgICAgIEV4Y2VwdGlv
bkRldGFpbHMgZGV0YWlsczsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3Qs
IGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxz
KTsKKyAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKKyAgICB9CisK
KyAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOworCisgICAgaWYgKG9wdGlvbmFsRGV0
YWlscykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSkKQEAgLTU4NywxMyArNjg0LDI3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiAgICAg
cmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGRJbnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNl
VXNlckdlc3R1cmUgfSk7Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byYg
ZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2Vy
QWdlbnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4
Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhp
cyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVu
IHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25z
Il9zIH0pOwogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygp
OwotICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVz
ZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1v
dmUocGFyYW1ldGVycykpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3lu
Y2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVz
b2x2ZUZ1bmN0aW9uKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNjcmlw
dEluV29ybGRJbnRlcm5hbCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisKKyAgICAvLyBG
SVhNRTogSWYgdGhlIHJlc3VsdCBpcyBhIHRoZW5hYmxlLCBpbnN0YWxsIHRoZSBmdWxmaWxsL3Jl
amVjdCBoYW5kbGVycyBpbnN0ZWFkIG9mIHJlc29sdmluZyBub3cuCisKKyAgICByZXNvbHZlRnVu
Y3Rpb24ocmVzdWx0KTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1Vz
ZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI2ODgxY2I3MjM5ZGY4Mjcw
NjhjZjhhYzhiNWYxODdjYWJjNjFkNjAuLmNjZGRjODFiODJhMzgxMzg5ODVhZjNiMDhlOTNhNDMy
YTlkNWU0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIK
ICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTYzLDcg
KzY0LDExIEBAIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJj
ZUNvZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdldDsKKworZW51bSBjbGFz
cyBSdW5Bc0FzeW5jRnVuY3Rpb24gOiBib29sOworCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsK
K3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIAogZW51bSBSZWFzb25Gb3JDYWxsaW5n
Q2FuRXhlY3V0ZVNjcmlwdHMgewogICAgIEFib3V0VG9DcmVhdGVFdmVudExpc3RlbmVyLApAQCAt
OTEsMTEgKzk2LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhW
ZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rp
b24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+OworCiAgICAgV0VCQ09S
RV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIEpT
Qzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBw
ZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBm
YWxzZSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBSZXNv
bHZlRnVuY3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7CiAKICAgICBib29sIHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVu
dCYpIGNvbnN0OwogCkBAIC0xMDYsMTAgKzExNSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4g
aXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0
aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBE
T01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxv
YWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5n
JiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29y
bGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwog
ICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNzEsNiArMTc2
LDExIEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5n
SmF2YXNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZF
eGVjdXRpbmdKYXZhc2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CisgICAgVmFsdWVPckV4Y2VwdGlv
biBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0
ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
Jik7CisgICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gY2FsbElu
V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAg
CiAgICAgdm9pZCBzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0
JiwgSlNDOjpKU0ludGVybmFsUHJvbWlzZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9p
ZCBkaXNjb25uZWN0UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIuY3BwCmluZGV4IDVlMDY5ZDc5MTA3MmJmNTdkZGQ3M2M0M2U0ZTFlYTkxNjczMWY1ZmEu
LjA4NzVhNWVjZmZhOWM2N2U2MGMxYWY2NmM5MGM3MDk1ZmU3YmQxMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIuY3BwCkBAIC0xOTY5LDcgKzE5NjksNyBAQCB5eXJlZHVjZToKICNsaW5l
IDQwMiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCiAgICAgewogICAgICAgICAoeXl2c3Bb
KDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAoeXl2YWwu
ZXhwcmVzc2lvbikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNw
WygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigo
eXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CisgICAgICAgICh5eXZhbC5leHByZXNz
aW9uKSA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNw
WygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigo
eXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CiAgICAgO30KICAgICBicmVhazsKIApA
QCAtMTk3OCw3ICsxOTc4LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2c3BbKDMp
IC0gKDMpXS5sb2NhdGlvblBhdGgpLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4o
KHl5dnNwWygyKSAtICgzKV0uc3RlcCkpKTsKICAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9j
YXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0g
bmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4
cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgz
KV0ubG9jYXRpb25QYXRoKSkpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgWFBh
dGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4
cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgz
KV0ubG9jYXRpb25QYXRoKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueQppbmRleCA0ZWIyMGI5MmE1NjQ4OWUwZmZiNjA1OWUxMWFmYTkyNmNiYTNiOTQ2
Li5iNzUxYTYxYmEzZjQyMjI0MGU3YzBiZTBlNGY1ZDYxM2UyZjdhNTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55CkBAIC00MDEsMTQgKzQwMSwxNCBAQCBQYXRoRXhwcjoKICAgICBGaWx0
ZXJFeHByICcvJyBSZWxhdGl2ZUxvY2F0aW9uUGF0aAogICAgIHsKICAgICAgICAgJDMtPnNldEFi
c29sdXRlKCk7Ci0gICAgICAgICQkID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKKyAgICAgICAgJCQg
PSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwgc3RkOjp1
bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKICAgICB9CiAgICAgfAogICAgIEZpbHRlckV4
cHIgRGVzY2VuZGFudE9yU2VsZiBSZWxhdGl2ZUxvY2F0aW9uUGF0aAogICAgIHsKICAgICAgICAg
JDMtPnByZXBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPigkMikpOwogICAgICAgICAkMy0+
c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgJCQgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOworICAgICAg
ICAkJCA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oJDEpLCBz
dGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOwogICAgIH0KICAgICA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCA1NGMzNGU4ODg0YzI0Y2NiODI0ZTZkMmJjZmQzNjAyNzc2ODUyNzBlLi4xZjQzZTYzYzYx
MTJlMGY2NDc2OWE0MTgzMDZjOGI0NmJiMjBkZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09CSkNfXykK
ICAgICBzdGF0aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiB3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQpOwogI2VuZGlmCiAKICAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNj
cmlwdFZhbHVlLT5kYXRhKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCmluZGV4IDBjMTVmOGI5M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2ZmFkYmYuLmRkNzk2
YjgzMzIzNTllMWMzYjFlNTU3NWZkN2EwMzM1M2NiMWZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSog
Y2xpZW50KQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5K
YXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBb
Y29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1
cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAo
ZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpj
cmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWVDb2NvYS5tbQppbmRleCBhMjY3M2UyNWMxMTM0MDcxOTEyYzIwMjhmZDdkZjIy
OTY1NGFhMzhlLi42NmU4YjI3YTA5YWY4M2U1ZmJmNzEzMWQwZjFlZDdhMThhYjQ3NWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAK
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJ
bmxpbmVzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CkBAIC01OSwxMSAr
NjEsMTYgQEAgcHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1lcjxTaGFyZWRKU0NvbnRleHQ+IG1f
dGltZXI7CiB9OwogCitzdGF0aWMgU2hhcmVkSlNDb250ZXh0JiBzaGFyZWRDb250ZXh0KCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBzaGFyZWRDb250ZXh0
OworICAgIHJldHVybiBzaGFyZWRDb250ZXh0LmdldCgpOworfQorCiBpZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlND
b250ZXh0PiBzaGFyZWRDb250ZXh0OwotICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENv
bnRleHQuZ2V0KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNo
YXJlZENvbnRleHQoKS5lbnN1cmVDb250ZXh0KCk7CiAKICAgICBKU1ZhbHVlUmVmIHZhbHVlUmVm
ID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKFtjb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIGV4Y2VwdGlvbik7CiAgICAgaWYgKCF2YWx1ZVJlZikKQEAgLTczLDQgKzgwLDIw
IEBAIGlkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0Owog
fQogCitPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2ly
ZUJ5dGVzRnJvbU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1cmVD
b250ZXh0KCk7CisgICAgSlNWYWx1ZSAqdmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
b2JqZWN0IGluQ29udGV4dDpjb250ZXh0XTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8gY29yZVZhbHVl
ID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwg
dG9KUyhnbG9iYWxPYmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworICAgIHJldHVybiBjb3Jl
VmFsdWUtPnRvV2lyZUJ5dGVzKCk7Cit9CisKIH0gLy8gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ZTdiYzBjZjc2OGUxMzRlYjBm
M2M5ODY2ZmMyODljZjUzNDFjOWJkLi4zODlmNGZjMzljMzU2NDlhYmU5OTQwNGU4ZWU1ODQ3N2Vm
YzJjYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTgyMiwxNCArODIyLDg2IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vy
cm9yQ29kZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiAKIC0gKHZvaWQpZXZh
bHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1
cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBf
ZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdp
dGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNv
bXBsZXRpb25IYW5kbGVyXTsKIH0KIAotLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0
cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJH
ZXN0dXJlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgorc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKK3sK
KyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW2Fy
Z3VtZW50IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2lu
ZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051
bGwgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoW2FyZ3VtZW50IGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIEJPT0wgdmFs
aWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9j
azpeKGlkIG9iamVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYg
KCF2YWxpZGF0ZUFyZ3VtZW50KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAg
ICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2Nr
IGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQoa2V5KSB8fCAhdmFsaWRhdGVBcmd1bWVudCh2
YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKworICAgICAgICByZXR1
cm4gdmFsaWQ7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCistICh2b2lkKV9ldmFs
dWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rp
b246KEJPT0wpYXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFy
Z3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0g
ICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5nLCBmb3Jj
ZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0
YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOwor
ICAgIGlmIChhc0FzeW5jRnVuY3Rpb24pCisgICAgICAgIGFyZ3VtZW50c01hcCA9IFdlYkNvcmU6
OkFyZ3VtZW50V2lyZUJ5dGVzTWFwIHsgfTsKKyAgICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0g
bmlsOworCisgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CisgICAgICAgIGlmICghW2tl
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBlcnJvck1l
c3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IG5hbWVzIG11c3QgYmUgc3RyaW5ncyI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZCB2YWx1ZSA9IFthcmd1
bWVudHMgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2
YWx1ZSkpIHsKKyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQg
dmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25s
eSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU1N0cmluZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJh
eSwgYW5kIE5TRGljdGlvbmFyeSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IAorICAgICAgICBhdXRvIHdpcmVCeXRlcyA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3
aXJlQnl0ZXNGcm9tTlNPYmplY3QodmFsdWUpOworICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIGlucHV0IGRpY3Rpb25hcnkgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRv
IHNlcmlhbGl6ZSBpdCBpbnRvIHdpcmUgYnl0ZXMuCisgICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMp
OworICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksICp3aXJlQnl0ZXMpOworICAgIH0KKwor
ICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdKTsKKworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9u
Rm9yRXJyb3JDb2RlKFdLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQpIGZvcktleTpO
U0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpl
cnJvck1lc3NhZ2UgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXld
OworCisgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2Nj
dXJyZWQgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7CisgICAgICAgICAg
ICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQo
KTsKKyAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CisgICAgICAgIH0p
OworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0cmluZywgKGJvb2wpYXNBc3luY0Z1bmN0aW9uLCBXVEZN
b3ZlKGFyZ3VtZW50c01hcCksIChib29sKWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVD
YWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMTkyMyw2ICsxOTk1LDExIEBAIC0gKHZvaWQpX3Rha2VQREZT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBz
aG90Q29uCiAgICAgW3NlbGYgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJh
dGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKKy0gKHZvaWQp
X2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2
YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0
aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRs
ZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiAtIChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0
YQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lv
biBzdGF0ZSBlbmNvZGVyLgpAQCAtMjA2NSw3ICsyMTQyLDcgQEAgLSAodm9pZClfaXNKSVRFbmFi
bGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRl
SmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBm
b3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsK
KyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1
bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlv
bkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV91cGRhdGVXZWJzaXRl
UG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5k
ZXggYzMxMmM4MTg4YzBmYzA4YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2OC4uZTEzNzkwY2JkY2Nj
YTk1YTIwMTJlNTQzMWI0OTZlMzVkNWJjNjc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTUsNiArMzE1LDkg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lk
KV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRF
bGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAtICh2b2lkKV90
YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24g
KilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0
YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAo
dm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRo
QXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisKIEBlbmQKIAog
I2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMmE0Mzk4ODAxZmFhYTlmYzA4ZDY0MTUwYjMx
OGQ2ZmYwYzM4NjM5ZS4uNjQ2ZTQ1YWRjMjgxODI4N2Y0N2QwMDM0MDU2NzgyMmMyMTBhMTZlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTM2MzYsNyArMzYzNiw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZh
c2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQsCiAgICAg
Z19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFk
b3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRh
dGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJp
bmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Cisg
ICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBTdHJpbmc6OmZy
b21VVEY4KHNjcmlwdCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxz
OwogICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAq
ZGV0YWlsczsKQEAgLTM3MzcsNyArMzczNyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAg
ICAgZ19yZXR1cm5faWZfZmFpbCh3b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFz
ayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywg
dXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9t
VVRGOCh3b3JsZE5hbWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFp
bHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uo
d2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoeyBTdHJpbmc6OmZy
b21VVEY4KHNjcmlwdCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgU3RyaW5nOjpmcm9t
VVRGOCh3b3JsZE5hbWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFp
bHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNl
cHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAg
ICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwpAQCAtMzc3OSw3ICszNzc5LDcg
QEAgc3RhdGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKEdPYmplY3QqIG9iamVj
dCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGcKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKTsK
ICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0cmVhbV9n
ZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwotICAgIGdldFBhZ2Uod2Vi
VmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwgdHJ1ZSwKKyAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0cmluZzo6ZnJvbVVURjgo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwgZmFsc2Us
IFdURjo6bnVsbG9wdCwgdHJ1ZX0sCiAgICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxz
PiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgICAgIEV4
Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgICAgIGlmIChkZXRhaWxz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNGE0Y2NjMjUz
NGUxMGYzZDMyY2ZkODU5MGE2YmIzZGZkYTc3OTY0Zi4uODM4YjRkYTg1MDM5YzZjMmFkZWUyM2E2
ZmZhMmMxODM3M2NmM2JmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zODQ5LDEyICszODQ5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0
aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0sIFByb2Nl
c3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RG
OjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNj
cmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
Ly8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBh
IFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4NjUsNyArMzg2NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3Js
ZE5hbWUsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChwYXJhbWV0ZXJzLCB3b3JsZE5hbWUsIGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
YWNiNzBmNTY3ZDM5OWZlYjZjZmZhZDQwY2FiNzkxZDk0MmQzZGU1ZS4uNzdmYzA0NTg3Y2Q5OWMz
NGRmZDVkZjY2YjEyN2MyYWFmZDRjNjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJRC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0Q2hlY2tpbmcuaD4KQEAgLTEwNjIsOCArMTA2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJh
bWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94
eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
LSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29y
ZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVm
UHRyPFZvaWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmlu
ZGV4IDdiYzE4ZmZiZjZhZWMzNDQxMjg4ZmEzNjI2ZWExMmI3ODFiNmM1YjQuLmJlMjBmMWQyOTgx
NjViZmU1OTY5ZGNkNTQ3MWZhMzhlZGE0YWFiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXI6Omluc3BlY3QoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCwgQ29ubmVjdGkKIAog
dm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJp
bmcmIHNjcmlwdCkKIHsKLSAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlw
dCwgZmFsc2UsCisgICAgbV9wYWdlLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHNjcmlwdCwg
ZmFsc2UsIFdURjo6bnVsbG9wdCwgZmFsc2UgfSwgCiAgICAgICAgIFtdKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0
aW9uRGV0YWlscywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbkRldGFpbHMpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRpb24gcnVubmlu
ZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+bWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MThiZDY4ZDEzN2U5NjY2MTNjYjYxNTNjMjUzNjc0M2M0ODJhNzFmMS4uMTNkNDNlZDAwOTUwNWVh
MDFiNWJmMTlhMDIzNzdlZWQyZTIwNzJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNCw2ICsyMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25u
ZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CkBAIC0zMzUy
LDQ1ICszMzUzLDQ5IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8
IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBz
Y3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBw
ZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29t
bW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29y
bGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFt
ZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwot
ICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAg
cmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2Ny
aXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7
CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9
LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2Ug
aXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHRoaXMsIHdvcmxkID0gbWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VS
ZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwog
ICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQo
d29ybGQpLAorICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkLnB0cigpKSwK
ICAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2Jh
bE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwog
ICAgICAgICB9Ci0gICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAg
ICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsK
KworICAgICAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOworICAgICAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMs
IGNhbGxiYWNrSUQpKTsKKyAgICB9OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQp
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZy
YW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxk
KHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZl
RnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1h
aW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJh
Y2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNj
cmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIGNhbGxi
YWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpu
dWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzhl
YTAyZWY1ZjJiMDNkM2MwZjljOWFmNzFjMzkwOWJlNDExYWU4Ny4uYjA3Y2YxN2YxYjIyYzcxMTlm
NWNiZGRkMWJhZThjMjljZjlkOWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyOwogc3RydWN0IEhpZ2hsaWdodDsKIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1
Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
czsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7
CiAKQEAgLTE0MzUsOCArMTQzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQp
OwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3Ry
aW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50
KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMs
IENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYmFhZDc2ZTUwOTM3ZDY2MWFiOTUwNjQ1MWZhNjc0
NGI0NmFkNzljMS4uOWJmMjFlYzM1MWMyYmJiNTQzZjgwMWZiODU0YWYwYThkMTE4MTk5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0yMDQsNyArMjA0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBH
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5n
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFt
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBhMDhlMTNhNGFlZmIwYTVjN2FjYjRjZDhkNzA5MDRlOGE3Yjdl
YWEzLi42OTk4Mzk2YzU5ZGU3N2JhZGRmN2EyMWJhZTA2OGIwMTg3YmVmOGUxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTktMTItMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBXS1dlYlZpZXcgU1BJIHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW5w
dXRNZXRob2QgQVBJIHVuaXQgdGVzdHMgZG9uJ3Qgd29yayB1bmRlciBYMTEKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZTBlODAwOTQ3MjdlNGUxZjI2YTBiNjFiMzQwYjkzYzcwNTI3N2YwYy4u
ZmVkZmNmMjM1ZmRmOWMyMGU5ZGM2ZmU4MGE5NTViYTllMDdiNWUzMyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTI5MCw2ICsyOTAsNyBAQAogCQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEg
LyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUYyM0RFMUVGMUEzNzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0Rl
bGVnYXRlLm1tICovOyB9OwogCQk1MUIxRUU5NjFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERC
UGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJz
aXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUxQjFFRTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRl
eGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWRE
QlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKKwkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8q
IEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsg
fTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0x
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0
bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVBy
b2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sICovOyB9OwogCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlF
NjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLzsgfTsKQEAgLTE4NDEsNiArMTg0
Miw3IEBACiAJCTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5j
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBl
cnNpc3RlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBG
QUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk1MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQ
ZXJzaXN0ZW5jZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERC
UGVyc2lzdGVuY2UtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBE
OUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUI0NTRFQjFCNEUyMzZCMDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5z
aWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nl
c3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3
IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICov
LAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2
M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJ
CQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4
MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAq
LywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0g
Ki8sCkBAIC00NTM2LDYgKzQ1MzksNyBAQAogCQkJCUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAv
KiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1
MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDEx
RjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFB
NDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNG
dW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNG
dW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTAxNzhjNzlmMTZiZDU3OTg2Njc1NzM3MmY5NWM3YTUy
ODRkZDdmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1Qo
QXN5bmNGdW5jdGlvbiwgQmFzaWMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEZ1bmN0aW9uIHdpdGggbm8gcmV0
dXJuIHZhbHVlLgorICAgIC8vIFJldHVybnMgSmF2YVNjcmlwdCB1bmRlZmluZWQgd2hpY2ggdHJh
bnNsYXRlcyB0byBuaWwuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAIjEiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9FUShyZXN1bHQsIG5pbCk7CisKKyAgICAv
LyBGdW5jdGlvbiByZXR1cm5zIGV4cGxpY2l0IG51bGwuCisgICAgLy8gUmV0dXJucyBKYXZhU2Ny
aXB0IG51bGwgd2hpY2ggdHJhbnNsYXRlcyB0byBOU051bGwuCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBudWxsIiB3aXRoQXJndW1l
bnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFzc11dKTsKKworICAgIC8v
IEZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEg
c3RyaW5nLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gJzEnIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3Ry
aW5nOkAiMSJdKTsKKworICAgIC8vIFRha2VzIG11bHRpcGxlIGFyZ3VtZW50cy4KKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBi
IiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAsIEAiYiIgOiBAMiB9IGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0Vx
dWFsVG9OdW1iZXI6QDQyXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBsZSBhcmd1bWVudHMgb2Yg
ZGlmZmVyZW50IHR5cGVzLCBmb2xsb3dzIGphdmFzY3JpcHRzICJ0eXBlIGFwcGVuZGluZyIgcnVs
ZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBmb28gKyBiYXIiIHdpdGhBcmd1bWVudHM6QHsgQCJmb28iIDogQCJmb28iLCBAImJh
ciIgOiBANDIgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiZm9vNDIiXSk7CisKKyAgICAv
LyBJbnZhbGlkIEphdmFTY3JpcHQsIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCisgICAgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVuciBudWxsIiB3
aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9
PSBuaWwpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlv
biwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gQXJndW1lbnQga2V5cyBtdXN0IGJl
IHN0cmluZ3MuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNG
dW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAxIDogQDEgfSBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09
IG5pbCk7CisKKyAgICAvLyBWYWx1ZXMgY2FuIG9ubHkgYmUgTlNTdHJpbmcsIE5TTnVtYmVyLCBO
U0RhdGUsIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gdGhvc2Ug
NSB0eXBlcy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IFtOU0RhdGEgZGF0YV0gfSBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNF
KGVycm9yID09IG5pbCk7CisKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEBbIEAxLCBb
TlNEYXRhIGRhdGFdIF0gfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICAvLyBSZWZlcmVuY2VzIGFu
IGFyZ3VtZW50IHRoYXQgd2FzIG5vdCBwcm92aWRlZC4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBv
YmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRz
OkB7IEAiYSIgOiBANDAgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlv
biwgUm91bmRUcmlwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Cisg
ICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBUZXN0cyByb3VuZCB0cmlwcGluZyBhIHdob2xl
IGJ1bmNoIG9mIGFyZ3VtZW50IGlucHV0cyBhbmQgdmVyaWZ5aW5nIHRoZSByZXN1bHQuCisKKyAg
ICBpZCB2YWx1ZSA9IEA0MjsKKyAgICBpZCBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsK
KyAgICBpZCByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAi
cmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0p
OworCisgICAgdmFsdWUgPSBAIkZvbyI7CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVl
IH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRd
KTsKKworICAgIHZhbHVlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJl
bmNlRGF0ZTowXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdp
dGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFs
dWUgPSBAWyBAMSwgQDIgXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAg
ICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJu
IGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisg
ICAgdmFsdWUgPSBAWyBAImZvbyIsIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJl
ZmVyZW5jZURhdGU6MF0gXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAg
ICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJu
IGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisg
ICAgdmFsdWUgPSBAeyBAImEiIDogQDEsIEAiYiIgOiBAMiB9OworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAImZvbyIsIEAiYiIgOiBb
TlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIH07CisgICAg
YXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3Vt
ZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEB7
IEAiYSIgOiBAMSB9IH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBh
IiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKK30KKwor
fQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDJhZDE1
ZWYyMDk0ZGVmNDI3MjlmNjAxNzA0Y2Y4NTE2NzE1NGMyNWUuLjNjYzQzNGE1ZDI1ZTBlOGQzZDc3
ZjhiOTVhZmEyZGM2OTRjMmYxN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5oCkBAIC02Myw2ICs2Myw3IEBACiAtIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQ7CiAtIChpZClv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlkKW9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVu
dHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsK
IC0gKHVuc2lnbmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xp
ZW50V2lkdGg7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQppbmRleCBhYWZmMjVjZDcxNmVjYWU2Y2U2MmI1ODE3MmMzOTI5MzUwOTIyNmVhLi43NGFk
NTgxMjUwMTZjMDMxZjhjNWU0ZWRiYjk0OGUxODA1ZWI1NTBlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0xNzgsNiArMTc4LDI3IEBAIC0gKGlkKW9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2Ny
aXB0CiAgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAoaWQpb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50
czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0Cit7
CisgICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgaWYgKGVycm9y
T3V0KQorICAgICAgICAqZXJyb3JPdXQgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IGV2YWxS
ZXN1bHQ7CisgICAgW3NlbGYgX2NhbGxBc3luY0Z1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKGVycm9yT3V0
KQorICAgICAgICAgICAgKmVycm9yT3V0ID0gW2Vycm9yIHJldGFpbl07CisgICAgICAgIGlzV2Fp
dGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CisKKyAgICBpZiAoZXJyb3JPdXQpCisg
ICAgICAgIFsqZXJyb3JPdXQgYXV0b3JlbGVhc2VdOworCisgICAgcmV0dXJuIGV2YWxSZXN1bHQu
YXV0b3JlbGVhc2UoKTsKK30KKwogLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAogewogICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3Jp
cHRdXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386432</attachid>
            <date>2019-12-26 21:52:33 -0800</date>
            <delta_ts>2019-12-26 22:00:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191226215232.patch</filename>
            <type>text/plain</type>
            <size>54086</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uMjQzOWEyODk4YjA1YzJhYWRhNTBhMjlhMjdlZWFj
YjVjYTAzMzY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTI0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBTcGVjaWFsIGNvbWJpbmF0aW9uIGNoYXJhY3RlcnMgZG9lc24ndCByZXNwZWN0IHRoZSBrZXlz
dHJva2Ugb3JkZXIgd2hlbiBoaWdoIENQVSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc3YzQ2ZDdmNGY5ZDhj
NTgyNzkzZTg2ZDlhMDBjNzQ4NTUwYWQ4MDAuLjUxYjVkZWQ0MWYyNjNiMWVmNjgxZDc0OWMzMjU5
NDU1MTFjN2E1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTItMjQgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJ
IHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbToKKyAgICAgICAg
KEFQSTo6c2hhcmVkQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVu
dHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaE9TIGJ1
aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4YzdlNWM1OTQ3ZjBiNWM5NDM2
NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5ZjRmMWQ0Yzg4M2FiY2M1
MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvSlNWYWx1ZUluV3Jh
cHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCiAgICAgYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisgICAgYmluZGluZ3MvanMv
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2NlYjQ1ODc4Y2FjZjE5ZmE2
NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFmN2FhM2VkMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRh
YmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8q
IFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJNTFCQTRBQzcxQkJDNUFE
NjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNE
NkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUEx
MEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUE0
MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZG
RCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4RjBBQUIwMDUxQzhBMyAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk0MThDMzk1RjFD
OEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovLAor
CQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
ICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29u
dHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJCQkJRTQ4NjNDRkUyMzg0
MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBMjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJB
REE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUJB
OTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MWViYjc0ZDE1MjM3MDdhZmU0NDE4
ZTYzMjc3MWI4MzZkODJlN2IwLi42NmQ4NjQxYzkyNTcwNGM4NDczZjQ5NDlmOTNlZjUyYzczNmJk
MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlBheW1lbnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5j
bHVkZSAiUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTYgQEAgSlNDOjpKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25z
dCBTdHJpbmcmIHNjcmkKIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUpOworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2Ny
aXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAgIHJldHVy
biByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAKLVZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSkKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
Zm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRTb3VyY2VD
b2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRl
eHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2Fj
aGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7
CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0ZXJzLmZv
cmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxv
cHQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IEpTVmFs
dWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAoIWNhbkV4ZWN1
dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3Js
ZCk7CisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikgeworICAgIGNh
c2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNv
dXJjZUNvZGUocGFyYW1ldGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgp
KSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFt
LCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0
KCkpKTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7
CisgICAgfQorICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAgICAgIHJldHVy
biBjYWxsSW5Xb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1ZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIEFT
U0VSVChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5jRnVuY3Rpb246
Olllcyk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuYXJndW1lbnRzKTsKKworICAgIGF1dG8mIHBy
b3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKnBy
b3h5LndpbmRvdygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtlZEFyZ3VtZW50czsK
KyAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5nQnVpbGRlcjsKKyAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOworCisgICAgLy8gQnVpbGQgdXAgYSBuZXcgc2NyaXB0IHN0cmluZyB0aGF0IGlz
IGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzLCBhbmQgZGVzZXJpYWxpemUgdGhvc2Ug
YXJndW1lbnRzLgorICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIihmdW5jdGlvbigi
KTsKKyAgICBmb3IgKGF1dG8gYXJndW1lbnQgPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+YmVnaW4o
KTsgYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpOykgeworICAgICAgICBm
dW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3VtZW50LT5rZXkpOworICAgICAgICBhdXRv
IHNlcmlhbGl6ZWRBcmd1bWVudCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdp
cmVCeXRlcyhXVEZNb3ZlKGFyZ3VtZW50LT52YWx1ZSkpOworCisgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAgYXV0byBq
c0FyZ3VtZW50ID0gc2VyaWFsaXplZEFyZ3VtZW50LT5kZXNlcmlhbGl6ZShnbG9iYWxPYmplY3Qs
ICZnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGFy
Z3VtZW50IHRvIGV4ZWN1dGUgYXN5bmNocm9ub3VzIEphdmFTY3JpcHQgZnVuY3Rpb24iOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtYXJrZWRBcmd1bWVudHMuYXBw
ZW5kKGpzQXJndW1lbnQpOworCisgICAgICAgICsrYXJndW1lbnQ7CisgICAgICAgIGlmIChhcmd1
bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5kKCkpCisgICAgICAgICAgICBmdW5jdGlv
blN0cmluZ0J1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgfQorCisgICAgaWYgKCFlcnJvck1lc3Nh
Z2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0
YWlscyB7IGVycm9yTWVzc2FnZSB9KTsKKworICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBl
bmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIpOworCisgICAgYXV0byBzb3VyY2VDb2Rl
ID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci50b1N0cmluZygpLCBV
UkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRl
KG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSB9OworICAgIGNvbnN0IGF1dG8mIGpzU291
cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CisKKyAgICBTdHJpbmcgc291cmNl
VVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0cmluZyog
c2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKKyAgICBtX3NvdXJjZVVSTCA9ICZzb3VyY2VV
Ukw7CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwg
c291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVtbigpKTsKKworICAg
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgIE9wdGlv
bmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKKyAgICBKU1ZhbHVlIHJldHVy
blZhbHVlOworICAgIGRvIHsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCA9IEpTRXhl
Y1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVh
c29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNlcHRpb24pOwor
CisgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3QuaXNGdW5jdGlv
bih3b3JsZC52bSgpKSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0geyB7ICJVbmFi
bGUgdG8gY3JlYXRlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCJfcyB9IH07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCisgICAgICAgIC8vIEdldHRp
bmcgQ2FsbERhdGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwgaW50byBK
Uy4KKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhKTsKKyAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAgICBvcHRp
b25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQgYXN5bmMgZnVu
Y3Rpb24gdG8gYmUgY2FsbGVkIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKCZnbG9i
YWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25PYmplY3QsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRpb25FeGNl
cHRpb24pOworICAgIH0gd2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbiAmJiAhb3B0aW9uYWxEZXRhaWxzKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMg
ZGV0YWlsczsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRp
b25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKKyAgICAg
ICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKKyAgICB9CisKKyAgICBtX3Nv
dXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOworCisgICAgaWYgKG9wdGlvbmFsRGV0YWlscykKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKQEAg
LTU4NywxMyArNjg0LDI3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
VXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiAgICAgcmV0dXJuIHJl
c3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZhbHVlT3JFeGNl
cHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRl
cm5hbCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1
cmUgfSk7Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQg
PSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3Jp
cHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRl
dGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBkb2N1bWVu
dCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdl
bnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zIH0pOwog
CiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAgIHJl
dHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJl
KTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUocGFyYW1l
dGVycykpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNV
c2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0
aW9uKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
bnRlcm5hbCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisKKyAgICAvLyBGSVhNRTogSWYg
dGhlIHJlc3VsdCBpcyBhIHRoZW5hYmxlLCBpbnN0YWxsIHRoZSBmdWxmaWxsL3JlamVjdCBoYW5k
bGVycyBpbnN0ZWFkIG9mIHJlc29sdmluZyBub3cuCisKKyAgICByZXNvbHZlRnVuY3Rpb24ocmVz
dWx0KTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNj
cmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI2ODgxY2I3MjM5ZGY4MjcwNjhjZjhhYzhi
NWYxODdjYWJjNjFkNjAuLmNjZGRjODFiODJhMzgxMzg5ODVhZjNiMDhlOTNhNDMyYTlkNWU0NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTYzLDcgKzY0LDExIEBA
IGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdldDsKKworZW51bSBjbGFzcyBSdW5Bc0Fz
eW5jRnVuY3Rpb24gOiBib29sOworCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKK3N0cnVjdCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIAogZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0
ZVNjcmlwdHMgewogICAgIEFib3V0VG9DcmVhdGVFdmVudExpc3RlbmVyLApAQCAtOTEsMTEgKzk2
LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVm
PERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+OworCiAgICAgV0VCQ09SRV9FWFBPUlQg
SlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0g
ICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQm
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JF
eGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBSZXNvbHZlRnVuY3Rp
b24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICBib29sIHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0
OwogCkBAIC0xMDYsMTAgKzExNSw2IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhj
ZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20g
YW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVy
V29ybGQmKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVT
Y3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAg
ICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJp
bmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQg
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNzEsNiArMTc2LDExIEBAIHB1
YmxpYzoKICAgICBib29sIHdpbGxSZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNjcmlw
dFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFJlcGxhY2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdK
YXZhc2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CisgICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRl
VXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7CisgICAg
VmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IERPTVdyYXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gY2FsbEluV29ybGQoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgCiAgICAgdm9p
ZCBzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgSlNDOjpK
U0ludGVybmFsUHJvbWlzZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9pZCBkaXNjb25u
ZWN0UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3Bw
CmluZGV4IDVlMDY5ZDc5MTA3MmJmNTdkZGQ3M2M0M2U0ZTFlYTkxNjczMWY1ZmEuLjA4NzVhNWVj
ZmZhOWM2N2U2MGMxYWY2NmM5MGM3MDk1ZmU3YmQxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIuY3BwCkBAIC0xOTY5LDcgKzE5NjksNyBAQCB5eXJlZHVjZToKICNsaW5lIDQwMiAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCiAgICAgewogICAgICAgICAoeXl2c3BbKDMpIC0gKDMp
XS5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAoeXl2YWwuZXhwcmVzc2lv
bikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgz
KV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigoeXl2c3BbKDMp
IC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5l
dyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgz
KV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigoeXl2c3BbKDMp
IC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMTk3OCw3
ICsxOTc4LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2c3BbKDMpIC0gKDMpXS5s
b2NhdGlvblBhdGgpLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygy
KSAtICgzKV0uc3RlcCkpKTsKICAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRo
KS0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgo
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24p
KSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRp
b25QYXRoKSkpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgWFBhdGg6OlBhdGgo
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24p
KSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRp
b25QYXRoKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eQppbmRleCA0ZWIyMGI5MmE1NjQ4OWUwZmZiNjA1OWUxMWFmYTkyNmNiYTNiOTQ2Li5iNzUxYTYx
YmEzZjQyMjI0MGU3YzBiZTBlNGY1ZDYxM2UyZjdhNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55CkBAIC00MDEsMTQgKzQwMSwxNCBAQCBQYXRoRXhwcjoKICAgICBGaWx0ZXJFeHByICcv
JyBSZWxhdGl2ZUxvY2F0aW9uUGF0aAogICAgIHsKICAgICAgICAgJDMtPnNldEFic29sdXRlKCk7
Ci0gICAgICAgICQkID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwg
c3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKKyAgICAgICAgJCQgPSBuZXcgWFBh
dGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRy
PExvY2F0aW9uUGF0aD4oJDMpKTsKICAgICB9CiAgICAgfAogICAgIEZpbHRlckV4cHIgRGVzY2Vu
ZGFudE9yU2VsZiBSZWxhdGl2ZUxvY2F0aW9uUGF0aAogICAgIHsKICAgICAgICAgJDMtPnByZXBl
bmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPigkMikpOwogICAgICAgICAkMy0+c2V0QWJzb2x1
dGUoKTsKLSAgICAgICAgJCQgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4o
JDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOworICAgICAgICAkJCA9IG5l
dyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1
ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOwogICAgIH0KICAgICA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA1NGMz
NGU4ODg0YzI0Y2NiODI0ZTZkMmJjZmQzNjAyNzc2ODUyNzBlLi4xZjQzZTYzYzYxMTJlMGY2NDc2
OWE0MTgzMDZjOGI0NmJiMjBkZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09CSkNfXykKICAgICBzdGF0
aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3
aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQpOwogI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
LT5kYXRhKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IDBjMTVmOGI5M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2ZmFkYmYuLmRkNzk2YjgzMzIzNTll
MWMzYjFlNTU3NWZkN2EwMzM1M2NiMWZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3Rh
dGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQog
CiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0
RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwg
Y2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1w
bChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29u
dGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0g
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5w
dHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWVDb2NvYS5tbQppbmRleCBhMjY3M2UyNWMxMTM0MDcxOTEyYzIwMjhmZDdkZjIyOTY1NGFhMzhl
Li42NmU4YjI3YTA5YWY4M2U1ZmJmNzEzMWQwZjFlZDdhMThhYjQ3NWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKKyNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29u
dGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CkBAIC01OSwxMSArNjEsMTYgQEAg
cHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1lcjxTaGFyZWRKU0NvbnRleHQ+IG1fdGltZXI7CiB9
OwogCitzdGF0aWMgU2hhcmVkSlNDb250ZXh0JiBzaGFyZWRDb250ZXh0KCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBzaGFyZWRDb250ZXh0OworICAgIHJl
dHVybiBzaGFyZWRDb250ZXh0LmdldCgpOworfQorCiBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBz
aGFyZWRDb250ZXh0OwotICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQuZ2V0
KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRl
eHQoKS5lbnN1cmVDb250ZXh0KCk7CiAKICAgICBKU1ZhbHVlUmVmIHZhbHVlUmVmID0gc2VyaWFs
aXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IGV4Y2VwdGlvbik7CiAgICAgaWYgKCF2YWx1ZVJlZikKQEAgLTczLDQgKzgwLDIwIEBAIGlkIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCitPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJv
bU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1cmVDb250ZXh0KCk7
CisgICAgSlNWYWx1ZSAqdmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0IGlu
Q29udGV4dDpjb250ZXh0XTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8gY29yZVZhbHVlID0gV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9i
YWxPYmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworICAgIHJldHVybiBjb3JlVmFsdWUtPnRv
V2lyZUJ5dGVzKCk7Cit9CisKIH0gLy8gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ZTdiYzBjZjc2OGUxMzRlYjBmM2M5ODY2ZmMy
ODljZjUzNDFjOWJkLi4zODlmNGZjMzljMzU2NDlhYmU5OTQwNGU4ZWU1ODQ3N2VmYzJjYTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTgyMiwxNCArODIyLDg2IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9yQ29kZShX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZh
U2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2
YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVK
YXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVu
dHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKIH0KIAotLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgorc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKK3sKKyAgICBpZiAo
W2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6
W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVl
OworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIG9i
amVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0
ZUFyZ3VtZW50KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKwor
ICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRP
ZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2NrIGJvb2wgdmFs
aWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1Vz
aW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlQXJndW1lbnQoa2V5KSB8fCAhdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsK
KyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICpzdG9wID0g
WUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBm
b3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBo
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0gICAgX3BhZ2Ut
PnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5nLCBmb3JjZVVzZXJHZXN0
dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2Vi
S2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOworICAgIGlmIChh
c0FzeW5jRnVuY3Rpb24pCisgICAgICAgIGFyZ3VtZW50c01hcCA9IFdlYkNvcmU6OkFyZ3VtZW50
V2lyZUJ5dGVzTWFwIHsgfTsKKyAgICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gbmlsOworCisg
ICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBA
IkZ1bmN0aW9uIGFyZ3VtZW50IG5hbWVzIG11c3QgYmUgc3RyaW5ncyI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZCB2YWx1ZSA9IFthcmd1bWVudHMgb2Jq
ZWN0Rm9yS2V5OmtleV07CisgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsK
KyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11
c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9s
bG93aW5nIHR5cGVzOiBOU1N0cmluZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5T
RGljdGlvbmFyeSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAg
ICBhdXRvIHdpcmVCeXRlcyA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNG
cm9tTlNPYmplY3QodmFsdWUpOworICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhl
IGlucHV0IGRpY3Rpb25hcnkgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRvIHNlcmlhbGl6
ZSBpdCBpbnRvIHdpcmUgYnl0ZXMuCisgICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMpOworICAgICAg
ICBhcmd1bWVudHNNYXAtPnNldChrZXksICp3aXJlQnl0ZXMpOworICAgIH0KKworICAgIGlmIChl
cnJvck1lc3NhZ2UpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVz
ZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKwor
ICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9uRm9yRXJyb3JD
b2RlKFdLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQpIGZvcktleTpOU0xvY2FsaXpl
ZERlc2NyaXB0aW9uS2V5XTsKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvck1lc3Nh
Z2UgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXldOworCisgICAg
ICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQgdXNl
ckluZm86dXNlckluZm8uZ2V0KCldKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7CisgICAgICAgICAgICBhdXRvIHJh
d0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKKyAgICAg
ICAgICAgIHJhd0hhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHsgamF2YVNjcmlwdFN0cmluZywgKGJvb2wpYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3Vt
ZW50c01hcCksIChib29sKWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6
RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTkyMyw2ICsxOTk1LDExIEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdp
dGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAg
ICAgW3NlbGYgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKKy0gKHZvaWQpX2NhbGxBc3lu
Y0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNE
aWN0aW9uYXJ5ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50
czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxl
dGlvbkhhbmRsZXJdOworfQorCiAtIChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0YQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBl
bmNvZGVyLgpAQCAtMjA2NSw3ICsyMTQyLDcgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lk
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewot
ICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJH
ZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2Vs
ZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5P
IHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6
Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV91cGRhdGVXZWJzaXRlUG9saWNpZXM6
KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYzMxMmM4
MTg4YzBmYzA4YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2OC4uZTEzNzkwY2JkY2NjYTk1YTIwMTJl
NTQzMWI0OTZlMzVkNWJjNjc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTUsNiArMzE1LDkgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9mb2N1c1Rl
eHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hv
dENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25h
cHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAodm9pZClfY2Fs
bEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlk
LCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisKIEBlbmQKIAogI2lmIFRBUkdF
VF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKaW5kZXggMmE0Mzk4ODAxZmFhYTlmYzA4ZDY0MTUwYjMxOGQ2ZmYwYzM4
NjM5ZS4uNjQ2ZTQ1YWRjMjgxODI4N2Y0N2QwMDM0MDU2NzgyMmMyMTBhMTZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAg
LTM2MzYsNyArMzYzNiw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQsCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChzY3JpcHQpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihn
X3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAg
ICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6OmZyb21V
VEY4KHNjcmlwdCksIHRydWUsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFn
ZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHNj
cmlwdCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAg
ICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsK
QEAgLTM3MzcsNyArMzczNyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0
X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1
cm5faWZfZmFpbCh3b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0
R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEp
KTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3Js
ZE5hbWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldyku
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoeyBTdHJpbmc6OmZyb21VVEY4KHNj
cmlwdCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgU3RyaW5nOjpmcm9tVVRGOCh3b3Js
ZE5hbWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNlcHRpb25EZXRh
aWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAg
ZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwpAQCAtMzc3OSw3ICszNzc5LDcgQEAgc3RhdGlj
IHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5j
UmVzdWx0KiByZXN1bHQsIGcKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9p
bnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShH
X01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwgdHJ1ZSwKKyAgICBnZXRQYWdlKHdlYlZp
ZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwgZmFsc2UsIFdURjo6bnVs
bG9wdCwgdHJ1ZX0sCiAgICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkRl
dGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgICAgIGlmIChkZXRhaWxzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNGE0Y2NjMjUzNGUxMGYzZDMy
Y2ZkODU5MGE2YmIzZGZkYTc3OTY0Zi4uODM4YjRkYTg1MDM5YzZjMmFkZWUyM2E2ZmZhMmMxODM3
M2NmM2JmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0z
ODQ5LDEyICszODQ5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vz
c0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hS
ZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpGdW5jdGlv
bjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewotICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9y
Y2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
KyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMs
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgLy8gRm9yIGJh
Y2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcg
d2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaEluaXRpYWxQcm9j
ZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4NjUsNyArMzg2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNh
bGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZChwYXJhbWV0ZXJzLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWNiNzBmNTY3
ZDM5OWZlYjZjZmZhZDQwY2FiNzkxZDk0MmQzZGU1ZS4uNzdmYzA0NTg3Y2Q5OWMzNGRmZDVkZjY2
YjEyN2MyYWFmZDRjNjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJRC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tp
bmcuaD4KQEAgLTEwNjIsOCArMTA2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGlv
bkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSos
IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAg
IC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRD
YWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDdiYzE4
ZmZiZjZhZWMzNDQxMjg4ZmEzNjI2ZWExMmI3ODFiNmM1YjQuLmJlMjBmMWQyOTgxNjViZmU1OTY5
ZGNkNTQ3MWZhMzhlZGE0YWFiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6
Omluc3BlY3QoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCwgQ29ubmVjdGkKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCkKIHsKLSAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgZmFsc2Us
CisgICAgbV9wYWdlLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHNjcmlwdCwgZmFsc2UsIFdU
Rjo6bnVsbG9wdCwgZmFsc2UgfSwgCiAgICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWls
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFp
bHMpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQg
XCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMThiZDY4ZDEz
N2U5NjY2MTNjYjYxNTNjMjUzNjc0M2M0ODJhNzFmMS4uMTNkNDNlZDAwOTUwNWVhMDFiNWJmMTlh
MDIzNzdlZWQyZTIwNzJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTIxNCw2ICsyMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CkBAIC0zMzUyLDQ1ICszMzUz
LDQ5IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
ID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRv
TGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJG
cmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3Qg
T3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRo
YXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmlu
ZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7
Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwotCiAgICAgYXV0byogd29ybGQgPSB3b3Js
ZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgp
KSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgcmVzdWx0ID0g
ZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRp
b25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52
YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRoaXMsIHdvcmxkID0gbWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1l
KSwgY2FsbGJhY2tJRF0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwogICAgICAgICBp
ZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAor
ICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkLnB0cigpKSwKICAgICAgICAg
ICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3
b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwogICAgICAgICB9
Ci0gICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYg
KHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6
ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKKyAgICAgICAgICAg
IGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKworICAgICAg
ICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOworICAgICAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAgIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGRl
dGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNr
SUQpKTsKKyAgICB9OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRW
YWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1lKCktPnNj
cmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5j
b3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24p
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFt
ZSgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7Cisg
ICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29y
bGROYW1lLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFt
ZSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIGNhbGxiYWNrSUQpOwor
ICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBm
b3JjZVVzZXJHZXN0dXJlIH0sIFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzhlYTAyZWY1ZjJi
MDNkM2MwZjljOWFmNzFjMzkwOWJlNDExYWU4Ny4uYjA3Y2YxN2YxYjIyYzcxMTlmNWNiZGRkMWJh
ZThjMjljZjlkOWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwog
c3RydWN0IEhpZ2hsaWdodDsKIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbzsKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIHN0cnVj
dCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAKQEAgLTE0
MzUsOCArMTQzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNr
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggYmFhZDc2ZTUwOTM3ZDY2MWFiOTUwNjQ1MWZhNjc0NGI0NmFkNzlj
MS4uOWJmMjFlYzM1MWMyYmJiNTQzZjgwMWZiODU0YWYwYThkMTE4MTk5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC0yMDQsNyArMjA0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdl
dFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBhMDhlMTNhNGFlZmIwYTVjN2FjYjRjZDhkNzA5MDRlOGE3YjdlYWEzLi42OTk4
Mzk2YzU5ZGU3N2JhZGRmN2EyMWJhZTA2OGIwMTg3YmVmOGUxIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTIt
MjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dl
YlZpZXcgU1BJIHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKwogMjAxOS0xMi0yMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW5wdXRNZXRob2Qg
QVBJIHVuaXQgdGVzdHMgZG9uJ3Qgd29yayB1bmRlciBYMTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZTBlODAwOTQ3MjdlNGUxZjI2YTBiNjFiMzQwYjkzYzcwNTI3N2YwYy4uZmVkZmNmMjM1
ZmRmOWMyMGU5ZGM2ZmU4MGE5NTViYTllMDdiNWUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTI5MCw2ICsyOTAsNyBAQAogCQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUYyM0RFMUVGMUEzNzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1t
ICovOyB9OwogCQk1MUIxRUU5NjFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVu
Y2UtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0x
Lmh0bWwgKi87IH07CiAJCTUxQjFFRTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJz
aXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3Rl
bmNlLTIuaHRtbCAqLzsgfTsKKwkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsgfTsKIAkJNTFC
Q0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VF
NEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07
CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1s
ICovOyB9OwogCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlFNjUyMzc2MDg5
NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLzsgfTsKQEAgLTE4NDEsNiArMTg0Miw3IEBACiAJ
CTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBlcnNpc3RlbmNl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBGQUREMDA2NEZC
OTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQjFFRTk1MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5j
ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVu
Y2UtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBEOUQyM0FDOTYw
RTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUI0NTRFQjFCNEUyMzZCMDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmlu
aXNoTG9hZEZvckZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERC
TXVsdGlQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3IEBACiAJCQkJ
MkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCUEx
Nzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFG
OTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk1MUI0MEQ5
RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIw
MzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8s
CiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLywKIAkJCQk3
NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8sCkBAIC00
NTM2LDYgKzQ1MzksNyBAQAogCQkJCUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBh
eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBs
aWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAw
RDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0
NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NjBDNEYx
MjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggMmFkMTVlZjIwOTRkZWY0Mjcy
OWY2MDE3MDRjZjg1MTY3MTU0YzI1ZS4uM2NjNDM0YTVkMjVlMGU4ZDNkNzdmOGI5NWFmYTJkYzY5
NGMyZjE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAg
LTYzLDYgKzYzLDcgQEAKIC0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilzY3JpcHQ7CiAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OworLSAoaWQpb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9u
YXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQp
d2FpdFVudGlsQ2xpZW50V2lkdGhJczoodW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGFh
ZmYyNWNkNzE2ZWNhZTZjZTYyYjU4MTcyYzM5MjkzNTA5MjI2ZWEuLjc0YWQ1ODEyNTAxNmMwMzFm
OGM1ZTRlZGJiOTQ4ZTE4MDVlYjU1MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0KQEAgLTE3OCw2ICsxNzgsMjcgQEAgLSAoaWQpb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQKICAgICByZXR1
cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCistIChpZClvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25h
cnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JPdXQKK3sKKyAgICBib29sIGlz
V2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBpZiAoZXJyb3JPdXQpCisgICAgICAg
ICplcnJvck91dCA9IG5pbDsKKworICAgIFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBb
c2VsZiBfY2FsbEFzeW5jRnVuY3Rpb246c2NyaXB0IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBldmFsUmVzdWx0ID0gcmVzdWx0OworICAgICAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICAg
ICAqZXJyb3JPdXQgPSBbZXJyb3IgcmV0YWluXTsKKyAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNj
cmlwdCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dh
aXRpbmdGb3JKYXZhU2NyaXB0KTsKKworICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgWyplcnJv
ck91dCBhdXRvcmVsZWFzZV07CisKKyAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgp
OworfQorCiAtIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3Ry
aW5nICopc2NyaXB0CiB7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAiLCBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386433</attachid>
            <date>2019-12-26 22:00:29 -0800</date>
            <delta_ts>2019-12-26 22:08:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191226220028.patch</filename>
            <type>text/plain</type>
            <size>65291</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uMjQzOWEyODk4YjA1YzJhYWRhNTBhMjlhMjdlZWFj
YjVjYTAzMzY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTI0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBTcGVjaWFsIGNvbWJpbmF0aW9uIGNoYXJhY3RlcnMgZG9lc24ndCByZXNwZWN0IHRoZSBrZXlz
dHJva2Ugb3JkZXIgd2hlbiBoaWdoIENQVSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc3YzQ2ZDdmNGY5ZDhj
NTgyNzkzZTg2ZDlhMDBjNzQ4NTUwYWQ4MDAuLjUxYjVkZWQ0MWYyNjNiMWVmNjgxZDc0OWMzMjU5
NDU1MTFjN2E1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTItMjQgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJ
IHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbToKKyAgICAgICAg
KEFQSTo6c2hhcmVkQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVu
dHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaE9TIGJ1
aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4YzdlNWM1OTQ3ZjBiNWM5NDM2
NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5ZjRmMWQ0Yzg4M2FiY2M1
MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvSlNWYWx1ZUluV3Jh
cHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCiAgICAgYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisgICAgYmluZGluZ3MvanMv
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2NlYjQ1ODc4Y2FjZjE5ZmE2
NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFmN2FhM2VkMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRh
YmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8q
IFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJNTFCQTRBQzcxQkJDNUFE
NjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNE
NkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUEx
MEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUE0
MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZG
RCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4RjBBQUIwMDUxQzhBMyAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk0MThDMzk1RjFD
OEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovLAor
CQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
ICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29u
dHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJCQkJRTQ4NjNDRkUyMzg0
MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBMjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJB
REE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUJB
OTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhhNmZl
ODRjMDU2OWY5ZjVlYzA2MTNhMDc5MjRlZmQzMTAxMDg2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBSdW5Bc0FzeW5j
RnVuY3Rpb24gOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBGb3JjZVVzZXJHZXN0dXJl
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwordXNpbmcgQXJndW1lbnRXaXJlQnl0ZXNNYXAgPSBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+PjsKKworc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzIHsKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgYm9vbCBydW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFw
PiBhcmd1bWVudHMsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2Uoc291
cmNlKQorICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24gPyBS
dW5Bc0FzeW5jRnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm8pCisgICAgICAg
ICwgYXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0
dXJlKGZvcmNlVXNlckdlc3R1cmUgPyBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgOiBGb3JjZVVzZXJH
ZXN0dXJlOjpObykKKyAgICB7CisgICAgfQorCisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMo
U3RyaW5nJiYgc291cmNlLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBP
cHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4mJiBhcmd1bWVudHMsIEZvcmNlVXNlckdlc3R1
cmUgZm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2UoV1RGTW92ZShzb3VyY2UpKQor
ICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAg
ICwgYXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0
dXJlKGZvcmNlVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBzb3VyY2U7
CisgICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICBPcHRpb25h
bDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOworICAgIEZvcmNlVXNlckdlc3R1cmUg
Zm9yY2VVc2VyR2VzdHVyZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8
IHNvdXJjZSA8PCBydW5Bc0FzeW5jRnVuY3Rpb24gPDwgYXJndW1lbnRzIDw8IGZvcmNlVXNlckdl
c3R1cmU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
KyAgICB7CisgICAgICAgIFN0cmluZyBzb3VyY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc291cmNlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
UnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShydW5Bc0FzeW5jRnVuY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1l
bnRzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VV
c2VyR2VzdHVyZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmb3JjZVVzZXJHZXN0dXJl
KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKHNvdXJjZSksIHJ1bkFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHMp
LCBmb3JjZVVzZXJHZXN0dXJlIH0gfTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDQxZWJiNzRkMTUyMzcwN2FmZTQ0MThlNjMyNzcxYjgzNmQ4MmU3YjAuLjY2ZDg2NDFj
OTI1NzA0Yzg0NzNmNDk0OWY5M2VmNTJjNzM2YmQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5j
bHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKKyNpbmNsdWRlICJSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKQEAg
LTU2NSwyMCArNTY2LDExNiBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaQogCiBKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlKQogewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQo
d29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgYXV0byByZXN1bHQgPSBleGVj
dXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZv
cmNlVXNlckdlc3R1cmUgfSk7CiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDog
SlNDOjpKU1ZhbHVlIHsgfTsKIH0KIAotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorVmFsdWVPckV4Y2VwdGlvbiBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6
Om51bGxvcHQpOwotICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQsIFVSTCht
X2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJv
dmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9m
cmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKHBhcmFtZXRlcnMuZm9yY2VVc2VyR2VzdHVyZSA9PSBGb3JjZVVzZXJH
ZXN0dXJlOjpZZXMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAKICAgICAvLyBGSVhNRTogSW5zdGVh
ZCBvZiByZXR1cm5pbmcgYW4gZW1wdHkgSlNWYWx1ZSwgc2hvdWxkIHJldHVybiBhbiBFeGNlcHRp
b25EZXRhaWxzLgogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZh
bHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKTsKKyAgICBzd2l0Y2ggKHBhcmFtZXRlcnMu
cnVuQXNBc3luY0Z1bmN0aW9uKSB7CisgICAgY2FzZSBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vOiB7
CisgICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShwYXJhbWV0ZXJzLnNvdXJjZSwg
VVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3Vy
Y2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0
ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOworICAgICAgICByZXR1cm4gZXZhbHVh
dGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKTsKKyAgICB9CisgICAgY2FzZSBSdW5Bc0FzeW5j
RnVuY3Rpb246OlllczoKKyAgICAgICAgcmV0dXJuIGNhbGxJbldvcmxkKFdURk1vdmUocGFyYW1l
dGVycyksIHdvcmxkKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK30KKworVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVy
OjpjYWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1
bmN0aW9uID09IFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzKTsKKyAgICBBU1NFUlQocGFyYW1ldGVy
cy5hcmd1bWVudHMpOworCisgICAgYXV0byYgcHJveHkgPSBqc1dpbmRvd1Byb3h5KHdvcmxkKTsK
KyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcHJveHkud2luZG93KCk7CisgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgbWFya2VkQXJndW1lbnRzOworICAgIFN0cmluZ0J1aWxkZXIgZnVuY3Rpb25T
dHJpbmdCdWlsZGVyOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisKKyAgICAvLyBCdWlsZCB1
cCBhIG5ldyBzY3JpcHQgc3RyaW5nIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24gd2l0aCBhcmd1
bWVudHMsIGFuZCBkZXNlcmlhbGl6ZSB0aG9zZSBhcmd1bWVudHMuCisgICAgZnVuY3Rpb25TdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOworICAgIGZvciAoYXV0byBhcmd1bWVudCA9
IHBhcmFtZXRlcnMuYXJndW1lbnRzLT5iZWdpbigpOyBhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFy
Z3VtZW50cy0+ZW5kKCk7KSB7CisgICAgICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQo
YXJndW1lbnQtPmtleSk7CisgICAgICAgIGF1dG8gc2VyaWFsaXplZEFyZ3VtZW50ID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYXJndW1lbnQtPnZh
bHVlKSk7CisKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZ2xvYmFs
T2JqZWN0LnZtKCkpOworICAgICAgICBhdXRvIGpzQXJndW1lbnQgPSBzZXJpYWxpemVkQXJndW1l
bnQtPmRlc2VyaWFsaXplKGdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCk7CisgICAgICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9ICJVbmFibGUgdG8gZGVzZXJpYWxpemUgYXJndW1lbnQgdG8gZXhlY3V0ZSBhc3luY2hyb25v
dXMgSmF2YVNjcmlwdCBmdW5jdGlvbiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIG1hcmtlZEFyZ3VtZW50cy5hcHBlbmQoanNBcmd1bWVudCk7CisKKyAgICAgICAg
Kythcmd1bWVudDsKKyAgICAgICAgaWYgKGFyZ3VtZW50ICE9IHBhcmFtZXRlcnMuYXJndW1lbnRz
LT5lbmQoKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoJywnKTsK
KyAgICB9CisKKyAgICBpZiAoIWVycm9yTWVzc2FnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JNZXNzYWdlIH0pOworCisg
ICAgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLmFwcGVuZCgiKXsiLCBwYXJhbWV0ZXJzLnNvdXJjZSwg
In0pIik7CisKKyAgICBhdXRvIHNvdXJjZUNvZGUgPSBTY3JpcHRTb3VyY2VDb2RlIHsgZnVuY3Rp
b25TdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCksIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgp
KSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFt
LCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0
KCkpIH07CisgICAgY29uc3QgYXV0byYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJj
ZUNvZGUoKTsKKworICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIo
KS0+dXJsKCk7CisgICAgY29uc3QgU3RyaW5nKiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJM
OworICAgIG1fc291cmNlVVJMID0gJnNvdXJjZVVSTDsKKworICAgIFJlZjxGcmFtZT4gcHJvdGVj
dG9yKG1fZnJhbWUpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVh
dGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3Vy
Y2VDb2RlLnN0YXJ0Q29sdW1uKCkpOworCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2
YWx1YXRpb25FeGNlcHRpb247CisgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9u
YWxEZXRhaWxzOworICAgIEpTVmFsdWUgcmV0dXJuVmFsdWU7CisgICAgZG8geworICAgICAgICBK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmds
b2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBqc1NvdXJjZUNvZGUsICZw
cm94eSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisKKyAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNl
cHRpb24pCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0
IHx8ICFmdW5jdGlvbk9iamVjdC5pc0Z1bmN0aW9uKHdvcmxkLnZtKCkpKSB7CisgICAgICAgICAg
ICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBjcmVhdGUgSmF2YVNjcmlwdCBhc3lu
YyBmdW5jdGlvbiB0byBjYWxsIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU1NjIKKyAgICAgICAgLy8gR2V0dGluZyBDYWxsRGF0YS9DYWxsVHlwZSBzaG91bGRu
J3QgYmUgcmVxdWlyZWQgdG8gY2FsbCBpbnRvIEpTLgorICAgICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh3b3JsZC52bSgpLCBm
dW5jdGlvbk9iamVjdCwgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRv
IHByZXBhcmUgSmF2YVNjcmlwdCBhc3luYyBmdW5jdGlvbiB0byBiZSBjYWxsZWQiX3MgfSB9Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5WYWx1ZSA9IEpT
RXhlY1N0YXRlOjpwcm9maWxlZENhbGwoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFz
b246Ok90aGVyLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmcHJveHksIG1h
cmtlZEFyZ3VtZW50cywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgfSB3aGlsZSAoZmFsc2Up
OworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2Zy
YW1lKTsKKworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uICYmICFvcHRpb25hbERldGFpbHMp
IHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBvcnRFeGNl
cHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNo
ZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZNb3Zl
KGRldGFpbHMpOworICAgIH0KKworICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7CisK
KyAgICBpZiAob3B0aW9uYWxEZXRhaWxzKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Km9wdGlvbmFsRGV0YWlscyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQpAQCAtNTg3LDEzICs2ODQsMjcgQEAgSlNDOjpKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oRE8KICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6
OkpTVmFsdWUgeyB9OwogfQogVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCB7IHNjcmlwdCwgZmFsc2Us
IFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKK30KKworVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFs
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAg
aWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIg
YWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zLCAw
LCAwLCB7IH0gfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRh
aWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBhZ2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQg
Zm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MgfSk7CiAKICAgICBkb2N1bWVudC5zZXRIYXNFdmFsdWF0
ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdv
cmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0
SW5Xb3JsZCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cit9CisKK3ZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBS
ZXNvbHZlRnVuY3Rpb24mJiByZXNvbHZlRnVuY3Rpb24pCit7CisgICAgYXV0byByZXN1bHQgPSBl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpKTsKKworICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFibGUsIGlu
c3RhbGwgdGhlIGZ1bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2aW5nIG5v
dy4KKworICAgIHJlc29sdmVGdW5jdGlvbihyZXN1bHQpOwogfQogCiBib29sIFNjcmlwdENvbnRy
b2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5k
ZXggMjY4ODFjYjcyMzlkZjgyNzA2OGNmOGFjOGI1ZjE4N2NhYmM2MWQ2MC4uY2NkZGM4MWI4MmEz
ODEzODk4NWFmM2IwOGU5M2E0MzJhOWQ1ZTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N0cm9uZy5oPgpAQCAtNjMsNyArNjQsMTEgQEAgY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
V2lkZ2V0OworCitlbnVtIGNsYXNzIFJ1bkFzQXN5bmNGdW5jdGlvbiA6IGJvb2w7CisKIHN0cnVj
dCBFeGNlcHRpb25EZXRhaWxzOworc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOwogCiBl
bnVtIFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgQWJvdXRUb0NyZWF0
ZUV2ZW50TGlzdGVuZXIsCkBAIC05MSwxMSArOTYsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAorICAg
IHVzaW5nIFJlc29sdmVGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0
aW9uKT47CisKICAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSk7CiAgICAgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1Zh
bHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYsIFJlc29sdmVGdW5jdGlvbiYmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZh
bHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgSlND
OjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dVc2Vy
QWdlbnRTY3JpcHRzKERvY3VtZW50JikgY29uc3Q7CiAKQEAgLTEwNiwxMCArMTE1LDYgQEAgcHVi
bGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBP
SyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5
LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
LSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotICAgIFZhbHVlT3JFeGNlcHRp
b24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29y
bGQmKTsKLQogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVT
Y3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRl
cnM+JiYsIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChMb2Fk
YWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZl
dGNoUGFyYW1ldGVycz4mJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2Fk
YWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29y
bGQmKTsKQEAgLTE3MSw2ICsxNzYsMTEgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbFJlcGxhY2VX
aXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZhc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV93aWxs
UmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3JpcHRVUkw7IH0KIAogcHJpdmF0ZToK
KyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJu
YWwoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJik7CisgICAgVmFs
dWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5X
b3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgVmFs
dWVPckV4Y2VwdGlvbiBjYWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBET01X
cmFwcGVyV29ybGQmKTsKKyAgICAKICAgICB2b2lkIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlJiwgRE9NV3JhcHBl
cldvcmxkJik7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAKaW5kZXggNWUwNjlkNzkxMDcyYmY1N2RkZDcz
YzQzZTRlMWVhOTE2NzMxZjVmYS4uMDg3NWE1ZWNmZmE5YzY3ZTYwYzFhZjY2YzkwYzcwOTVmZTdi
ZDEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAKQEAgLTE5NjksNyArMTk2OSw3
IEBAIHl5cmVkdWNlOgogI2xpbmUgNDAyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKICAg
ICB7CiAgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnNldEFic29sdXRl
KCk7Ci0gICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKKyAg
ICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCkBAIC0xOTc4LDcgKzE5NzgsNyBAQCB5eXJlZHVjZToKICAgICB7
CiAgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnByZXBlbmRTdGVwKHN0
ZDo6dW5pcXVlX3B0cjxTdGVwPigoeXl2c3BbKDIpIC0gKDMpXS5zdGVwKSkpOwogICAgICAgICAo
eXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAo
eXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4o
KHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25Q
YXRoPigoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CisgICAgICAgICh5eXZhbC5l
eHByZXNzaW9uKSA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4o
KHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25Q
YXRoPigoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CiAgICAgO30KICAgICBicmVh
azsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IGIvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CmluZGV4IDRlYjIwYjkyYTU2NDg5ZTBmZmI2
MDU5ZTExYWZhOTI2Y2JhM2I5NDYuLmI3NTFhNjFiYTNmNDIyMjQwZTdjMGJlMGU0ZjVkNjEzZTJm
N2E1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKQEAgLTQwMSwxNCArNDAxLDE0IEBA
IFBhdGhFeHByOgogICAgIEZpbHRlckV4cHIgJy8nIFJlbGF0aXZlTG9jYXRpb25QYXRoCiAgICAg
ewogICAgICAgICAkMy0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgJCQgPSBuZXcgUGF0aChzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRo
PigkMykpOworICAgICAgICAkJCA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOwogICAgIH0K
ICAgICB8CiAgICAgRmlsdGVyRXhwciBEZXNjZW5kYW50T3JTZWxmIFJlbGF0aXZlTG9jYXRpb25Q
YXRoCiAgICAgewogICAgICAgICAkMy0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+
KCQyKSk7CiAgICAgICAgICQzLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAkJCA9IG5ldyBQYXRo
KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlv
blBhdGg+KCQzKSk7CisgICAgICAgICQkID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CiAg
ICAgfQogICAgIDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDU0YzM0ZTg4ODRjMjRjY2I4MjRlNmQyYmNmZDM2MDI3
NzY4NTI3MGUuLjFmNDNlNjNjNjExMmUwZjY0NzY5YTQxODMwNmM4YjQ2YmIyMGRmMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBkZWZpbmVkKF9fT0JKQ19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CiAj
ZW5kaWYKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMGMxNWY4YjkzYzc4MDdlZmQ3NGJiZTQwMDgy
ODQ0NDFjNTZmYWRiZi4uZGQ3OTZiODMzMjM1OWUxYzNiMWU1NTc1ZmQ3YTAzMzUzY2IxZmFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDcyLDcgKzI0
NzIsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQ
YWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQq
IGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0
b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVm
KS0+c3RyaW5nKCksIHRydWUsIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHRvSW1wbChwYWdlUmVmKS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBmYWxz
ZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBjYWxsYmFjayh0
b0FQSShyZXR1cm5WYWx1ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSA/
IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCmluZGV4IGEyNjczZTI1YzEx
MzQwNzE5MTJjMjAyOGZkN2RmMjI5NjU0YWEzOGUuLjY2ZThiMjdhMDlhZjgzZTVmYmY3MTMxZDBm
MWVkN2ExOGFiNDc1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KQEAg
LTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKIAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pT
VmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KQEAgLTU5LDExICs2MSwxNiBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVy
PFNoYXJlZEpTQ29udGV4dD4gbV90aW1lcjsKIH07CiAKK3N0YXRpYyBTaGFyZWRKU0NvbnRleHQm
IHNoYXJlZENvbnRleHQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRKU0Nv
bnRleHQ+IHNoYXJlZENvbnRleHQ7CisgICAgcmV0dXJuIHNoYXJlZENvbnRleHQuZ2V0KCk7Cit9
CisKIGlkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTaGFyZWRKU0NvbnRleHQ+IHNoYXJlZENvbnRleHQ7Ci0gICAgSlNDb250ZXh0
KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4dC5nZXQoKS5lbnN1cmVDb250ZXh0KCk7CisgICAgSlND
b250ZXh0KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4dCgpLmVuc3VyZUNvbnRleHQoKTsKIAogICAg
IEpTVmFsdWVSZWYgdmFsdWVSZWYgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUo
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbHVl
UmVmKQpAQCAtNzMsNCArODAsMjAgQEAgaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWQKICAgICByZXR1
cm4gdmFsdWUudG9PYmplY3Q7CiB9CiAKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQgb2JqZWN0KQoreworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gc2hh
cmVkQ29udGV4dCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1Zh
bHVlIHZhbHVlV2l0aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOworICAgIGlmICgh
dmFsdWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGdsb2JhbE9i
amVjdCA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwor
CisgICAgYXV0byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZSgqZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZd
KSk7CisgICAgcmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKK30KKwogfSAvLyBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IDRlN2JjMGNmNzY4ZTEzNGViMGYzYzk4NjZmYzI4OWNmNTM0MWM5YmQuLjM4OWY0ZmMzOWMzNTY0
OWFiZTk5NDA0ZThlZTU4NDc3ZWZjMmNhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODIyLDE0ICs4MjIsODYgQEAgc3RhdGljIFdL
RXJyb3JDb2RlIGNhbGxiYWNrRXJyb3JDb2RlKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikKIAogLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlw
dFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBh
c0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMg
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCi0tICh2b2lkKV9ldmFs
dWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0
dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCitzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3Vt
ZW50KGlkIGFyZ3VtZW50KQoreworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3Nd
XSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50
IGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAg
ICAgIF9fYmxvY2sgQk9PTCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1l
cmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9w
KSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQob2JqZWN0KSkgeworICAgICAg
ICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0b3AgPSBZRVM7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2YWxpZDsKKyAgICB9
CisKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11d
KSB7CisgICAgICAgIF9fYmxvY2sgYm9vbCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3Vt
ZW50IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKGlkIGtleSwgaWQgdmFsdWUs
IEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChrZXkpIHx8
ICF2YWxpZGF0ZUFyZ3VtZW50KHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgKnN0b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAg
IH1dOworCisgICAgICAgIHJldHVybiB2YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKy0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3VtZW50
czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VV
c2VyR2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGph
dmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVy
cm9yIGVycm9yQ29kZSkgeworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVz
TWFwPiBhcmd1bWVudHNNYXA7CisgICAgaWYgKGFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgYXJn
dW1lbnRzTWFwID0gV2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXAgeyB9OworICAgIE5TU3Ry
aW5nICplcnJvck1lc3NhZ2UgPSBuaWw7CisKKyAgICBmb3IgKGlkIGtleSBpbiBhcmd1bWVudHMp
IHsKKyAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsK
KyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgbmFtZXMgbXVz
dCBiZSBzdHJpbmdzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgCisgICAg
ICAgIGlkIHZhbHVlID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgaWYg
KCF2YWxpZGF0ZUFyZ3VtZW50KHZhbHVlKSkgeworICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0g
QCJGdW5jdGlvbiBhcmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0
eXBlcywgb3IgY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051
bWJlciwgTlNEYXRlLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgCisgICAgICAgIGF1dG8gd2lyZUJ5dGVzID0gQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2YWx1ZSk7CisgICAgICAg
IC8vIFNpbmNlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlvbmFyeSBhYm92ZSwgd2Ug
c2hvdWxkIG5ldmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2lyZSBieXRlcy4KKyAgICAg
ICAgQVNTRVJUKHdpcmVCeXRlcyk7CisgICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgKndp
cmVCeXRlcyk7CisgICAgfQorCisgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNlcHRp
b25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOworICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OmVycm9yTWVzc2FnZSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2Vw
dGlvbk1lc3NhZ2VFcnJvcktleV07CisKKyAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tO
U0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckph
dmFTY3JpcHRFeGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOworICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbaGFuZGxlciwg
ZXJyb3JdIHsKKyAgICAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNF
cnJvciAqKSloYW5kbGVyLmdldCgpOworICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGVycm9y
LmdldCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9w
YWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBqYXZhU2NyaXB0U3RyaW5nLCAoYm9vbClh
c0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgKGJvb2wpZm9yY2VVc2VyR2Vz
dHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywg
V2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKICAgICAgICAg
aWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTIzLDYgKzE5OTUsMTEg
QEAgLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RD
b25maWd1cmF0aW9uICopc25hcHNob3RDb24KICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmln
dXJhdGlvbjpwZGZDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5k
bGVyXTsKIH0KIAorLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNj
cmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNB
c3luY0Z1bmN0aW9uOllFUyB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJl
OllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKIC0gKE5TRGF0
YSAqKV9zZXNzaW9uU3RhdGVEYXRhCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1
c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRlIGVuY29kZXIuCkBAIC0yMDY1LDcgKzIxNDIsNyBA
QCAtICh2b2lkKV9pc0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIK
IAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmlu
ZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlw
dDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6
Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNj
cmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2Vy
R2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0g
KHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0
ZVBvbGljaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaAppbmRleCBjMzEyYzgxODhjMGZjMDhjNjkzMTg2ODFlYjgzZmMxYTc4
NzA5MzY4Li5lMTM3OTBjYmRjY2NhOTVhMjAxMmU1NDMxYjQ5NmUzNWQ1YmM2NzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTMxNSw2ICszMTUsOSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
UmVjdEVkZ2UpIHsKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0
Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCistICh2b2lkKV9jYWxsQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilq
YXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9u
SGFuZGxlcjsKKwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyYTQzOTg4
MDFmYWFhOWZjMDhkNjQxNTBiMzE4ZDZmZjBjMzg2MzllLi42NDZlNDVhZGMyODE4Mjg3ZjQ3ZDAw
MzQwNTY3ODIyYzIxMGExNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzYzNiw3ICszNjM2LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Z2NoYXIqIHNjcmlwdCwKICAgICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7CiAKICAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBX
VEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNlcHRpb25EZXRh
aWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAg
ZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwpAQCAtMzczNyw3ICszNzM3LDcgQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfaW5fd29ybGQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2NoYXIKICAgICBnX3JldHVybl9pZl9mYWlsKHdvcmxkTmFtZSk7CiAKICAg
ICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2Fu
Y2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQp
LCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAg
ICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7
CkBAIC0zNzc5LDcgKzM3NzksNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogCiAgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9v
YmplY3QodGFzay5nZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURhdGEgPSBnX21l
bW9yeV9vdXRwdXRfc3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJFQU0ob2JqZWN0
KSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5n
Ojpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0
YSkpLCB0cnVlLAorICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHsgU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0
U3RyZWFtRGF0YSkpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlfSwKICAgICAgICAgW3Rhc2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlv
bmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgewogICAgICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAg
ICAgICAgICAgaWYgKGRldGFpbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA0YTRjY2MyNTM0ZTEwZjNkMzJjZmQ4NTkwYTZiYjNkZmRhNzc5NjRmLi44Mzhi
NGRhODUwMzljNmMyYWRlZTIzYTZmZmEyYzE4MzczY2YzYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4NDksMTIgKzM4NDksMTIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBsYXVu
Y2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQs
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29y
bGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0
IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRz
IHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwpAQCAtMzg2NSw3
ICszODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICB9CiAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZv
cmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRl
cnMsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBhY2I3MGY1NjdkMzk5ZmViNmNmZmFkNDBjYWI3OTFkOTQyZDNk
ZTVlLi43N2ZjMDQ1ODdjZDk5YzM0ZGZkNWRmNjZiMTI3YzJhYWZkNGM2ODRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UG9pbnRlcklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgpAQCAtMTA2Miw4ICsxMDYzLDggQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2
b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRT
b3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZl
T2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRpb25h
bDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2Vi
Q29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2
b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKaW5kZXggN2JjMThmZmJmNmFlYzM0NDEyODhmYTM2MjZlYTEyYjc4
MWI2YzViNC4uYmUyMGYxZDI5ODE2NWJmZTU5NjlkY2Q1NDcxZmEzOGVkYTRhYWI0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RB
bmRQb3J0LCBDb25uZWN0aQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
cnVuU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewotICAgIG1fcGFnZS5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoc2NyaXB0LCBmYWxzZSwKKyAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmYWxzZSB9LCAKICAgICAg
ICAgW10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBleGNlcHRpb25EZXRhaWxzLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscykKICAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkV4Y2VwdGlvbiBydW5uaW5nIHNjcmlwdCBcIiVzXCIiLCBleGNlcHRpb25EZXRhaWxzLT5t
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAxOGJkNjhkMTM3ZTk2NjYxM2NiNjE1M2MyNTM2NzQzYzQ4MmE3
MWYxLi4xM2Q0M2VkMDA5NTA1ZWEwMWI1YmYxOWEwMjM3N2VlZDJlMjA3MmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjE0LDYgKzIxNCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENv
bnRyb2xsZXIuaD4KQEAgLTMzNTIsNDUgKzMzNTMsNDkgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFn
ZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9k
ZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXli
b2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1Rv
TGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNh
cmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24g
ZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3Vs
dDsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFs
dWU7Ci0KICAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ6Om5vcm1hbFdvcmxkKCk7Ci0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAm
JiB3b3JsZCkgewotICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
LmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1l
KCkgfHwgIXdvcmxkKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2Ny
aXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1
dGUgSmF2YVNjcmlwdDogUGFnZSBpcyBpbiBpbnZhbGlkIHN0YXRlIl9zIH0sIGNhbGxiYWNrSUQp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0g
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3
b3JsZCksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0
aW9uIHJlc3VsdCkgeworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkUmVzdWx0VmFsdWU7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1l
LT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZCksCisgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0
VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9y
V29ybGQod29ybGQucHRyKCkpLAogICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJh
bWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC52
YWx1ZSgpKSwgbnVsbHB0cik7CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQotICAg
ICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisgICAg
ICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoc2VyaWFs
aXplZFJlc3VsdFZhbHVlKQorICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZS0+ZGF0YSgpOworCisgICAgICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHM7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgZGV0YWlscyA9IHJl
c3VsdC5lcnJvcigpOwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsK
LSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIH07CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
ZGV0YWlscywgY2FsbGJhY2tJRCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkp
OworICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91c1Vz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewot
ICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFt
ZSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgQVNTRVJUKG1haW5XZWJGcmFtZSgpICE9IGZy
YW1lKTsKLSAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUs
IFdURjo6bnVsbG9wdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgeyBz
Y3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV1RGOjpudWxs
b3B0LCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5n
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCA3OGVhMDJlZjVmMmIwM2QzYzBmOWM5YWY3MWMzOTA5YmU0MTFhZTg3
Li5iMDdjZjE3ZjFiMjJjNzExOWY1Y2JkZGQxYmFlOGMyOWNmOWQ5YWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTcsNiArMTk3LDcgQEAgc3Ry
dWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Owogc3RydWN0IEtl
eXByZXNzQ29tbWFuZDsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOworc3RydWN0IFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVj
dCBWaWV3cG9ydEFyZ3VtZW50czsKIApAQCAtMTQzNSw4ICsxNDM2LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBjb25zdCBT
dHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdv
cmxkTmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3Qo
V2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6
ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiYWFkNzZlNTA5
MzdkNjYxYWI5NTA2NDUxZmE2NzQ0YjQ2YWQ3OWMxLi45YmYyMWVjMzUxYzJiYmI1NDNmODAxZmI4
NTRhZjBhOGQxMTgxOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIwNCw3ICsyMDQsNyBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIE9wdGlv
bmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5h
bWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZv
cmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwOGUxM2E0YWVmYjBhNWM3
YWNiNGNkOGQ3MDkwNGU4YTdiN2VhYTMuLjY5OTgzOTZjNTlkZTc3YmFkZGY3YTIxYmFlMDY4YjAx
ODdiZWY4ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMi0yNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLV2ViVmlldyBTUEkgdG8gZXZhbHVhdGUgYSBmdW5j
dGlvbiB3aXRoIGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fz
eW5jRnVuY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmVycm9yOl0pOgor
CiAyMDE5LTEyLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBJbnB1dE1ldGhvZCBBUEkgdW5pdCB0ZXN0cyBkb24ndCB3b3JrIHVu
ZGVyIFgxMQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMGU4MDA5NDcyN2U0ZTFmMjZhMGI2
MWIzNDBiOTNjNzA1Mjc3ZjBjLi5mZWRmY2YyMzVmZGY5YzIwZTlkYzZmZTgwYTk1NWJhOWUwN2I1
ZTMzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkwLDYgKzI5MCw3IEBACiAJCTUxQUYy
M0RGMUVGMUEzNzMwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRjIzREUxRUYxQTM3MjAwNzJG
MjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gKi87IH07CiAJCTUxQjFFRTk2MUM4MEZBRUYw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTQxQzgwRkFERDAwNjRG
Qjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCAqLzsgfTsKIAkJNTFCMUVFOTcxQzgw
RkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBGQURE
MDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OworCQk1MUI0MEQ5
RTIzQUM5NjI0MDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBB
c3luY0Z1bmN0aW9uLm1tICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUgLyogSW5k
ZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJF
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CiAJCTUxQkU5RTY2MjM3NjA4OUYw
MEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFOUU2NTIzNzYwODk1MDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tICov
OyB9OwpAQCAtMTg0MSw2ICsxODQyLDcgQEAKIAkJNTFCMUVFOEQxQzgwRjU4ODAwNjRGQjk4IC8q
IEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSW5kZXhlZERCUGVyc2lzdGVuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0x
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2Ut
MS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMUVFOTUxQzgwRkFERDAw
NjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb24u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1NEVCMUI0RTIzNkIwMDg1RUFB
NiAvKiBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRGaW5pc2hMb2FkRm9yRnJhbWUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRGaW5p
c2hMb2FkRm9yRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTQ5
MUM4NEY0QUYwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJNdWx0aVByb2Nlc3MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJ
bmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
IkluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgyOSw2ICsyODMxLDcgQEAKIAkJCQkyREU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyog
QW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJQTE3OThCODEyMjQzMUQ2NTAwMDc2NEJEIC8qIEFw
cGxlUGF5Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tICovLAorCQkJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBBc3luY0Z1
bmN0aW9uLm1tICovLAogCQkJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAvKiBBc3luY1BvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQkzNzYwQzRGMDIxMTI0OUFGMDAyMzNB
Q0MgLyogQXR0clN0eWxlLm1tICovLAogCQkJCTc1NENFQzgwMUY2NzIyREMwMEQwMDM5QSAvKiBB
dXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKQEAgLTQ1MzYsNiArNDUzOSw3IEBACiAJCQkJQTE3OThC
ODIyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjNG
NjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUI0MEQ5RTIzQUM5NjI0MDBFMDUyNDEg
LyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzNDEzOEM3MjAzMjYxQ0Ew
MEYyNjk2MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MEM0RjEyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHls
ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MDE3OGM3OWYxNmJk
NTc5ODY2NzU3MzcyZjk1YzdhNTI4NGRkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KQEAgLTAsMCArMSwx
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKKworVEVTVChBc3luY0Z1bmN0aW9uLCBCYXNpYykKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8g
RnVuY3Rpb24gd2l0aCBubyByZXR1cm4gdmFsdWUuCisgICAgLy8gUmV0dXJucyBKYXZhU2NyaXB0
IHVuZGVmaW5lZCB3aGljaCB0cmFuc2xhdGVzIHRvIG5pbC4KKyAgICBpZCByZXN1bHQgPSBbd2Vi
VmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAiMSIgd2l0aEFyZ3VtZW50czpuaWwg
ZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX0VRKHJl
c3VsdCwgbmlsKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgZXhwbGljaXQgbnVsbC4KKyAg
ICAvLyBSZXR1cm5zIEphdmFTY3JpcHQgbnVsbCB3aGljaCB0cmFuc2xhdGVzIHRvIE5TTnVsbC4K
KyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0
dXJuIG51bGwiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdWxs
IGNsYXNzXV0pOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBhIG51bWJlci4KKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdp
dGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7
CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKworICAgIC8v
IEZ1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAnMSciIHdpdGhBcmd1bWVudHM6bmlsIGVy
cm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCIxIl0pOworCisgICAgLy8gVGFrZXMgbXVsdGlwbGUg
YXJndW1lbnRzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVu
Y3Rpb246QCJyZXR1cm4gYSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCwgQCJiIiA6
IEAyIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKKyAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKKworICAgIC8vIFRha2VzIG11
bHRpcGxlIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMsIGZvbGxvd3MgamF2YXNjcmlwdHMg
InR5cGUgYXBwZW5kaW5nIiBydWxlcy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGZvbyArIGJhciIgd2l0aEFyZ3VtZW50czpAeyBA
ImZvbyIgOiBAImZvbyIsIEAiYmFyIiA6IEA0MiB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNU
X05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6
QCJmb280MiJdKTsKKworICAgIC8vIEludmFsaWQgSmF2YVNjcmlwdCwgc2hvdWxkIHJldHVybiBh
biBlcnJvci4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOkAicmV0dW5yIG51bGwiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKK30K
KworVEVTVChBc3luY0Z1bmN0aW9uLCBJbnZhbGlkQXJndW1lbnRzKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBB
cmd1bWVudCBrZXlzIG11c3QgYmUgc3RyaW5ncy4KKyAgICBpZCByZXN1bHQgPSBbd2ViVmlldyBv
YmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsg
QDEgOiBAMSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBF
WFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIC8vIFZhbHVlcyBjYW4gb25seSBiZSBO
U1N0cmluZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgbWF5
IG9ubHkgY29udGFpbiB0aG9zZSA1IHR5cGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVj
dEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpAeyBAImEi
IDogW05TRGF0YSBkYXRhXSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwocmVzdWx0
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIHJlc3VsdCA9IFt3ZWJW
aWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50
czpAeyBAImEiIDogQFsgQDEsIFtOU0RhdGEgZGF0YV0gXSB9IGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKwor
ICAgIC8vIFJlZmVyZW5jZXMgYW4gYXJndW1lbnQgdGhhdCB3YXMgbm90IHByb3ZpZGVkLgorICAg
IHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4g
YSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCB9IGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKK30K
KworVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIFRlc3RzIHJv
dW5kIHRyaXBwaW5nIGEgd2hvbGUgYnVuY2ggb2YgYXJndW1lbnQgaW5wdXRzIGFuZCB2ZXJpZnlp
bmcgdGhlIHJlc3VsdC4KKworICAgIGlkIHZhbHVlID0gQDQyOworICAgIGlkIGFyZ3VtZW50cyA9
IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEAiRm9vIjsKKyAgICBhcmd1bWVu
dHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVy
cm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2
YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBbTlNEYXRlIGRhdGVXaXRoVGlt
ZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdOworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIg
OiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVu
Y3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsK
KyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6
cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEBbIEAxLCBAMiBdOworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEBbIEAiZm9vIiwgW05TRGF0ZSBkYXRlV2l0
aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTowXSBdOworICAgIGFyZ3VtZW50cyA9IEB7
IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVy
cm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlz
RXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAMSwgQCJiIiA6IEAyIH07
CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBF
WFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJh
IiA6IEAiZm9vIiwgQCJiIiA6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVy
ZW5jZURhdGU6MF0gfTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICBy
ZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEi
IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAg
dmFsdWUgPSBAeyBAImEiIDogQHsgQCJhIiA6IEAxIH0gfTsKKyAgICBhcmd1bWVudHMgPSBAeyBA
ImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3lu
Y0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJv
cl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0Vx
dWFsOnJlc3VsdF0pOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmgKaW5kZXggMmFkMTVlZjIwOTRkZWY0MjcyOWY2MDE3MDRjZjg1MTY3MTU0YzI1ZS4u
M2NjNDM0YTVkMjVlMGU4ZDNkNzdmOGI5NWFmYTJkYzY5NGMyZjE3YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTYzLDYgKzYzLDcgQEAKIC0gKE5TU3Ry
aW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CiAt
IChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmlu
ZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5n
ICopc2NyaXB0OworLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcg
KilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihO
U0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVudGlsQ2xpZW50V2lkdGhJczoo
dW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGFhZmYyNWNkNzE2ZWNhZTZjZTYyYjU4MTcy
YzM5MjkzNTA5MjI2ZWEuLjc0YWQ1ODEyNTAxNmMwMzFmOGM1ZTRlZGJiOTQ4ZTE4MDVlYjU1MGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTE3OCw2
ICsxNzgsMjcgQEAgLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2Vz
dHVyZTooTlNTdHJpbmcgKilzY3JpcHQKICAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFz
ZSgpOwogfQogCistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5T
RXJyb3IgKiopZXJyb3JPdXQKK3sKKyAgICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBm
YWxzZTsKKyAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICplcnJvck91dCA9IG5pbDsKKworICAg
IFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBfY2FsbEFzeW5jRnVuY3Rpb246
c2NyaXB0IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0Owor
ICAgICAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgICAgICAqZXJyb3JPdXQgPSBbZXJyb3IgcmV0
YWluXTsKKyAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKKwor
ICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgWyplcnJvck91dCBhdXRvcmVsZWFzZV07CisKKyAg
ICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOworfQorCiAtIChOU1N0cmluZyAqKXN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0CiB7CiAgICAgcmV0
dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386434</attachid>
            <date>2019-12-26 22:08:11 -0800</date>
            <delta_ts>2019-12-27 19:05:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191226220810.patch</filename>
            <type>text/plain</type>
            <size>65799</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uMjQzOWEyODk4YjA1YzJhYWRhNTBhMjlhMjdlZWFj
YjVjYTAzMzY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEyLTI0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxOS0xMi0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBTcGVjaWFsIGNvbWJpbmF0aW9uIGNoYXJhY3RlcnMgZG9lc24ndCByZXNwZWN0IHRoZSBrZXlz
dHJva2Ugb3JkZXIgd2hlbiBoaWdoIENQVSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc3YzQ2ZDdmNGY5ZDhj
NTgyNzkzZTg2ZDlhMDBjNzQ4NTUwYWQ4MDAuLjUxYjVkZWQ0MWYyNjNiMWVmNjgxZDc0OWMzMjU5
NDU1MTFjN2E1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTItMjQgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJ
IHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24gd2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbToKKyAgICAgICAg
KEFQSTo6c2hhcmVkQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVu
dHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaE9TIGJ1
aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4YzdlNWM1OTQ3ZjBiNWM5NDM2
NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5ZjRmMWQ0Yzg4M2FiY2M1
MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvSlNWYWx1ZUluV3Jh
cHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCiAgICAgYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisgICAgYmluZGluZ3MvanMv
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2NlYjQ1ODc4Y2FjZjE5ZmE2
NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFmN2FhM2VkMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRh
YmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8q
IFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJNTFCQTRBQzcxQkJDNUFE
NjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNE
NkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUEx
MEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUE0
MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZG
RCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4RjBBQUIwMDUxQzhBMyAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk0MThDMzk1RjFD
OEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovLAor
CQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
ICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29u
dHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJCQkJRTQ4NjNDRkUyMzg0
MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBMjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJB
REE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUJB
OTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3OTUyZmQwYzI2MWRjZTE1
NGFiZGNlYTczZTNjNWEuLjExNDExOThkMmJjM2I5ZDMzZDQ1NzMyYWVlMWQ0YzY0OTFlNmY4Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgKQEAg
LTMzLDcgKzMzLDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFpbHMgewogICAgIFN0cmluZyBtZXNz
YWdlOwogICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwogICAgIGludCBjb2x1bW5OdW1iZXIgeyAw
IH07Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICBTdHJpbmcgc291cmNlVVJMIHsgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4YTZmZTg0YzA1
NjlmOWY1ZWMwNjEzYTA3OTI0ZWZkMzEwMTA4NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgUnVuQXNBc3luY0Z1bmN0
aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgRm9yY2VVc2VyR2VzdHVyZSA6IGJv
b2wgeyBObywgWWVzIH07CisKK3VzaW5nIEFyZ3VtZW50V2lyZUJ5dGVzTWFwID0gSGFzaE1hcDxT
dHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CisKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyB7CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJv
b2wgcnVuQXNBc3luY0Z1bmN0aW9uLCBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJn
dW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkK
KyAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNB
c3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vKQorICAgICAgICAsIGFy
Z3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShm
b3JjZVVzZXJHZXN0dXJlID8gRm9yY2VVc2VyR2VzdHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVy
ZTo6Tm8pCisgICAgeworICAgIH0KKworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmlu
ZyYmIHNvdXJjZSwgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9u
YWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBGb3JjZVVzZXJHZXN0dXJlIGZv
cmNlVXNlckdlc3R1cmUpCisgICAgICAgIDogc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICAg
ICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uKQorICAgICAgICAsIGFy
Z3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShm
b3JjZVVzZXJHZXN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgc291cmNlOworICAg
IFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgT3B0aW9uYWw8QXJn
dW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNl
VXNlckdlc3R1cmU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3Vy
Y2UgPDwgcnVuQXNBc3luY0Z1bmN0aW9uIDw8IGFyZ3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJl
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxSdW5KYXZhU2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBTdHJpbmcgc291cmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNv
dXJjZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFJ1bkFz
QXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocnVuQXNBc3luY0Z1bmN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdl
c3R1cmU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IHsgV1RG
TW92ZShzb3VyY2UpLCBydW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzKSwgZm9y
Y2VVc2VyR2VzdHVyZSB9IH07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCA0MWViYjc0ZDE1MjM3MDdhZmU0NDE4ZTYzMjc3MWI4MzZkODJlN2IwLi42NmQ4NjQxYzkyNTcw
NGM4NDczZjQ5NDlmOTNlZjUyYzczNmJkMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUg
IlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTY3JpcHRE
aXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC01NjUs
MjAgKzU2NiwxMTYgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAogSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxk
LCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNj
cmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVz
ZXJHZXN0dXJlIH0pOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6
SlNWYWx1ZSB7IH07CiB9CiAKLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nl
c3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxs
b3B0KTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVy
ZUluZGljYXRvcihwYXJhbWV0ZXJzLmZvcmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVy
ZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
cmV0dXJuaW5nIGFuIGVtcHR5IEpTVmFsdWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0
YWlscy4KICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8
fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRl
SW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLnJ1bkFz
QXN5bmNGdW5jdGlvbikgeworICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpObzogeworICAg
ICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUocGFyYW1ldGVycy5zb3VyY2UsIFVSTCht
X2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJv
dmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9m
cmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlSW5X
b3JsZChzb3VyY2VDb2RlLCB3b3JsZCk7CisgICAgfQorICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0
aW9uOjpZZXM6CisgICAgICAgIHJldHVybiBjYWxsSW5Xb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMp
LCB3b3JsZCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2Fs
bEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQoreworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlv
biA9PSBSdW5Bc0FzeW5jRnVuY3Rpb246Olllcyk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuYXJn
dW1lbnRzKTsKKworICAgIGF1dG8mIHByb3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gKnByb3h5LndpbmRvdygpOworICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIG1hcmtlZEFyZ3VtZW50czsKKyAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5n
QnVpbGRlcjsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworCisgICAgLy8gQnVpbGQgdXAgYSBu
ZXcgc2NyaXB0IHN0cmluZyB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRz
LCBhbmQgZGVzZXJpYWxpemUgdGhvc2UgYXJndW1lbnRzLgorICAgIGZ1bmN0aW9uU3RyaW5nQnVp
bGRlci5hcHBlbmQoIihmdW5jdGlvbigiKTsKKyAgICBmb3IgKGF1dG8gYXJndW1lbnQgPSBwYXJh
bWV0ZXJzLmFyZ3VtZW50cy0+YmVnaW4oKTsgYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVu
dHMtPmVuZCgpOykgeworICAgICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3Vt
ZW50LT5rZXkpOworICAgICAgICBhdXRvIHNlcmlhbGl6ZWRBcmd1bWVudCA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGFyZ3VtZW50LT52YWx1ZSkp
OworCisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVj
dC52bSgpKTsKKyAgICAgICAgYXV0byBqc0FyZ3VtZW50ID0gc2VyaWFsaXplZEFyZ3VtZW50LT5k
ZXNlcmlhbGl6ZShnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAi
VW5hYmxlIHRvIGRlc2VyaWFsaXplIGFyZ3VtZW50IHRvIGV4ZWN1dGUgYXN5bmNocm9ub3VzIEph
dmFTY3JpcHQgZnVuY3Rpb24iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBtYXJrZWRBcmd1bWVudHMuYXBwZW5kKGpzQXJndW1lbnQpOworCisgICAgICAgICsrYXJn
dW1lbnQ7CisgICAgICAgIGlmIChhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5k
KCkpCisgICAgICAgICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAg
fQorCisgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7IGVycm9yTWVzc2FnZSB9KTsKKworICAgIGZ1
bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIp
OworCisgICAgYXV0byBzb3VyY2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3Ry
aW5nQnVpbGRlci50b1N0cmluZygpLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRl
eHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2Fj
aGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSB9
OworICAgIGNvbnN0IGF1dG8mIGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2Rl
KCk7CisKKyAgICBTdHJpbmcgc291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVy
bCgpOworICAgIGNvbnN0IFN0cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKKyAg
ICBtX3NvdXJjZVVSTCA9ICZzb3VyY2VVUkw7CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3Rvciht
X2ZyYW1lKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2Ny
aXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29k
ZS5zdGFydENvbHVtbigpKTsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0
aW9uRXhjZXB0aW9uOworICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0
YWlsczsKKyAgICBKU1ZhbHVlIHJldHVyblZhbHVlOworICAgIGRvIHsKKyAgICAgICAgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxP
YmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHks
IGV2YWx1YXRpb25FeGNlcHRpb24pOworCisgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9u
KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAh
ZnVuY3Rpb25PYmplY3QuaXNGdW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICAgICAgb3B0
aW9uYWxEZXRhaWxzID0geyB7ICJVbmFibGUgdG8gY3JlYXRlIEphdmFTY3JpcHQgYXN5bmMgZnVu
Y3Rpb24gdG8gY2FsbCJfcyB9IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1NTYyCisgICAgICAgIC8vIEdldHRpbmcgQ2FsbERhdGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJl
IHJlcXVpcmVkIHRvIGNhbGwgaW50byBKUy4KKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rp
b25PYmplY3QsIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKSB7CisgICAgICAgICAgICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBwcmVw
YXJlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIl9zIH0gfTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNT
dGF0ZTo6cHJvZmlsZWRDYWxsKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpP
dGhlciwgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRB
cmd1bWVudHMsIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIH0gd2hpbGUgKGZhbHNlKTsKKwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7
CisKKyAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbiAmJiAhb3B0aW9uYWxEZXRhaWxzKSB7Cisg
ICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2Ny
aXB0KCksICZkZXRhaWxzKTsKKyAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRh
aWxzKTsKKyAgICB9CisKKyAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOworCisgICAg
aWYgKG9wdGlvbmFsRGV0YWlscykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRp
b25hbERldGFpbHMpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogSlNDOjpKU1ZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSkKQEAgLTU4NywxMyArNjg0LDI3IEBAIEpTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPCiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1Zh
bHVlIHsgfTsKIH0KIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6
Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICgh
c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50
IHNjcmlwdHMgaW4gdGhpcyBkb2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwg
eyB9IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7
ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBz
ZWN1cml0eSByZWFzb25zIl9zIH0pOwogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNl
ckFnZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwg
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29y
bGQod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2
ZUZ1bmN0aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJz
KSk7CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIHJlc3VsdCBpcyBhIHRoZW5hYmxlLCBpbnN0YWxs
IHRoZSBmdWxmaWxsL3JlamVjdCBoYW5kbGVycyBpbnN0ZWFkIG9mIHJlc29sdmluZyBub3cuCisK
KyAgICByZXNvbHZlRnVuY3Rpb24ocmVzdWx0KTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVy
OjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI2
ODgxY2I3MjM5ZGY4MjcwNjhjZjhhYzhiNWYxODdjYWJjNjFkNjAuLmNjZGRjODFiODJhMzgxMzg5
ODVhZjNiMDhlOTNhNDMyYTlkNWU0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJv
bmcuaD4KQEAgLTYzLDcgKzY0LDExIEBAIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNs
YXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdl
dDsKKworZW51bSBjbGFzcyBSdW5Bc0FzeW5jRnVuY3Rpb24gOiBib29sOworCiBzdHJ1Y3QgRXhj
ZXB0aW9uRGV0YWlsczsKK3N0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIAogZW51bSBS
ZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgewogICAgIEFib3V0VG9DcmVhdGVFdmVu
dExpc3RlbmVyLApAQCAtOTEsMTEgKzk2LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lk
IGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKKyAgICB1c2lu
ZyBSZXNvbHZlRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmFsdWVPckV4Y2VwdGlvbik+
OworCiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOwogICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJX
b3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGVjdXRlQXN5bmNocm9ub3Vz
VXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmLCBSZXNvbHZlRnVuY3Rpb24mJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBib29sIHNob3VsZEFsbG93VXNlckFnZW50
U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDYsMTAgKzExNSw2IEBAIHB1YmxpYzoK
ICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAg
SlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2
YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7
Ci0KICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0
JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYm
LCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVN
b2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBh
cmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVN
b2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7
CkBAIC0xNzEsNiArMTc2LDExIEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxSZXBsYWNlV2l0aFJl
c3VsdE9mRXhlY3V0aW5nSmF2YXNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFJlcGxh
Y2VXaXRoUmVzdWx0T2ZFeGVjdXRpbmdKYXZhc2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CisgICAg
VmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERP
TVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JF
eGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJik7CisgICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JF
eGNlcHRpb24gY2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBl
cldvcmxkJik7CisgICAgCiAgICAgdm9pZCBzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRh
YmxlTW9kdWxlU2NyaXB0JiwgSlNDOjpKU0ludGVybmFsUHJvbWlzZSYsIERPTVdyYXBwZXJXb3Js
ZCYpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCmluZGV4IDVlMDY5ZDc5MTA3MmJmNTdkZGQ3M2M0M2U0
ZTFlYTkxNjczMWY1ZmEuLjA4NzVhNWVjZmZhOWM2N2U2MGMxYWY2NmM5MGM3MDk1ZmU3YmQxMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCkBAIC0xOTY5LDcgKzE5NjksNyBAQCB5
eXJlZHVjZToKICNsaW5lIDQwMiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCiAgICAgewog
ICAgICAgICAoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOwot
ICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYXRpb25QYXRoPigoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CisgICAgICAg
ICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYXRpb25QYXRoPigoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CiAgICAgO30K
ICAgICBicmVhazsKIApAQCAtMTk3OCw3ICsxOTc4LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAg
ICAgICAoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5wcmVwZW5kU3RlcChzdGQ6OnVu
aXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygyKSAtICgzKV0uc3RlcCkpKTsKICAgICAgICAgKHl5dnNw
WygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvbikgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueQppbmRleCA0ZWIyMGI5MmE1NjQ4OWUwZmZiNjA1OWUx
MWFmYTkyNmNiYTNiOTQ2Li5iNzUxYTYxYmEzZjQyMjI0MGU3YzBiZTBlNGY1ZDYxM2UyZjdhNTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CkBAIC00MDEsMTQgKzQwMSwxNCBAQCBQYXRo
RXhwcjoKICAgICBGaWx0ZXJFeHByICcvJyBSZWxhdGl2ZUxvY2F0aW9uUGF0aAogICAgIHsKICAg
ICAgICAgJDMtPnNldEFic29sdXRlKCk7Ci0gICAgICAgICQkID0gbmV3IFBhdGgoc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMp
KTsKKyAgICAgICAgJCQgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKICAgICB9CiAgICAg
fAogICAgIEZpbHRlckV4cHIgRGVzY2VuZGFudE9yU2VsZiBSZWxhdGl2ZUxvY2F0aW9uUGF0aAog
ICAgIHsKICAgICAgICAgJDMtPnByZXBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPigkMikp
OwogICAgICAgICAkMy0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgJCQgPSBuZXcgUGF0aChzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRo
PigkMykpOworICAgICAgICAkJCA9IG5ldyBYUGF0aDo6UGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oJDEpLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYXRpb25QYXRoPigkMykpOwogICAgIH0K
ICAgICA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAppbmRleCA1NGMzNGU4ODg0YzI0Y2NiODI0ZTZkMmJjZmQzNjAyNzc2ODUy
NzBlLi4xZjQzZTYzYzYxMTJlMGY2NDc2OWE0MTgzMDZjOGI0NmJiMjBkZjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBA
IC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVm
aW5lZChfX09CSkNfXykKICAgICBzdGF0aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlJiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQpOwogI2VuZGlm
CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDBjMTVmOGI5M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQx
YzU2ZmFkYmYuLmRkNzk2YjgzMzIzNTllMWMzYjFlNTU3NWZkN2EwMzM1M2NiMWZhYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0
YXRlQ2xpZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250
ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0
cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgZmFsc2UsIFdU
Rjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEko
cmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQ
SShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxp
emVkU2NyaXB0VmFsdWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQppbmRleCBhMjY3M2UyNWMxMTM0MDcx
OTEyYzIwMjhmZDdkZjIyOTY1NGFhMzhlLi42NmU4YjI3YTA5YWY4M2U1ZmJmNzEzMWQwZjFlZDdh
MThhYjQ3NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCkBAIC0yNiw3
ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVl
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+CkBAIC01OSwxMSArNjEsMTYgQEAgcHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1lcjxTaGFy
ZWRKU0NvbnRleHQ+IG1fdGltZXI7CiB9OwogCitzdGF0aWMgU2hhcmVkSlNDb250ZXh0JiBzaGFy
ZWRDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSlNDb250ZXh0
PiBzaGFyZWRDb250ZXh0OworICAgIHJldHVybiBzaGFyZWRDb250ZXh0LmdldCgpOworfQorCiBp
ZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2hhcmVkSlNDb250ZXh0PiBzaGFyZWRDb250ZXh0OwotICAgIEpTQ29udGV4dCogY29u
dGV4dCA9IHNoYXJlZENvbnRleHQuZ2V0KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTQ29udGV4
dCogY29udGV4dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1cmVDb250ZXh0KCk7CiAKICAgICBKU1Zh
bHVlUmVmIHZhbHVlUmVmID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKFtjb250
ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIGV4Y2VwdGlvbik7CiAgICAgaWYgKCF2YWx1ZVJlZikK
QEAgLTczLDQgKzgwLDIwIEBAIGlkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZh
bHVlLnRvT2JqZWN0OwogfQogCitPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IHNoYXJlZENv
bnRleHQoKS5lbnN1cmVDb250ZXh0KCk7CisgICAgSlNWYWx1ZSAqdmFsdWUgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhPYmplY3Q6b2JqZWN0IGluQ29udGV4dDpjb250ZXh0XTsKKyAgICBpZiAoIXZhbHVl
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBnbG9iYWxPYmplY3Qg
PSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgIEFTU0VSVChnbG9iYWxP
YmplY3QpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKworICAg
IGF1dG8gY29yZVZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
Kmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOwor
ICAgIHJldHVybiBjb3JlVmFsdWUtPnRvV2lyZUJ5dGVzKCk7Cit9CisKIH0gLy8gQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ZTdi
YzBjZjc2OGUxMzRlYjBmM2M5ODY2ZmMyODljZjUzNDFjOWJkLi4zODlmNGZjMzljMzU2NDlhYmU5
OTQwNGU4ZWU1ODQ3N2VmYzJjYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTgyMiwxNCArODIyLDg2IEBAIHN0YXRpYyBXS0Vycm9y
Q29kZSBjYWxsYmFja0Vycm9yQ29kZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
CiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJp
bmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5n
IGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
XTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3lu
Y0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBs
ZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAotLSAodm9pZClfZXZhbHVhdGVK
YXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZToo
Qk9PTClmb3JjZVVzZXJHZXN0dXJlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgorc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChp
ZCBhcmd1bWVudCkKK3sKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gfHwg
W2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tp
bmRPZkNsYXNzOltOU051bGwgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAgICAgICBf
X2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVP
YmplY3RzVXNpbmdCbG9jazpeKGlkIG9iamVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KG9iamVjdCkpIHsKKyAgICAgICAgICAg
ICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAg
ICAgICAgfQorICAgICAgICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisg
ICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgewor
ICAgICAgICBfX2Jsb2NrIGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBl
bnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09M
ICpzdG9wKSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQoa2V5KSB8fCAhdmFs
aWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsK
KworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5T
RGljdGlvbmFyeSAqKWFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdl
c3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRs
ZXIgY29weV0pOwogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2Ny
aXB0U3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBl
cnJvckNvZGUpIHsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcD4g
YXJndW1lbnRzTWFwOworICAgIGlmIChhc0FzeW5jRnVuY3Rpb24pCisgICAgICAgIGFyZ3VtZW50
c01hcCA9IFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwIHsgfTsKKyAgICBOU1N0cmluZyAq
ZXJyb3JNZXNzYWdlID0gbmlsOworCisgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7Cisg
ICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IG5hbWVzIG11c3QgYmUg
c3RyaW5ncyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAgICBp
ZCB2YWx1ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgICAgIGlmICghdmFs
aWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IEAiRnVu
Y3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMs
IG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU1N0cmluZywgTlNOdW1iZXIs
IE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlvbmFyeSI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIAorICAgICAgICBhdXRvIHdpcmVCeXRlcyA9IEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3QodmFsdWUpOworICAgICAgICAvLyBT
aW5jZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIGlucHV0IGRpY3Rpb25hcnkgYWJvdmUsIHdlIHNob3Vs
ZCBuZXZlciBmYWlsIHRvIHNlcmlhbGl6ZSBpdCBpbnRvIHdpcmUgYnl0ZXMuCisgICAgICAgIEFT
U0VSVCh3aXJlQnl0ZXMpOworICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksICp3aXJlQnl0
ZXMpOworICAgIH0KKworICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OmxvY2Fs
aXplZERlc2NyaXB0aW9uRm9yRXJyb3JDb2RlKFdLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2Nj
dXJyZWQpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKKyAgICAgICAgW3VzZXJJ
bmZvIHNldE9iamVjdDplcnJvck1lc3NhZ2UgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25N
ZXNzYWdlRXJyb3JLZXldOworCisgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJv
ciBhbGxvY10gaW5pdFdpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JKYXZhU2Ny
aXB0RXhjZXB0aW9uT2NjdXJyZWQgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKKyAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9y
XSB7CisgICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3Ig
KikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBlcnJvci5nZXQo
KSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfcGFnZS0+
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgamF2YVNjcmlwdFN0cmluZywgKGJvb2wpYXNBc3lu
Y0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksIChib29sKWZvcmNlVXNlckdlc3R1cmUg
fSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktp
dDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICgh
aGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTkyMyw2ICsxOTk1LDExIEBAIC0g
KHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmln
dXJhdGlvbiAqKXNuYXBzaG90Q29uCiAgICAgW3NlbGYgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRp
b246cGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07
CiB9CiAKKy0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNG
dW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMg
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiAtIChOU0RhdGEgKilf
c2Vzc2lvblN0YXRlRGF0YQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRo
ZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBlbmNvZGVyLgpAQCAtMjA2NSw3ICsyMTQyLDcgQEAgLSAo
dm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0g
KHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilq
YXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2
YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRT
dHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1
cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lk
KV91cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xp
Y2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKaW5kZXggYzMxMmM4MTg4YzBmYzA4YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2
OC4uZTEzNzkwY2JkY2NjYTk1YTIwMTJlNTQzMWI0OTZlMzVkNWJjNjc0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0zMTUsNiArMzE1LDkgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RF
ZGdlKSB7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRl
eHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkp
OwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNj
cmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRs
ZXI7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMmE0Mzk4ODAxZmFh
YTlmYzA4ZDY0MTUwYjMxOGQ2ZmYwYzM4NjM5ZS4uNjQ2ZTQ1YWRjMjgxODI4N2Y0N2QwMDM0MDU2
NzgyMmMyMTBhMTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTM2MzYsNyArMzYzNiw3IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFy
KiBzY3JpcHQsCiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCiAgICAgR1JlZlB0cjxH
VGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBj
YWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUsIFt0YXNrID0gV1RGTW92
ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoeyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUg
fSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBl
eGNlcHRpb25EZXRhaWxzOwogICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2Vw
dGlvbkRldGFpbHMgPSAqZGV0YWlsczsKQEAgLTM3MzcsNyArMzczNyw3IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3b3JsZE5hbWUpOwogCiAgICAgR1Jl
ZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxh
YmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1
ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikg
eworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoeyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUg
fSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikg
ewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAgICAgICAgIGlm
IChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwpAQCAt
Mzc3OSw3ICszNzc5LDcgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNr
KEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGcKIAogICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0
KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlf
b3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwot
ICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJv
bVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwg
dHJ1ZSwKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0
cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVh
bURhdGEpKSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZX0sCiAgICAgICAgIFt0YXNrXShBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsK
ICAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAg
ICAgIGlmIChkZXRhaWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNGE0Y2NjMjUzNGUxMGYzZDMyY2ZkODU5MGE2YmIzZGZkYTc3OTY0Zi4uODM4YjRkYTg1
MDM5YzZjMmFkZWUyM2E2ZmZhMmMxODM3M2NmM2JmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ5LDEyICszODQ5LDEyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJv
Y2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5u
aW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRz
LgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4NjUsNyArMzg2
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVz
ZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChwYXJhbWV0ZXJzLCB3
b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYWNiNzBmNTY3ZDM5OWZlYjZjZmZhZDQwY2FiNzkxZDk0MmQzZGU1ZS4u
NzdmYzA0NTg3Y2Q5OWMzNGRmZDVkZjY2YjEyN2MyYWFmZDRjNjg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50
ZXJJRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KQEAgLTEwNjIsOCArMTA2Myw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNl
Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJh
bWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBT
dHJpbmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBm
b3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIuY3BwCmluZGV4IDdiYzE4ZmZiZjZhZWMzNDQxMjg4ZmEzNjI2ZWExMmI3ODFiNmM1
YjQuLmJlMjBmMWQyOTgxNjViZmU1OTY5ZGNkNTQ3MWZhMzhlZGE0YWFiNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6Omluc3BlY3QoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9y
dCwgQ29ubmVjdGkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNj
cmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHNjcmlwdCwgZmFsc2UsCisgICAgbV9wYWdlLnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZmFsc2UgfSwgCiAgICAgICAgIFtd
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJF
eGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+bWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMThiZDY4ZDEzN2U5NjY2MTNjYjYxNTNjMjUzNjc0M2M0ODJhNzFmMS4u
MTNkNDNlZDAwOTUwNWVhMDFiNWJmMTlhMDIzNzdlZWQyZTIwNzJmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNCw2ICsyMTQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1dDbGllbnRDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+CkBAIC0zMzUyLDQ1ICszMzUzLDQ5IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6Omtl
eWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRB
Y2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtz
IDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVs
IHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0
CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgSlNMb2Nr
SG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQ7Ci0g
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwot
CiAgICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
OjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpu
b3JtYWxXb3JsZCgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29y
bGQpIHsKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNjcmlwdCwgZm9y
Y2VVc2VyR2VzdHVyZSk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8
ICF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZh
bHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEph
dmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFja0lEKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHdvcmxkID0gbWFrZVJlZigqd29ybGQp
LCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0oVmFsdWVPckV4Y2VwdGlvbiBy
ZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFJlc3VsdFZhbHVlOwogICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICBzZXJpYWxp
emVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anND
b250ZXh0Rm9yV29ybGQod29ybGQpLAorICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxk
KHdvcmxkLnB0cigpKSwKICAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCkt
PnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQudmFsdWUo
KSksIG51bGxwdHIpOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKLSAgICAgICAg
ZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSkKKyAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0
VmFsdWUtPmRhdGEoKTsKKworICAgICAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRh
aWxzOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGRldGFpbHMgPSByZXN1bHQu
ZXJyb3IoKTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Ci0gICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICB9OwogCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFp
bHMsIGNhbGxiYWNrSUQpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKyAg
ICBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdl
bnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
V1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBy
dW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdv
cmxkTmFtZSwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7
Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6
Om51bGxvcHQsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHsgc2NyaXB0
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIFdURjo6bnVsbG9wdCwg
Y2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggNzhlYTAyZWY1ZjJiMDNkM2MwZjljOWFmNzFjMzkwOWJlNDExYWU4Ny4uYjA3
Y2YxN2YxYjIyYzcxMTlmNWNiZGRkMWJhZThjMjljZjlkOWFkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIHN0cnVjdCBH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOwogc3RydWN0IEhpZ2hsaWdodDsKIHN0cnVjdCBLZXlwcmVz
c0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKK3N0cnVjdCBSdW5KYXZh
U2NyaXB0UGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVmll
d3BvcnRBcmd1bWVudHM7CiAKQEAgLTE0MzUsOCArMTQzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0
U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5n
JiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5h
bWUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25h
bDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlw
dChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNv
cmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVp
bnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYmFhZDc2ZTUwOTM3ZDY2
MWFiOTUwNjQ1MWZhNjc0NGI0NmFkNzljMS4uOWJmMjFlYzM1MWMyYmJiNTQzZjgwMWZiODU0YWYw
YThkMTE4MTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDQsNyArMjA0LDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBPcHRpb25hbDxT
dHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmluZz4gd29ybGROYW1lLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJl
cGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDhlMTNhNGFlZmIwYTVjN2FjYjRj
ZDhkNzA5MDRlOGE3YjdlYWEzLi42OTk4Mzk2YzU5ZGU3N2JhZGRmN2EyMWJhZTA2OGIwMTg3YmVm
OGUxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTktMTItMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBXS1dlYlZpZXcgU1BJIHRvIGV2YWx1YXRlIGEgZnVuY3Rpb24g
d2l0aCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1
bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKwogMjAx
OS0xMi0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gSW5wdXRNZXRob2QgQVBJIHVuaXQgdGVzdHMgZG9uJ3Qgd29yayB1bmRlciBY
MTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTBlODAwOTQ3MjdlNGUxZjI2YTBiNjFiMzQw
YjkzYzcwNTI3N2YwYy4uZmVkZmNmMjM1ZmRmOWMyMGU5ZGM2ZmU4MGE5NTViYTllMDdiNWUzMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MCw2ICsyOTAsNyBAQAogCQk1MUFGMjNERjFF
RjFBMzczMDA3MkYyODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUYyM0RFMUVGMUEzNzIwMDcyRjI4MSAv
KiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovOyB9OwogCQk1MUIxRUU5NjFDODBGQUVGMDA2NEZC
OTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAv
KiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUxQjFFRTk3MUM4MEZBRUYw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUxQzgwRkFERDAwNjRG
Qjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKKwkJNTFCNDBEOUUyM0FD
OTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNG
dW5jdGlvbi5tbSAqLzsgfTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11
bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJ
bmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRl
eGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUx
MTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCRTlFNjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLzsgfTsK
QEAgLTE4NDEsNiArMTg0Miw3IEBACiAJCTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRl
eGVkREJQZXJzaXN0ZW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUIxRUU5NDFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk1MUM4MEZBREQwMDY0RkI5
OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NTRFQjFCNEUyMzZCMDA4NUVBQTYgLyog
V2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9h
ZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0OTFDODRG
NEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRl
eGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI4MjksNiArMjgzMSw3IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1h
dGVkUmVzaXplLm1tICovLAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBh
eS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSAqLywKKwkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5jdGlv
bi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8q
IEF0dHJTdHlsZS5tbSAqLywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0Zp
bGxBdmFpbGFibGUubW0gKi8sCkBAIC00NTM2LDYgKzQ1MzksNyBAQAogCQkJCUExNzk4QjgyMjI0
MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIy
MUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFz
eW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5
NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTAxNzhjNzlmMTZiZDU3OTg2
Njc1NzM3MmY5NWM3YTUyODRkZDdmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgQmFzaWMpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEZ1bmN0
aW9uIHdpdGggbm8gcmV0dXJuIHZhbHVlLgorICAgIC8vIFJldHVybnMgSmF2YVNjcmlwdCB1bmRl
ZmluZWQgd2hpY2ggdHJhbnNsYXRlcyB0byBuaWwuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcg
b2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAIjEiIHdpdGhBcmd1bWVudHM6bmlsIGVycm9y
OiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9FUShyZXN1bHQs
IG5pbCk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGV4cGxpY2l0IG51bGwuCisgICAgLy8g
UmV0dXJucyBKYXZhU2NyaXB0IG51bGwgd2hpY2ggdHJhbnNsYXRlcyB0byBOU051bGwuCisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBu
dWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFz
c11dKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIuCisgICAgcmVzdWx0ID0g
W3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJn
dW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisKKyAgICAvLyBGdW5j
dGlvbiByZXR1cm5zIGEgc3RyaW5nLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gJzEnIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjom
ZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNFcXVhbFRvU3RyaW5nOkAiMSJdKTsKKworICAgIC8vIFRha2VzIG11bHRpcGxlIGFyZ3Vt
ZW50cy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9u
OkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAsIEAiYiIgOiBAMiB9
IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CisgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBs
ZSBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzLCBmb2xsb3dzIGphdmFzY3JpcHRzICJ0eXBl
IGFwcGVuZGluZyIgcnVsZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAInJldHVybiBmb28gKyBiYXIiIHdpdGhBcmd1bWVudHM6QHsgQCJmb28i
IDogQCJmb28iLCBAImJhciIgOiBANDIgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiZm9v
NDIiXSk7CisKKyAgICAvLyBJbnZhbGlkIEphdmFTY3JpcHQsIHNob3VsZCByZXR1cm4gYW4gZXJy
b3IuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVuciBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVD
VF9GQUxTRShlcnJvciA9PSBuaWwpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cit9CisKK1RF
U1QoQXN5bmNGdW5jdGlvbiwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gQXJndW1l
bnQga2V5cyBtdXN0IGJlIHN0cmluZ3MuCisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAxIDog
QDEgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNU
X0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICAvLyBWYWx1ZXMgY2FuIG9ubHkgYmUgTlNTdHJp
bmcsIE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIG1heSBvbmx5
IGNvbnRhaW4gdGhvc2UgNSB0eXBlcy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IFtO
U0RhdGEgZGF0YV0gfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICByZXN1bHQgPSBbd2ViVmlldyBv
YmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIDEiIHdpdGhBcmd1bWVudHM6QHsg
QCJhIiA6IEBbIEAxLCBbTlNEYXRhIGRhdGFdIF0gfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVD
VF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICAv
LyBSZWZlcmVuY2VzIGFuIGFyZ3VtZW50IHRoYXQgd2FzIG5vdCBwcm92aWRlZC4KKyAgICByZXN1
bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBi
IiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVD
VF9OVUxMKHJlc3VsdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7Cit9CisKK1RF
U1QoQXN5bmNGdW5jdGlvbiwgUm91bmRUcmlwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBUZXN0cyByb3VuZCB0
cmlwcGluZyBhIHdob2xlIGJ1bmNoIG9mIGFyZ3VtZW50IGlucHV0cyBhbmQgdmVyaWZ5aW5nIHRo
ZSByZXN1bHQuCisKKyAgICBpZCB2YWx1ZSA9IEA0MjsKKyAgICBpZCBhcmd1bWVudHMgPSBAeyBA
ImEiIDogdmFsdWUgfTsKKyAgICBpZCByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZl
cnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBp
c0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAIkZvbyI7CisgICAgYXJndW1lbnRzID0g
QHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5n
QXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjom
ZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUg
aXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRl
cnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTowXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFs
dWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9u
OkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3Vs
dF0pOworCisgICAgdmFsdWUgPSBAWyBAMSwgQDIgXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEi
IDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1
bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFs
OnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAWyBAImZvbyIsIFtOU0RhdGUgZGF0ZVdpdGhUaW1l
SW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF0gXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEi
IDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1
bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFs
OnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAeyBAImEiIDogQDEsIEAiYiIgOiBAMiB9OworICAg
IGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1
bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNU
X1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBA
ImZvbyIsIEAiYiIgOiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VE
YXRlOjBdIH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRo
QXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVl
ID0gQHsgQCJhIiA6IEB7IEAiYSIgOiBAMSB9IH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6
IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOwor
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpy
ZXN1bHRdKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oCmluZGV4IDJhZDE1ZWYyMDk0ZGVmNDI3MjlmNjAxNzA0Y2Y4NTE2NzE1NGMyNWUuLjNjYzQz
NGE1ZDI1ZTBlOGQzZDc3ZjhiOTVhZmEyZGM2OTRjMmYxN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC02Myw2ICs2Myw3IEBACiAtIChOU1N0cmluZyAq
KXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQp
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilz
Y3JpcHQ7CiAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNj
cmlwdDsKKy0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2Ny
aXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJv
ciAqKillcnJvck91dDsKIC0gKHVuc2lnbmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2ln
bmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBhYWZmMjVjZDcxNmVjYWU2Y2U2MmI1ODE3MmMzOTI5
MzUwOTIyNmVhLi43NGFkNTgxMjUwMTZjMDMxZjhjNWU0ZWRiYjk0OGUxODA1ZWI1NTBlIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0xNzgsNiArMTc4
LDI3IEBAIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6
KE5TU3RyaW5nICopc2NyaXB0CiAgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsK
IH0KIAorLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3Jp
cHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9y
ICoqKWVycm9yT3V0Cit7CisgICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7
CisgICAgaWYgKGVycm9yT3V0KQorICAgICAgICAqZXJyb3JPdXQgPSBuaWw7CisKKyAgICBSZXRh
aW5QdHI8aWQ+IGV2YWxSZXN1bHQ7CisgICAgW3NlbGYgX2NhbGxBc3luY0Z1bmN0aW9uOnNjcmlw
dCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAg
ICAgaWYgKGVycm9yT3V0KQorICAgICAgICAgICAgKmVycm9yT3V0ID0gW2Vycm9yIHJldGFpbl07
CisgICAgICAgIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CisKKyAgICBp
ZiAoZXJyb3JPdXQpCisgICAgICAgIFsqZXJyb3JPdXQgYXV0b3JlbGVhc2VdOworCisgICAgcmV0
dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAoTlNTdHJpbmcgKilzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAogewogICAgIHJldHVybiBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpzY3JpcHRdXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386461</attachid>
            <date>2019-12-27 19:05:49 -0800</date>
            <delta_ts>2019-12-29 22:11:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191227190549.patch</filename>
            <type>text/plain</type>
            <size>66544</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uZDVmNzMwYTdkMGI4ZDRjMzg4ODlhZDAxNjEzNTE0
MTYyYmYzY2YxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTI3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3MvanMvRXhjZXB0
aW9uRGV0YWlscy5oOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2Vu
dFNjcmlwdEluV29ybGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAKKyAgICAgICAgKiB4
bWwvWFBhdGhHcmFtbWFyLmNwcDoKKyAgICAgICAgKiB4bWwvWFBhdGhHcmFtbWFyLnk6CisKIDIw
MTktMTItMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gU3BlY2lhbCBjb21iaW5hdGlvbiBjaGFyYWN0ZXJzIGRvZXNuJ3Qg
cmVzcGVjdCB0aGUga2V5c3Ryb2tlIG9yZGVyIHdoZW4gaGlnaCBDUFUgbG9hZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3N2M0NmQ3ZjRmOWQ4YzU4Mjc5M2U4NmQ5YTAwYzc0ODU1MGFkODAwLi45NzJjM2EwZGY1Njgw
N2Q0MThlODlhYTg4MmFiZTAxOTI1YWM1NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisy
MDE5LTEyLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9B
UEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpzaGFyZWRDb250ZXh0KToKKyAgICAgICAgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAodmFsaWRhdGVB
cmd1bWVudCk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5
bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246d2l0aEFyZ3Vt
ZW50czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0
ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKToKKyAg
ICAgICAgKHJlc291cmNlc1N0cmVhbVJlYWRDYWxsYmFjayk6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6cnVuU2NyaXB0KToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJh
bWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMTItMjMgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgd2F0Y2hPUyBidWls
ZCBmaXggYXR0ZW1wdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOGM3ZTVjNTk0N2YwYjVjOTQzNjU5
NzRlMWVjZmZiYWRlMThhMGE3MC4uMzY2ZDlmYTZhNDkxM2Q1OWNjOWY0ZjFkNGM4ODNhYmNjNTEy
OTNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yNDAsNiArMjQwLDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBw
ZWRPYmplY3QuaAogICAgIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAogICAgIGJpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAorICAgIGJpbmRpbmdzL2pzL1J1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFt
ZURhdGEuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAogICAgIGJpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4ODk1NGU5OTA2ZjU4NjNjZWI0NTg3OGNhY2YxOWZhNjRk
NDgxOTk0Li4zOTczN2I0NzIxNGUwYzRiOTM5MzU2YTY5Y2FiZGFhZjdhYTNlZDA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NTMzLDYgKzE1MzMsNyBAQAogCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJh
c2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJBNEFDMjFCQkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAw
REYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyog
SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQTk0NzEy
M0FDMzA1MzAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4
NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2Vy
dmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJF
MzdFMDBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBT
dG9yYWdlQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAw
MTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTgzMzUsNiArODMzNiw3IEBACiAJCTUxQkE0QUM3MUJCQzVBRDYw
MERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QkE0QUM4MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZE
IC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFCQTk0NkYyM0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVG
QyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9y
YWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAw
RjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1NDAzLDYgKzI1NDA1LDcgQEAKIAkJCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQg
LyogUmVhZGFibGVTdHJlYW0uaCAqLywKIAkJCQk0MThDMzk1RTFDOEYwQUFCMDA1MUM4QTMgLyog
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJNDE4QzM5NUYxQzhG
MEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLywKKwkJ
CQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAq
LywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCAqLywKIAkJCQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmggKi8sCiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRy
b2xsZXIuY3BwICovLApAQCAtMzIxMjksNiArMzIxMzIsNyBAQAogCQkJCUU0ODYzQ0ZFMjM4NDJF
OUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTIxNjFF
N0YzRjAwQzJFNjUyIC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURB
NDE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTk0
NzEyM0FDMzA1MzAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDc2QkI4MjE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9h
cnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1
bnRpbWVfbWV0aG9kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0V4Y2VwdGlvbkRldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0V4Y2VwdGlvbkRldGFpbHMuaAppbmRleCBlODBhOTkwYTJkNzk1MmZkMGMyNjFkY2UxNTRh
YmRjZWE3M2UzYzVhLi40OTI0MTE4NTA5YTQ3MmQwM2EzOGJlNDYwZjU3Yjc3ZmZhYjRiZDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRpb25EZXRhaWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCkBAIC0z
Myw3ICszMywxMCBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1lc3Nh
Z2U7CiAgICAgaW50IGxpbmVOdW1iZXIgeyAwIH07CiAgICAgaW50IGNvbHVtbk51bWJlciB7IDAg
fTsKLSAgICBTdHJpbmcgc291cmNlVVJMOworICAgIC8vIFRoaXMgYml6YXJyZSBleHBsaWNpdCBp
bml0aWFsaXphdGlvbiBvZiBTdHJpbmcgaXMgYmVjYXVzZSBvbGRlciBjb21waWxlcnMgKGxpa2Ug
b24gSGlnaCBTaWVycmEpCisgICAgLy8gZG9uJ3QgcHJvcGVybHkgaGFuZGxlIHBhcnRpYWwgaW5p
dGlhbGl6YXRpb24gbGlzdHMgdW5sZXNzIGV2ZXJ5IHN0cnVjdCBtZW1iZXIgaGFzIGFuIGV4cGxp
Y2l0IGRlZmF1bHQgdmFsdWUuCisgICAgLy8gT25jZSB3ZSBzdG9wIGJ1aWxkaW5nIG9uIHRob3Nl
IHBsYXRmb3JtcyB3ZSBjYW4gcmVtb3ZlIHRoaXMuCisgICAgU3RyaW5nIHNvdXJjZVVSTCB7IH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGE2ZmU4
NGMwNTY5ZjlmNWVjMDYxM2EwNzkyNGVmZDMxMDEwODZlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaApAQCAtMCww
ICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFJ1bkFzQXN5bmNG
dW5jdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIEZvcmNlVXNlckdlc3R1cmUg
OiBib29sIHsgTm8sIFllcyB9OworCit1c2luZyBBcmd1bWVudFdpcmVCeXRlc01hcCA9IEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+OworCitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMgeworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNl
LCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+
IGFyZ3VtZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZShzb3Vy
Y2UpCisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbiA/IFJ1
bkFzQXN5bmNGdW5jdGlvbjo6WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpObykKKyAgICAgICAg
LCBhcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1
cmUoZm9yY2VVc2VyR2VzdHVyZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6IEZvcmNlVXNlckdl
c3R1cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhT
dHJpbmcmJiBzb3VyY2UsIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb24sIE9w
dGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVy
ZSBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCisg
ICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAg
LCBhcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1
cmUoZm9yY2VVc2VyR2VzdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIHNvdXJjZTsK
KyAgICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOworICAgIE9wdGlvbmFs
PEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgRm9yY2VVc2VyR2VzdHVyZSBm
b3JjZVVzZXJHZXN0dXJlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
c291cmNlIDw8IHJ1bkFzQXN5bmNGdW5jdGlvbiA8PCBhcmd1bWVudHMgPDwgZm9yY2VVc2VyR2Vz
dHVyZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBS
dW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOworICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJ1bkFzQXN5bmNGdW5jdGlvbikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVu
dHM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJndW1lbnRzKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVz
ZXJHZXN0dXJlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvcmNlVXNlckdlc3R1cmUp
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7
IFdURk1vdmUoc291cmNlKSwgcnVuQXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50cyks
IGZvcmNlVXNlckdlc3R1cmUgfSB9OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
aW5kZXggNDFlYmI3NGQxNTIzNzA3YWZlNDQxOGU2MzI3NzFiODM2ZDgyZTdiMC4uNjZkODY0MWM5
MjU3MDRjODQ3M2Y0OTQ5ZjkzZWY1MmM3MzZiZDAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNs
dWRlICJQbHVnaW5WaWV3QmFzZS5oIgorI2luY2x1ZGUgIlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgpAQCAt
NTY1LDIwICs1NjYsMTE2IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpCiAKIEpTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3
b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1
dGVTY3JpcHRJbldvcmxkKHdvcmxkLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9y
Y2VVc2VyR2VzdHVyZSB9KTsKICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBK
U0M6OkpTVmFsdWUgeyB9OwogfQogCi1WYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQ
cm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6
bnVsbG9wdCk7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdl
c3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNz
aW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIEZJWE1FOiBJbnN0ZWFk
IG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91bGQgcmV0dXJuIGFuIEV4Y2VwdGlv
bkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlw
dCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBldmFs
dWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAgIHN3aXRjaCAocGFyYW1ldGVycy5y
dW5Bc0FzeW5jRnVuY3Rpb24pIHsKKyAgICBjYXNlIFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm86IHsK
KyAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHBhcmFtZXRlcnMuc291cmNlLCBV
UkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRl
KG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSk7CisgICAgICAgIHJldHVybiBldmFsdWF0
ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOworICAgIH0KKyAgICBjYXNlIFJ1bkFzQXN5bmNG
dW5jdGlvbjo6WWVzOgorICAgICAgICByZXR1cm4gY2FsbEluV29ybGQoV1RGTW92ZShwYXJhbWV0
ZXJzKSwgd29ybGQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6
OmNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVu
Y3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMpOworICAgIEFTU0VSVChwYXJhbWV0ZXJz
LmFyZ3VtZW50cyk7CisKKyAgICBhdXRvJiBwcm94eSA9IGpzV2luZG93UHJveHkod29ybGQpOwor
ICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpwcm94eS53aW5kb3coKTsKKyAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBtYXJrZWRBcmd1bWVudHM7CisgICAgU3RyaW5nQnVpbGRlciBmdW5jdGlvblN0
cmluZ0J1aWxkZXI7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKworICAgIC8vIEJ1aWxkIHVw
IGEgbmV3IHNjcmlwdCBzdHJpbmcgdGhhdCBpcyBhbiBhc3luYyBmdW5jdGlvbiB3aXRoIGFyZ3Vt
ZW50cywgYW5kIGRlc2VyaWFsaXplIHRob3NlIGFyZ3VtZW50cy4KKyAgICBmdW5jdGlvblN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CisgICAgZm9yIChhdXRvIGFyZ3VtZW50ID0g
cGFyYW1ldGVycy5hcmd1bWVudHMtPmJlZ2luKCk7IGFyZ3VtZW50ICE9IHBhcmFtZXRlcnMuYXJn
dW1lbnRzLT5lbmQoKTspIHsKKyAgICAgICAgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLmFwcGVuZChh
cmd1bWVudC0+a2V5KTsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkQXJndW1lbnQgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoV1RGTW92ZShhcmd1bWVudC0+dmFs
dWUpKTsKKworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxP
YmplY3Qudm0oKSk7CisgICAgICAgIGF1dG8ganNBcmd1bWVudCA9IHNlcmlhbGl6ZWRBcmd1bWVu
dC0+ZGVzZXJpYWxpemUoZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBhcmd1bWVudCB0byBleGVjdXRlIGFzeW5jaHJvbm91
cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgbWFya2VkQXJndW1lbnRzLmFwcGVuZChqc0FyZ3VtZW50KTsKKworICAgICAgICAr
K2FyZ3VtZW50OworICAgICAgICBpZiAoYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVudHMt
PmVuZCgpKQorICAgICAgICAgICAgZnVuY3Rpb25TdHJpbmdCdWlsZGVyLmFwcGVuZCgnLCcpOwor
ICAgIH0KKworICAgIGlmICghZXJyb3JNZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyBlcnJvck1lc3NhZ2UgfSk7CisKKyAg
ICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpeyIsIHBhcmFtZXRlcnMuc291cmNlLCAi
fSkiKTsKKworICAgIGF1dG8gc291cmNlQ29kZSA9IFNjcmlwdFNvdXJjZUNvZGUgeyBmdW5jdGlv
blN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkp
LCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0s
IENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQo
KSkgfTsKKyAgICBjb25zdCBhdXRvJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNl
Q29kZSgpOworCisgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpzU291cmNlQ29kZS5wcm92aWRlcigp
LT51cmwoKTsKKyAgICBjb25zdCBTdHJpbmcqIHNhdmVkU291cmNlVVJMID0gbV9zb3VyY2VVUkw7
CisgICAgbV9zb3VyY2VVUkwgPSAmc291cmNlVVJMOworCisgICAgUmVmPEZyYW1lPiBwcm90ZWN0
b3IobV9mcmFtZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0
ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCksIHNvdXJj
ZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZh
bHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBvcHRpb25h
bERldGFpbHM7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZTsKKyAgICBkbyB7CisgICAgICAgIEpT
VmFsdWUgZnVuY3Rpb25PYmplY3QgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xv
YmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzU291cmNlQ29kZSwgJnBy
b3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKworICAgICAgICBpZiAoZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICghZnVuY3Rpb25PYmplY3Qg
fHwgIWZ1bmN0aW9uT2JqZWN0LmlzRnVuY3Rpb24od29ybGQudm0oKSkpIHsKKyAgICAgICAgICAg
IG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGFzeW5j
IGZ1bmN0aW9uIHRvIGNhbGwiX3MgfSB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTU2MgorICAgICAgICAvLyBHZXR0aW5nIENhbGxEYXRhL0NhbGxUeXBlIHNob3VsZG4n
dCBiZSByZXF1aXJlZCB0byBjYWxsIGludG8gSlMuCisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHdvcmxkLnZtKCksIGZ1
bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0geyB7ICJVbmFibGUgdG8g
cHJlcGFyZSBKYXZhU2NyaXB0IGFzeW5jIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCJfcyB9IH07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVyblZhbHVlID0gSlNF
eGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNv
bjo6T3RoZXIsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsICZwcm94eSwgbWFy
a2VkQXJndW1lbnRzLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICB9IHdoaWxlIChmYWxzZSk7
CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJh
bWUpOworCisgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24gJiYgIW9wdGlvbmFsRGV0YWlscykg
eworICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGRldGFpbHM7CisgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hl
ZFNjcmlwdCgpLCAmZGV0YWlscyk7CisgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IFdURk1vdmUo
ZGV0YWlscyk7CisgICAgfQorCisgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKKwor
ICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgq
b3B0aW9uYWxEZXRhaWxzKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9y
aW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCkBAIC01ODcsMTMgKzY4NCwyNyBAQCBKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihETwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6
SlNWYWx1ZSB7IH07CiB9CiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0dXJuIGV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIHsgc2NyaXB0LCBmYWxzZSwg
V1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOworfQorCitWYWx1ZU9yRXhjZXB0aW9u
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBp
ZiAoIXNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhkb2N1bWVudCkpCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBydW4gdXNlciBh
Z2VudCBzY3JpcHRzIGluIHRoaXMgZG9jdW1lbnQgZm9yIHNlY3VyaXR5IHJlYXNvbnMiX3MsIDAs
IDAsIHsgfSB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFp
bHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBkb2N1bWVudCBm
b3Igc2VjdXJpdHkgcmVhc29ucyJfcyB9KTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJ
bldvcmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKK30KKwordm9pZCBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJl
c29sdmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIFdURk1vdmUocGFyYW1l
dGVycykpOworCisgICAgLy8gRklYTUU6IElmIHRoZSByZXN1bHQgaXMgYSB0aGVuYWJsZSwgaW5z
dGFsbCB0aGUgZnVsZmlsbC9yZWplY3QgaGFuZGxlcnMgaW5zdGVhZCBvZiByZXNvbHZpbmcgbm93
LgorCisgICAgcmVzb2x2ZUZ1bmN0aW9uKHJlc3VsdCk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJv
bGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCAyNjg4MWNiNzIzOWRmODI3MDY4Y2Y4YWM4YjVmMTg3Y2FiYzYxZDYwLi5jY2RkYzgxYjgyYTM4
MTM4OTg1YWYzYjA4ZTkzYTQzMmE5ZDVlNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgorI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CkBAIC02Myw3ICs2NCwxMSBAQCBjbGFzcyBNb2R1bGVGZXRjaFBhcmFtZXRlcnM7
CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBX
aWRnZXQ7CisKK2VudW0gY2xhc3MgUnVuQXNBc3luY0Z1bmN0aW9uIDogYm9vbDsKKwogc3RydWN0
IEV4Y2VwdGlvbkRldGFpbHM7CitzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM7CiAKIGVu
dW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHsKICAgICBBYm91dFRvQ3JlYXRl
RXZlbnRMaXN0ZW5lciwKQEAgLTkxLDExICs5NiwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCisgICAg
dXNpbmcgUmVzb2x2ZUZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZhbHVlT3JFeGNlcHRp
b24pPjsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKICAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhlY3V0ZUFzeW5jaHJv
bm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiwgUmVzb2x2ZUZ1bmN0aW9uJiYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoRG9jdW1lbnQmKSBjb25zdDsKIApAQCAtMTA2LDEwICsxMTUsNiBAQCBwdWJs
aWM6CiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9L
IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHku
CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1Zh
bHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwot
ICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgVmFsdWVPckV4Y2VwdGlv
biBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3Js
ZCYpOwotCiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNj
cmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVy
cz4mJiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRh
YmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzPiYmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRh
YmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3Js
ZCYpOwpAQCAtMTcxLDYgKzE3NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsUmVwbGFjZVdp
dGhSZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxS
ZXBsYWNlV2l0aFJlc3VsdE9mRXhlY3V0aW5nSmF2YXNjcmlwdFVSTDsgfQogCiBwcml2YXRlOgor
ICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5h
bChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKKyAgICBWYWx1
ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBWYWx1
ZU9yRXhjZXB0aW9uIGNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIERPTVdy
YXBwZXJXb3JsZCYpOworICAgIAogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhM
b2FkYWJsZU1vZHVsZVNjcmlwdCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVy
V29ybGQmKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAppbmRleCA1ZTA2OWQ3OTEwNzJiZjU3ZGRkNzNj
NDNlNGUxZWE5MTY3MzFmNWZhLi4wODc1YTVlY2ZmYTljNjdlNjBjMWFmNjZjOTBjNzA5NWZlN2Jk
MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcApAQCAtMTk2OSw3ICsxOTY5LDcg
QEAgeXlyZWR1Y2U6CiAjbGluZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgogICAg
IHsKICAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUo
KTsKLSAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVf
cHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAg
ICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVf
cHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKQEAgLTE5NzgsNyArMTk3OCw3IEBAIHl5cmVkdWNlOgogICAgIHsK
ICAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+cHJlcGVuZFN0ZXAoc3Rk
Ojp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMikgLSAoMyldLnN0ZXApKSk7CiAgICAgICAgICh5
eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7Ci0gICAgICAgICh5
eXZhbC5leHByZXNzaW9uKSA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigo
eXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBh
dGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKKyAgICAgICAgKHl5dmFsLmV4
cHJlc3Npb24pID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigo
eXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBh
dGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKICAgICA7fQogICAgIGJyZWFr
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKaW5kZXggNGViMjBiOTJhNTY0ODllMGZmYjYw
NTllMTFhZmE5MjZjYmEzYjk0Ni4uYjc1MWE2MWJhM2Y0MjIyNDBlN2MwYmUwZTRmNWQ2MTNlMmY3
YTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueQpAQCAtNDAxLDE0ICs0MDEsMTQgQEAg
UGF0aEV4cHI6CiAgICAgRmlsdGVyRXhwciAnLycgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7
CiAgICAgICAgICQzLT5zZXRBYnNvbHV0ZSgpOwotICAgICAgICAkJCA9IG5ldyBQYXRoKHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+
KCQzKSk7CisgICAgICAgICQkID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CiAgICAgfQog
ICAgIHwKICAgICBGaWx0ZXJFeHByIERlc2NlbmRhbnRPclNlbGYgUmVsYXRpdmVMb2NhdGlvblBh
dGgKICAgICB7CiAgICAgICAgICQzLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4o
JDIpKTsKICAgICAgICAgJDMtPnNldEFic29sdXRlKCk7Ci0gICAgICAgICQkID0gbmV3IFBhdGgo
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9u
UGF0aD4oJDMpKTsKKyAgICAgICAgJCQgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKICAg
ICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNTRjMzRlODg4NGMyNGNjYjgyNGU2ZDJiY2ZkMzYwMjc3
Njg1MjcwZS4uMWY0M2U2M2M2MTEyZTBmNjQ3NjlhNDE4MzA2YzhiNDZiYjIwZGYxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IGRlZmluZWQoX19PQkpDX18pCiAgICAgc3RhdGljIGlkIGRlc2VyaWFsaXplKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gd2lyZUJ5dGVzRnJvbU5TT2JqZWN0KGlkKTsKICNl
bmRpZgogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4
NDQ0MWM1NmZhZGJmLi5kZDc5NmI4MzMyMzU5ZTFjM2IxZTU1NzVmZDdhMDMzNTNjYjFmYWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3
Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1Bh
Z2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYp
LT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIGZhbHNl
LCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRv
QVBJKHJldHVyblZhbHVlKSwgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8g
dG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXggYTI2NzNlMjVjMTEz
NDA3MTkxMmMyMDI4ZmQ3ZGYyMjk2NTRhYTM4ZS4uNjZlOGIyN2EwOWFmODNlNWZiZjcxMzFkMGYx
ZWQ3YTE4YWI0NzVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAt
MjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHQuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgpAQCAtNTksMTEgKzYxLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8
U2hhcmVkSlNDb250ZXh0PiBtX3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYg
c2hhcmVkQ29udGV4dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29u
dGV4dD4gc2hhcmVkQ29udGV4dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30K
KwogaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQq
IGNvbnRleHQgPSBzaGFyZWRDb250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0Nv
bnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAg
SlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVS
ZWYpCkBAIC03Myw0ICs4MCwyMCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVy
biB2YWx1ZS50b09iamVjdDsKIH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFy
ZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2Jq
ZWN0ID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisK
KyAgICBhdXRvIGNvcmVWYWx1ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCpnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0p
KTsKKyAgICByZXR1cm4gY29yZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
NGU3YmMwY2Y3NjhlMTM0ZWIwZjNjOTg2NmZjMjg5Y2Y1MzQxYzliZC4uMzg5ZjRmYzM5YzM1NjQ5
YWJlOTk0MDRlOGVlNTg0NzdlZmMyY2E1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4NiBAQCBzdGF0aWMgV0tF
cnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0
cmluZyBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFz
QXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1
YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1
cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQs
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1l
bnQoaWQgYXJndW1lbnQpCit7CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
IHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAg
ICAgX19ibG9jayBCT09MIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVy
YXRlT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3Ap
IHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0K
KworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
IHsKKyAgICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1l
bnQgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwg
IXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVz
ZXJHZXN0dXJlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2
YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJy
b3IgZXJyb3JDb2RlKSB7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNN
YXA+IGFyZ3VtZW50c01hcDsKKyAgICBpZiAoYXNBc3luY0Z1bmN0aW9uKQorICAgICAgICBhcmd1
bWVudHNNYXAgPSBXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcCB7IH07CisgICAgTlNTdHJp
bmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKKworICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykg
eworICAgICAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewor
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBhcmd1bWVudCBuYW1lcyBtdXN0
IGJlIHN0cmluZ3MiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTprZXldOworICAgICAgICBpZiAo
IXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBA
IkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5
cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB0eXBlczogTlNTdHJpbmcsIE5TTnVt
YmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBOU0RpY3Rpb25hcnkiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAgICAgICAg
Ly8gU2luY2Ugd2UndmUgdmFsaWRhdGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3ZlLCB3ZSBz
aG91bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgorICAgICAg
ICBBU1NFUlQod2lyZUJ5dGVzKTsKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5LCAqd2ly
ZUJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDps
b2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlv
bk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAgICAgIFt1
c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0
aW9uTWVzc2FnZUVycm9yS2V5XTsKKworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05T
RXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9ySmF2
YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVyLCBl
cnJvcl0geworICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vy
cm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3Iu
Z2V0KCkpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3Bh
Z2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IGphdmFTY3JpcHRTdHJpbmcsIChib29sKWFz
QXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHNNYXApLCAoYm9vbClmb3JjZVVzZXJHZXN0
dXJlIH0sIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBX
ZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBp
ZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE5MjMsNiArMTk5NSwxMSBA
QCAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbgogICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1
cmF0aW9uOnBkZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXJdOwogfQogCistICh2b2lkKV9jYWxsQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0Fz
eW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6
WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKwogLSAoTlNEYXRh
ICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVz
ZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5jb2Rlci4KQEAgLTIwNjUsNyArMjE0Miw3IEBA
IC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgog
CiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0
OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAo
dm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRl
UG9saWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGMzMTJjODE4OGMwZmMwOGM2OTMxODY4MWViODNmYzFhNzg3
MDkzNjguLmUxMzc5MGNiZGNjY2E5NWEyMDEyZTU0MzFiNDk2ZTM1ZDViYzY3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aApAQCAtMzE1LDYgKzMxNSw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tS
ZWN0RWRnZSkgewogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRD
b250ZXh0ICopdGV4dElucHV0RWxlbWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEz
LjApKTsKIAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25h
cHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKKy0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDJhNDM5ODgw
MWZhYWE5ZmMwOGQ2NDE1MGIzMThkNmZmMGMzODYzOWUuLjY0NmU0NWFkYzI4MTgyODdmNDdkMDAz
NDA1Njc4MjJjMjEwYTE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNjM2LDcgKzM2MzYsNyBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBn
Y2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQ
dHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJs
ZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0
cnVlIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWls
cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFp
bHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICBl
eGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zNzM3LDcgKzM3MzcsNyBAQCB2b2lkIHdl
YmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwod29ybGROYW1lKTsKIAogICAg
IEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5j
ZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCks
IHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0
cnVlIH0sIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAg
ICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsK
QEAgLTM3NzksNyArMzc3OSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJlYWRDYWxs
YmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291cmNlX29i
amVjdCh0YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9IGdfbWVt
b3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShvYmplY3Qp
KTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6
OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJlYW1EYXRh
KSksIHRydWUsCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
eyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRT
dHJlYW1EYXRhKSksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWV9LAogICAgICAgICBbdGFza10o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CiAgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAgICAg
ICAgICAgICBpZiAoZGV0YWlscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDRhNGNjYzI1MzRlMTBmM2QzMmNmZDg1OTBhNmJiM2RmZGE3Nzk2NGYuLjgzOGI0
ZGE4NTAzOWM2YzJhZGVlMjNhNmZmYTJjMTgzNzNjZjNiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0OSwxMiArMzg0OSwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5j
aFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVsbG9wdCwg
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3Js
ZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQg
cnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMg
eWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODY1LDcg
KzM4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9y
Y2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVy
cywgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGFjYjcwZjU2N2QzOTlmZWI2Y2ZmYWQ0MGNhYjc5MWQ5NDJkM2Rl
NWUuLjc3ZmMwNDU4N2NkOTljMzRkZmQ1ZGY2NmIxMjdjMmFhZmQ0YzY4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
b2ludGVySUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CkBAIC0xMDYyLDggKzEwNjMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZv
aWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNv
dXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFs
PFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSos
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZv
aWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcAppbmRleCA3YmMxOGZmYmY2YWVjMzQ0MTI4OGZhMzYyNmVhMTJiNzgx
YjZjNWI0Li5iZTIwZjFkMjk4MTY1YmZlNTk2OWRjZDU0NzFmYTM4ZWRhNGFhYjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjppbnNwZWN0KGNvbnN0IFN0cmluZyYgaG9zdEFu
ZFBvcnQsIENvbm5lY3RpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpy
dW5TY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgbV9wYWdlLnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShzY3JpcHQsIGZhbHNlLAorICAgIG1fcGFnZS5ydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH0sIAogICAgICAg
ICBbXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAg
ICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQogICAgICAgICAgICAgICAgIExPR19FUlJP
UigiRXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1l
c3NhZ2UudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDE4YmQ2OGQxMzdlOTY2NjEzY2I2MTUzYzI1MzY3NDNjNDgyYTcx
ZjEuLjEzZDQzZWQwMDk1MDVlYTAxYjViZjE5YTAyMzc3ZWVkMmUyMDcyZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTQsNiArMjE0LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29u
dHJvbGxlci5oPgpAQCAtMzM1Miw0NSArMzM1Myw0OSBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdl
OjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2Rl
PigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJv
YXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9M
aW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3Qg
T3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBk
b24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAgIEpT
TG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFtZSgpICYm
IHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCku
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQs
IGZvcmNlVXNlckdlc3R1cmUpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUo
KSB8fCAhd29ybGQpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3Jp
cHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0
ZSBKYXZhU2NyaXB0OiBQYWdlIGlzIGluIGludmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJhY2tJRCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndv
cmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRp
b24gcmVzdWx0KSB7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgc2Vy
aWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUt
PmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JX
b3JsZCh3b3JsZC5wdHIoKSksCiAgICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFt
ZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LnZh
bHVlKCkpLCBudWxscHRyKTsKICAgICAgICAgfQotICAgIH0KIAotICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKyAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChzZXJpYWxp
emVkUmVzdWx0VmFsdWUpCisgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJl
c3VsdFZhbHVlLT5kYXRhKCk7CisKKyAgICAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBkZXRhaWxzID0gcmVz
dWx0LmVycm9yKCk7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwot
ICAgIGlmICghcmVzdWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRh
UmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgfTsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBk
ZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7
CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9ub3VzVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFyYW1ldGVy
cyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3Qg
T3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0g
ICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJl
LCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1l
KCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJh
bWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwg
V1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCB7IHNj
cmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXVEY6Om51bGxv
cHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmco
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDc4ZWEwMmVmNWYyYjAzZDNjMGY5YzlhZjcxYzM5MDliZTQxMWFlODcu
LmIwN2NmMTdmMWIyMmM3MTE5ZjVjYmRkZDFiYWU4YzI5Y2Y5ZDlhZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBzdHJ1
Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1Y3QgS2V5
cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CitzdHJ1Y3QgUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0
IFZpZXdwb3J0QXJndW1lbnRzOwogCkBAIC0xNDM1LDggKzE0MzYsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAgICB2b2lk
IGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIGNvbnN0IFN0
cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29y
bGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChX
ZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXpl
LCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGJhYWQ3NmU1MDkz
N2Q2NjFhYjk1MDY0NTFmYTY3NDRiNDZhZDc5YzEuLjliZjIxZWMzNTFjMmJiYjU0M2Y4MDFmYjg1
NGFmMGE4ZDExODE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
R2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgT3B0aW9u
YWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdvcmxkTmFt
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUnVuSmF2YVNjcmlwdEluRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRm9y
Y2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTA4ZTEzYTRhZWZiMGE1Yzdh
Y2I0Y2Q4ZDcwOTA0ZThhN2I3ZWFhMy4uZjE0N2NjMjZiZTUxNzY5MTA5MjFjOTViZWNjMmRhNmI2
NDMyMGNkYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEyLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBhIGZ1bmN0
aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5
bmNGdW5jdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6ZXJyb3I6XSk6CisK
IDIwMTktMTItMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIElucHV0TWV0aG9kIEFQSSB1bml0IHRlc3RzIGRvbid0IHdvcmsgdW5k
ZXIgWDExCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwZTgwMDk0NzI3ZTRlMWYyNmEwYjYx
YjM0MGI5M2M3MDUyNzdmMGMuLmZlZGZjZjIzNWZkZjljMjBlOWRjNmZlODBhOTU1YmE5ZTA3YjVl
MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTAsNiArMjkwLDcgQEAKIAkJNTFBRjIz
REYxRUYxQTM3MzAwNzJGMjgxIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFGMjNERTFFRjFBMzcyMDA3MkYy
ODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTFCMUVFOTYxQzgwRkFFRjAw
NjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NDFDODBGQUREMDA2NEZC
OTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sICovOyB9OwogCQk1MUIxRUU5NzFDODBG
QUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk1MUM4MEZBREQw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07CisJCTUxQjQwRDlF
MjNBQzk2MjQwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFz
eW5jRnVuY3Rpb24ubW0gKi87IH07CiAJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRl
eGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVk
REJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUg
LyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKIAkJNTFCRTlFNjYyMzc2MDg5RjAw
QjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gKi87
IH07CkBAIC0xODQxLDYgKzE4NDIsNyBAQAogCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyog
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFCMUVFOTQxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTEu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJQZXJzaXN0ZW5jZS0x
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxRUU5NTFDODBGQUREMDA2
NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gIkluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDU0RUIxQjRFMjM2QjAwODVFQUE2
IC8qIFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlzaExvYWRGb3JGcmFtZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlz
aExvYWRGb3JGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNDkx
Qzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODI5LDYgKzI4MzEsNyBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBB
bmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyogQXBw
bGVQYXkubW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3QubW0gKi8sCisJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FD
QyAvKiBBdHRyU3R5bGUubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1
dG9GaWxsQXZhaWxhYmxlLm1tICovLApAQCAtNDUzNiw2ICs0NTM5LDcgQEAKIAkJCQlBMTc5OEI4
MjIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQk2M0Y2
NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQjQwRDlFMjNBQzk2MjQwMEUwNTI0MSAv
KiBBc3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0MTM4QzcyMDMyNjFDQTAw
RjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzNzYwQzRGMTIxMTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxl
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwMTc4Yzc5ZjE2YmQ1
Nzk4NjY3NTczNzJmOTVjN2E1Mjg0ZGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMCwwICsxLDE2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitURVNUKEFzeW5jRnVuY3Rpb24sIEJhc2ljKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNFcnJvciAqZXJyb3I7CisKKyAgICAvLyBG
dW5jdGlvbiB3aXRoIG5vIHJldHVybiB2YWx1ZS4KKyAgICAvLyBSZXR1cm5zIEphdmFTY3JpcHQg
dW5kZWZpbmVkIHdoaWNoIHRyYW5zbGF0ZXMgdG8gbmlsLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJW
aWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCIxIiB3aXRoQXJndW1lbnRzOm5pbCBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfRVEocmVz
dWx0LCBuaWwpOworCisgICAgLy8gRnVuY3Rpb24gcmV0dXJucyBleHBsaWNpdCBudWxsLgorICAg
IC8vIFJldHVybnMgSmF2YVNjcmlwdCBudWxsIHdoaWNoIHRyYW5zbGF0ZXMgdG8gTlNOdWxsLgor
ICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1
cm4gbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bGwg
Y2xhc3NdXSk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgbnVtYmVyLgorICAgIHJlc3Vs
dCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0
aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsK
KyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworCisgICAgLy8g
RnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RC
eUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuICcxJyIgd2l0aEFyZ3VtZW50czpuaWwgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIjEiXSk7CisKKyAgICAvLyBUYWtlcyBtdWx0aXBsZSBh
cmd1bWVudHMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwLCBAImIiIDog
QDIgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOworCisgICAgLy8gVGFrZXMgbXVs
dGlwbGUgYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcywgZm9sbG93cyBqYXZhc2NyaXB0cyAi
dHlwZSBhcHBlbmRpbmciIHJ1bGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gZm9vICsgYmFyIiB3aXRoQXJndW1lbnRzOkB7IEAi
Zm9vIiA6IEAiZm9vIiwgQCJiYXIiIDogQDQyIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpA
ImZvbzQyIl0pOworCisgICAgLy8gSW52YWxpZCBKYXZhU2NyaXB0LCBzaG91bGQgcmV0dXJuIGFu
IGVycm9yLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1bnIgbnVsbCIgd2l0aEFyZ3VtZW50czpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworfQor
CitURVNUKEFzeW5jRnVuY3Rpb24sIEludmFsaWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIEFy
Z3VtZW50IGtleXMgbXVzdCBiZSBzdHJpbmdzLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpAeyBA
MSA6IEAxIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVY
UEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgLy8gVmFsdWVzIGNhbiBvbmx5IGJlIE5T
U3RyaW5nLCBOU051bWJlciwgTlNEYXRlLCBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBtYXkg
b25seSBjb250YWluIHRob3NlIDUgdHlwZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIg
OiBbTlNEYXRhIGRhdGFdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRz
OkB7IEAiYSIgOiBAWyBAMSwgW05TRGF0YSBkYXRhXSBdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisg
ICAgLy8gUmVmZXJlbmNlcyBhbiBhcmd1bWVudCB0aGF0IHdhcyBub3QgcHJvdmlkZWQuCisgICAg
cmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBh
ICsgYiIgd2l0aEFyZ3VtZW50czpAeyBAImEiIDogQDQwIH0gZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworfQor
CitURVNUKEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJpcCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gVGVzdHMgcm91
bmQgdHJpcHBpbmcgYSB3aG9sZSBidW5jaCBvZiBhcmd1bWVudCBpbnB1dHMgYW5kIHZlcmlmeWlu
ZyB0aGUgcmVzdWx0LgorCisgICAgaWQgdmFsdWUgPSBANDI7CisgICAgaWQgYXJndW1lbnRzID0g
QHsgQCJhIiA6IHZhbHVlIH07CisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFs
dWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQCJGb28iOworICAgIGFyZ3VtZW50
cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1l
SW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6
IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOwor
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpy
ZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQDEsIEAyIF07CisgICAgYXJndW1lbnRzID0gQHsg
QCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNF
cXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQCJmb28iLCBbTlNEYXRlIGRhdGVXaXRo
VGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIF07CisgICAgYXJndW1lbnRzID0gQHsg
QCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNF
cXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEAxLCBAImIiIDogQDIgfTsK
KyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmll
dyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6
YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVY
UEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAeyBAImEi
IDogQCJmb28iLCBAImIiIDogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJl
bmNlRGF0ZTowXSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJl
c3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIg
d2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2
YWx1ZSA9IEB7IEAiYSIgOiBAeyBAImEiIDogQDEgfSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAi
YSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5j
RnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9y
XTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1
YWw6cmVzdWx0XSk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaAppbmRleCAyYWQxNWVmMjA5NGRlZjQyNzI5ZjYwMTcwNGNmODUxNjcxNTRjMjVlLi4z
Y2M0MzRhNWQyNWUwZThkM2Q3N2Y4Yjk1YWZhMmRjNjk0YzJmMTdhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjMsNiArNjMsNyBAQAogLSAoTlNTdHJp
bmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0g
KGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5n
ICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHQ7CistIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5T
RXJyb3IgKiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1
bnNpZ25lZClleHBlY3RlZENsaWVudFdpZHRoOwogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggYWFmZjI1Y2Q3MTZlY2FlNmNlNjJiNTgxNzJj
MzkyOTM1MDkyMjZlYS4uNzRhZDU4MTI1MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc4LDYg
KzE3OCwyNyBAQCAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0
dXJlOihOU1N0cmluZyAqKXNjcmlwdAogICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNl
KCk7CiB9CiAKKy0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICop
c2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNF
cnJvciAqKillcnJvck91dAoreworICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZh
bHNlOworICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgKmVycm9yT3V0ID0gbmlsOworCisgICAg
UmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OworICAgIFtzZWxmIF9jYWxsQXN5bmNGdW5jdGlvbjpz
Y3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7Cisg
ICAgICAgIGlmIChlcnJvck91dCkKKyAgICAgICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRh
aW5dOworICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOworCisg
ICAgaWYgKGVycm9yT3V0KQorICAgICAgICBbKmVycm9yT3V0IGF1dG9yZWxlYXNlXTsKKworICAg
IHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKE5TU3RyaW5nICopc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKIHsKICAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386509</attachid>
            <date>2019-12-29 22:11:06 -0800</date>
            <delta_ts>2019-12-30 08:40:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191229221106.patch</filename>
            <type>text/plain</type>
            <size>68151</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uN2IxNmM1MjY3NTA5ZWI1NjlkNTJkOTZhMjY0Mzll
NDE3NmMxOTRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEyLTI3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0
cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9FeGNl
cHRpb25EZXRhaWxzLmg6CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL1J1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIAorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICBY
UGF0aEdyYW1tYXIgY2hhbmdlcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgZnVuY3Rpb25h
bGl0eSBvZiB0aGlzIHBhdGNoLAorICAgICAgICBidXQgYmVjYXVzZSBvZiBvdXIgcG9vciAjaW5j
bHVkZSBoeWdpZW5lIHRoZXNlIHdlcmUgbmVjZXNzYXJ5IHRvIGtlZXAgbGludXhlcyBidWlsZGlu
Zy4KKyAgICAgICAgKiB4bWwvWFBhdGhHcmFtbWFyLmNwcDoKKyAgICAgICAgKiB4bWwvWFBhdGhH
cmFtbWFyLnk6CisKIDIwMTktMTItMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3BlY2lhbCBjb21iaW5hdGlvbiBjaGFy
YWN0ZXJzIGRvZXNuJ3QgcmVzcGVjdCB0aGUga2V5c3Ryb2tlIG9yZGVyIHdoZW4gaGlnaCBDUFUg
bG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3N2M0NmQ3ZjRmOWQ4YzU4Mjc5M2U4NmQ5YTAwYzc0ODU1MGFkODAw
Li40OWIzNGQwYjFkNmFmMjg2MTc4MjU5ZWM0MDZkNjk1YmQ1MWU2MDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE5LTEyLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdp
dGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnNoYXJlZENvbnRleHQp
OgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAg
ICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3Qp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0
ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6Zm9y
Y2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19ydW5famF2YXNjcmlwdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfaW5fd29ybGQpOgorICAgICAgICAocmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpydW5TY3JpcHQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxOS0xMi0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICB3YXRjaE9TIGJ1aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4Yzdl
NWM1OTQ3ZjBiNWM5NDM2NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5
ZjRmMWQ0Yzg4M2FiY2M1MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3Mv
anMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94
eS5oCiAgICAgYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisg
ICAgYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2Nl
YjQ1ODc4Y2FjZjE5ZmE2NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFm
N2FhM2VkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERG
M0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUlu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlF
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJC
QzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5
NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3
OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2Vy
dmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFF
RTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hl
ZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJ
NTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFD
OTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3
REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURB
MUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4
RjBBQUIwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywK
IAkJCQk0MThDMzk1RjFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oICovLAorCQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycy5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0
NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJ
CQkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzlCQURBMjE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OUJBREE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBS
dW5Mb29wT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdD
Mzk4MyAvKiBydW50aW1lX2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3
OTUyZmQwYzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjQ5MjQxMTg1MDlhNDcyZDAzYTM4YmU0NjBm
NTdiNzdmZmFiNGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4
Y2VwdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRp
b25EZXRhaWxzLmgKQEAgLTMzLDcgKzMzLDEwIEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsK
ICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQg
Y29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgLy8gVGhpcyBi
aXphcnJlIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIG9mIFN0cmluZyBpcyBiZWNhdXNlIG9sZGVy
IGNvbXBpbGVycyAobGlrZSBvbiBIaWdoIFNpZXJyYSkKKyAgICAvLyBkb24ndCBwcm9wZXJseSBo
YW5kbGUgcGFydGlhbCBpbml0aWFsaXphdGlvbiBsaXN0cyB1bmxlc3MgZXZlcnkgc3RydWN0IG1l
bWJlciBoYXMgYW4gZXhwbGljaXQgZGVmYXVsdCB2YWx1ZS4KKyAgICAvLyBPbmNlIHdlIHN0b3Ag
YnVpbGRpbmcgb24gdGhvc2UgcGxhdGZvcm1zIHdlIGNhbiByZW1vdmUgdGhpcy4KKyAgICBTdHJp
bmcgc291cmNlVVJMIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ3YTNmZmIwNTM3NzVjYTE0YTNjYThmMTg5YjRkNzZmYTgxN2U3YmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgUnVuQXNBc3luY0Z1bmN0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3Mg
Rm9yY2VVc2VyR2VzdHVyZSA6IGJvb2wgeyBObywgWWVzIH07CisKK3VzaW5nIEFyZ3VtZW50V2ly
ZUJ5dGVzTWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CisKK3N0cnVjdCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3Ry
aW5nJiYgc291cmNlLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBPcHRp
b25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4mJiBhcmd1bWVudHMsIEZvcmNlVXNlckdlc3R1cmUg
Zm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAg
ICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAgICwg
YXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJl
KGZvcmNlVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0
aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBydW5Bc0FzeW5jRnVu
Y3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5B
c0FzeW5jRnVuY3Rpb246Ok5vKQorICAgICAgICAsIGFyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50
cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlID8gRm9yY2VV
c2VyR2VzdHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVyZTo6Tm8pCisgICAgeworICAgIH0KKwor
ICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgYm9vbCBydW5Bc0Fz
eW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZSkp
CisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbiA/IFJ1bkFz
QXN5bmNGdW5jdGlvbjo6WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpObykKKyAgICAgICAgLCBh
cmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUo
Zm9yY2VVc2VyR2VzdHVyZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6IEZvcmNlVXNlckdlc3R1
cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgc291cmNlOworICAgIFJ1bkFzQXN5
bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJl
Qnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1
cmU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UgPDwgcnVu
QXNBc3luY0Z1bmN0aW9uIDw8IGFyZ3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJlOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBTdHJpbmcgc291cmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFJ1bkFzQXN5bmNGdW5j
dGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVu
QXNBc3luY0Z1bmN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHsgV1RGTW92ZShzb3VyY2UpLCBydW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUo
YXJndW1lbnRzKSwgZm9yY2VVc2VyR2VzdHVyZSB9IH07CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCA0MWViYjc0ZDE1MjM3MDdhZmU0NDE4ZTYzMjc3MWI4MzZkODJlN2Iw
Li4xOTYyN2FjMDQ2NjA1YjZhYzg0NTExZWJlYzM2NWMzY2Y3OGI4NGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRv
ci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNp
bmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTYgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAog
SlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
IHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAK
LVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwo
KSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNl
dCgpKSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0
ZXJzLmZvcmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6
Om51bGxvcHQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5
IEpTVmFsdWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2Rl
LCB3b3JsZCk7CisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikgewor
ICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3VyY2VD
b2RlIHNvdXJjZUNvZGUocGFyYW1ldGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCkt
PnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQ
cm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5j
aGFyc2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CisgICAgfQorICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAgICAg
IHJldHVybiBjYWxsSW5Xb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisK
K1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorewor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5jRnVu
Y3Rpb246Olllcyk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuYXJndW1lbnRzKTsKKworICAgIGF1
dG8mIHByb3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKnByb3h5LndpbmRvdygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtlZEFyZ3Vt
ZW50czsKKyAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5nQnVpbGRlcjsKKyAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlOworCisgICAgLy8gQnVpbGQgdXAgYSBuZXcgc2NyaXB0IHN0cmluZyB0
aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzLCBhbmQgZGVzZXJpYWxpemUg
dGhvc2UgYXJndW1lbnRzLgorICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIihmdW5j
dGlvbigiKTsKKyAgICBmb3IgKGF1dG8gYXJndW1lbnQgPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+
YmVnaW4oKTsgYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpOykgeworICAg
ICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3VtZW50LT5rZXkpOworICAgICAg
ICBhdXRvIHNlcmlhbGl6ZWRBcmd1bWVudCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
RnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGFyZ3VtZW50LT52YWx1ZSkpOworCisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAg
YXV0byBqc0FyZ3VtZW50ID0gc2VyaWFsaXplZEFyZ3VtZW50LT5kZXNlcmlhbGl6ZShnbG9iYWxP
YmplY3QsICZnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGFyZ3VtZW50IHRvIGV4ZWN1dGUgYXN5bmNocm9ub3VzIEphdmFTY3JpcHQgZnVuY3Rpb24i
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtYXJrZWRBcmd1bWVu
dHMuYXBwZW5kKGpzQXJndW1lbnQpOworCisgICAgICAgICsrYXJndW1lbnQ7CisgICAgICAgIGlm
IChhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5kKCkpCisgICAgICAgICAgICBm
dW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgfQorCisgICAgaWYgKCFlcnJv
ck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7IGVycm9yTWVzc2FnZSB9KTsKKworICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRl
ci5hcHBlbmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIpOworCisgICAgYXV0byBzb3Vy
Y2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6
Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSB9OworICAgIGNvbnN0IGF1dG8m
IGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CisKKyAgICBTdHJpbmcg
c291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0
cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKKyAgICBtX3NvdXJjZVVSTCA9ICZz
b3VyY2VVUkw7CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJj
ZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVtbigpKTsK
KworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKKyAgICBKU1ZhbHVl
IHJldHVyblZhbHVlOworICAgIGRvIHsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCA9
IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmls
aW5nUmVhc29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNlcHRp
b24pOworCisgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3QuaXNG
dW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0geyB7
ICJVbmFibGUgdG8gY3JlYXRlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCJfcyB9
IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCisgICAgICAgIC8v
IEdldHRpbmcgQ2FsbERhdGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwg
aW50byBKUy4KKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRh
KTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAg
ICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQgYXN5
bmMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxs
KCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25PYmpl
Y3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRp
b25FeGNlcHRpb24pOworICAgIH0gd2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbiAmJiAhb3B0aW9uYWxEZXRhaWxzKSB7CisgICAgICAgIEV4Y2VwdGlvbkRl
dGFpbHMgZGV0YWlsczsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2
YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsK
KyAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKKyAgICB9CisKKyAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOworCisgICAgaWYgKG9wdGlvbmFsRGV0YWls
cykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKQEAgLTU4NywxMyArNjg0LDI3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiAgICAgcmV0
dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGRJbnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNl
ckdlc3R1cmUgfSk7Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byYgZG9j
dW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdl
bnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBk
b2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVz
ZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9z
IH0pOwogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwot
ICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUo
cGFyYW1ldGVycykpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2
ZUZ1bmN0aW9uKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGRJbnRlcm5hbCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisKKyAgICAvLyBGSVhN
RTogSWYgdGhlIHJlc3VsdCBpcyBhIHRoZW5hYmxlLCBpbnN0YWxsIHRoZSBmdWxmaWxsL3JlamVj
dCBoYW5kbGVycyBpbnN0ZWFkIG9mIHJlc29sdmluZyBub3cuCisKKyAgICByZXNvbHZlRnVuY3Rp
b24ocmVzdWx0KTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI2ODgxY2I3MjM5ZGY4MjcwNjhj
ZjhhYzhiNWYxODdjYWJjNjFkNjAuLjAwNDlmNDZlMjJjMjE3YWE2OWRjMDZjYzA1NjI2ZDlmMmYz
MjkzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTYzLDcgKzY0
LDExIEBAIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNv
ZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdldDsKKworZW51bSBjbGFzcyBS
dW5Bc0FzeW5jRnVuY3Rpb24gOiBib29sOworCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKK3N0
cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIAogZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2Fu
RXhlY3V0ZVNjcmlwdHMgewogICAgIEFib3V0VG9DcmVhdGVFdmVudExpc3RlbmVyLApAQCAtOTEs
MTEgKzk2LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0
b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24g
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBK
U0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9
IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2Vu
dFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgUmVz
b2x2ZUZ1bmN0aW9uJiYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBw
ZXJXb3JsZCYpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1l
bnQmKSBjb25zdDsKIApAQCAtMTA2LDEwICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2lu
IGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5j
dGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3Jp
bmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBl
dmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAgdm9pZCBs
b2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmlu
ZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3JhcHBlcldv
cmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsK
ICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTcxLDYgKzE3
NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGlu
Z0phdmFzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxSZXBsYWNlV2l0aFJlc3VsdE9m
RXhlY3V0aW5nSmF2YXNjcmlwdFVSTDsgfQogCiBwcml2YXRlOgorICAgIFZhbHVlT3JFeGNlcHRp
b24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQm
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1
dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGNhbGxJ
bldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAg
IAogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlw
dCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZv
aWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLmNwcAppbmRleCA1ZTA2OWQ3OTEwNzJiZjU3ZGRkNzNjNDNlNGUxZWE5MTY3MzFmNWZh
Li4wODc1YTVlY2ZmYTljNjdlNjBjMWFmNjZjOTBjNzA5NWZlN2JkMTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLmNwcApAQCAtMTk2OSw3ICsxOTY5LDcgQEAgeXlyZWR1Y2U6CiAjbGlu
ZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgogICAgIHsKICAgICAgICAgKHl5dnNw
WygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvbikgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
QEAgLTE5NzgsNyArMTk3OCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dnNwWygz
KSAtICgzKV0ubG9jYXRpb25QYXRoKS0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+
KCh5eXZzcFsoMikgLSAoMyldLnN0ZXApKSk7CiAgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxv
Y2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7Ci0gICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9
IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAo
MyldLmxvY2F0aW9uUGF0aCkpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFhQ
YXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAo
MyldLmxvY2F0aW9uUGF0aCkpKTsKICAgICA7fQogICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkKaW5kZXggNGViMjBiOTJhNTY0ODllMGZmYjYwNTllMTFhZmE5MjZjYmEzYjk0
Ni4uYjc1MWE2MWJhM2Y0MjIyNDBlN2MwYmUwZTRmNWQ2MTNlMmY3YTU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueQpAQCAtNDAxLDE0ICs0MDEsMTQgQEAgUGF0aEV4cHI6CiAgICAgRmls
dGVyRXhwciAnLycgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7CiAgICAgICAgICQzLT5zZXRB
YnNvbHV0ZSgpOwotICAgICAgICAkJCA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CisgICAgICAgICQk
ID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6
dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CiAgICAgfQogICAgIHwKICAgICBGaWx0ZXJF
eHByIERlc2NlbmRhbnRPclNlbGYgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7CiAgICAgICAg
ICQzLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oJDIpKTsKICAgICAgICAgJDMt
PnNldEFic29sdXRlKCk7Ci0gICAgICAgICQkID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKKyAgICAg
ICAgJCQgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwg
c3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKICAgICB9CiAgICAgOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
aW5kZXggNTRjMzRlODg4NGMyNGNjYjgyNGU2ZDJiY2ZkMzYwMjc3Njg1MjcwZS4uMWY0M2U2M2M2
MTEyZTBmNjQ3NjlhNDE4MzA2YzhiNDZiYjIwZGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18p
CiAgICAgc3RhdGljIGlkIGRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gd2lyZUJ5dGVzRnJvbU5TT2JqZWN0KGlkKTsKICNlbmRpZgogCiAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmLi5kZDc5
NmI4MzMyMzU5ZTFjM2IxZTU1NzVmZDdhMDMzNTNjYjFmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2Uq
IGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVu
SmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwg
W2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFs
dWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRy
dWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0
dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwg
KGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6
Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXggYTI2NzNlMjVjMTEzNDA3MTkxMmMyMDI4ZmQ3ZGYy
Mjk2NTRhYTM4ZS4uNjZlOGIyN2EwOWFmODNlNWZiZjcxMzFkMGYxZWQ3YTE4YWI0NzVjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtMjYsNyArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0NvbnRleHQuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
SW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNTksMTEg
KzYxLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8U2hhcmVkSlNDb250ZXh0PiBt
X3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYgc2hhcmVkQ29udGV4dCgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4
dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30KKwogaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpT
Q29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRD
b250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBz
aGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVSZWYpCkBAIC03Myw0ICs4MCwy
MCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1ZS50b09iamVjdDsK
IH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJl
Q29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdG9KUyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvIGNvcmVWYWx1
ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxPYmplY3Qs
IHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKKyAgICByZXR1cm4gY29y
ZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNGU3YmMwY2Y3NjhlMTM0ZWIw
ZjNjOTg2NmZjMjg5Y2Y1MzQxYzliZC4uZGRlZjBiN2NlYzEzMjU1ZTZiZTczODE0NTcyOTlkNWU4
MzYyYWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4MSBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tF
cnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2b2lkKWV2
YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0
dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3
aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNT
dHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCit7
CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFth
cmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tp
bmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNO
dWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKFthcmd1bWVudCBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9jayBCT09MIHZh
bGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxv
Y2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlm
ICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIGlmIChbYXJndW1l
bnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9j
ayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlS2V5c0Fu
ZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAg
ICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwgIXZhbGlkYXRlQXJndW1lbnQo
dmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0
dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLSAodm9pZClfZXZh
bHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0
aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFT
Y3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9y
IGVycm9yQ29kZSkgeworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFw
PiBhcmd1bWVudHNNYXA7CisgICAgaWYgKGFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgYXJndW1l
bnRzTWFwID0gV2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXAgeyB9OworICAgIE5TU3RyaW5n
ICplcnJvck1lc3NhZ2UgPSBuaWw7CisKKyAgICBmb3IgKGlkIGtleSBpbiBhcmd1bWVudHMpIHsK
KyAgICAgICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTprZXldOworICAgICAg
ICBpZiAoIXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICBlcnJvck1lc3Nh
Z2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93
aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB0eXBlczogTlNTdHJpbmcs
IE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBOU0RpY3Rpb25hcnkiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAg
ICAgICAgLy8gU2luY2Ugd2UndmUgdmFsaWRhdGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3Zl
LCB3ZSBzaG91bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgor
ICAgICAgICBBU1NFUlQod2lyZUJ5dGVzKTsKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCAqd2lyZUJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgW3VzZXJJbmZvIHNldE9i
amVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4
Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0
RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHRO
UyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7
CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5k
bGVyLCBlcnJvcl0geworICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwg
ZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyB7IGphdmFTY3JpcHRTdHJpbmcsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3Zl
KGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
OjpFcnJvciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xOTIzLDYgKzE5OTAsMTEgQEAgLSAodm9pZClfdGFrZVBERlNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb24K
ICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpwZGZDb25maWd1cmF0aW9uIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9pZClfY2FsbEFz
eW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlv
bjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiAtIChOU0RhdGEgKilfc2Vzc2lv
blN0YXRlRGF0YQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdh
Y3kgc2Vzc2lvbiBzdGF0ZSBlbmNvZGVyLgpAQCAtMjA2NSw3ICsyMTM3LDcgQEAgLSAodm9pZClf
aXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQp
X2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlw
dFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8g
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV91cGRh
dGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggYzMxMmM4MTg4YzBmYzA4YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2OC4uOGQz
YzQ1YWI5OTZhZjM4NzEwY2M1Y2ZjZDFhNTdjNGE1NDZlYmU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTUs
NiArMzE1LDkgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7
CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0
ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAt
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKworLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0
cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1l
bnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBs
ZXRpb25IYW5kbGVyOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDJh
NDM5ODgwMWZhYWE5ZmMwOGQ2NDE1MGIzMThkNmZmMGMzODYzOWUuLjY0NmU0NWFkYzI4MTgyODdm
NDdkMDAzNDA1Njc4MjJjMjEwYTE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNjM2LDcgKzM2MzYsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAg
IEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5j
ZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIEV4Y2VwdGlv
bkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAg
ICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zNzM3LDcgKzM3MzcsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwod29ybGROYW1lKTsK
IAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmc6OmZyb21VVEY4KHNj
cmlwdCksIHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwog
ICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0
YWlsczsKQEAgLTM3NzksNyArMzc3OSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJl
YWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAKICAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291
cmNlX29iamVjdCh0YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9
IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShv
YmplY3QpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShT
dHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJl
YW1EYXRhKSksIHRydWUsCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihv
dXRwdXRTdHJlYW1EYXRhKSksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWV9LAogICAgICAgICBb
dGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CiAgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7
CiAgICAgICAgICAgICBpZiAoZGV0YWlscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDRhNGNjYzI1MzRlMTBmM2QzMmNmZDg1OTBhNmJiM2RmZGE3Nzk2NGYu
LjgzOGI0ZGE4NTAzOWM2YzJhZGVlMjNhNmZmYTJjMTgzNzNjZjNiZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0OSwxMiArMzg0OSwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1
cHBvcnQgcnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkg
bG9hZHMgeWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0z
ODY1LDcgKzM4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFy
YW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFjYjcwZjU2N2QzOTlmZWI2Y2ZmYWQ0MGNhYjc5MWQ5
NDJkM2RlNWUuLjc3ZmMwNDU4N2NkOTljMzRkZmQ1ZGY2NmIxMjdjMmFhZmQ0YzY4NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05Miw2ICs5Miw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qb2ludGVySUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVu
dS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CkBAIC0xMDYyLDggKzEwNjMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwog
ICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA3YmMxOGZmYmY2YWVjMzQ0MTI4OGZhMzYyNmVh
MTJiNzgxYjZjNWI0Li5iZTIwZjFkMjk4MTY1YmZlNTk2OWRjZDU0NzFmYTM4ZWRhNGFhYjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjppbnNwZWN0KGNvbnN0IFN0cmluZyYg
aG9zdEFuZFBvcnQsIENvbm5lY3RpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyOjpydW5TY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgbV9wYWdlLnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShzY3JpcHQsIGZhbHNlLAorICAgIG1fcGFnZS5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH0sIAog
ICAgICAgICBbXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKICAgICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFp
bHMtPm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDE4YmQ2OGQxMzdlOTY2NjEzY2I2MTUzYzI1MzY3NDNj
NDgyYTcxZjEuLjEzZDQzZWQwMDk1MDVlYTAxYjViZjE5YTAyMzc3ZWVkMmUyMDcyZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTQsNiAr
MjE0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0Q29udHJvbGxlci5oPgpAQCAtMzM1Miw0NSArMzM1Myw0OSBAQCBLZXlib2FyZFVJTW9kZSBX
ZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJk
VUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6
IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NU
YWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8g
YmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVu
ZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRpb24g
cmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFt
ZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2Ny
aXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3Jl
RnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
ZXhlY3V0ZSBKYXZhU2NyaXB0OiBQYWdlIGlzIGluIGludmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJh
Y2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXNvbHZlRnVuY3Rp
b24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VS
ZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JF
eGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAg
ICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
ZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRl
eHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCiAgICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNv
cmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVz
dWx0LnZhbHVlKCkpLCBudWxscHRyKTsKICAgICAgICAgfQotICAgIH0KIAotICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUp
Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsK
KyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChz
ZXJpYWxpemVkUmVzdWx0VmFsdWUpCisgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFs
aXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisKKyAgICAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBkZXRhaWxz
ID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRh
aWxzOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgfTsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJl
bmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9u
Vk0oKSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9u
b3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFy
YW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQobWFpbldl
YkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkg
IT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1l
LCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXVEY6
Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNT
dHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc4ZWEwMmVmNWYyYjAzZDNjMGY5YzlhZjcxYzM5MDliZTQx
MWFlODcuLmIwN2NmMTdmMWIyMmM3MTE5ZjVjYmRkZDFiYWU4YzI5Y2Y5ZDlhZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Nyw2ICsxOTcsNyBA
QCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1
Y3QgS2V5cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CitzdHJ1
Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owog
c3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogCkBAIC0xNDM1LDggKzE0MzYsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIGNv
bnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFw
c2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRt
YXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGJhYWQ3
NmU1MDkzN2Q2NjFhYjk1MDY0NTFmYTY3NDRiNDZhZDc5YzEuLjliZjIxZWMzNTFjMmJiYjU0M2Y4
MDFmYjg1NGFmMGE4ZDExODE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
T3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdv
cmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUnVuSmF2YVNjcmlw
dEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTA4ZTEzYTRhZWZi
MGE1YzdhY2I0Y2Q4ZDcwOTA0ZThhN2I3ZWFhMy4uYWNmOTBlMjcxOGVhMWQ1ZDc2NjY3NTY4ZTFj
ZWZiNTRjMzIzMjc5NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEyLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBh
IGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlz
dGVuc2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJv
cjpdKToKKwogMjAxOS0xMi0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gSW5wdXRNZXRob2QgQVBJIHVuaXQgdGVzdHMgZG9uJ3Qg
d29yayB1bmRlciBYMTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTBlODAwOTQ3MjdlNGUx
ZjI2YTBiNjFiMzQwYjkzYzcwNTI3N2YwYy4uZmVkZmNmMjM1ZmRmOWMyMGU5ZGM2ZmU4MGE5NTVi
YTllMDdiNWUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MCw2ICsyOTAsNyBAQAog
CQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUYyM0RFMUVGMUEz
NzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovOyB9OwogCQk1MUIxRUU5NjFD
ODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4MEZB
REQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUxQjFF
RTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUx
QzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKKwkJ
NTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0MEQ5RDIzQUM5NjBFMDBFMDUy
NDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsgfTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJF
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0Iw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQy
QzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1MUJFOUU2NjIz
NzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlFNjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlw
ZS5tbSAqLzsgfTsKQEAgLTE4NDEsNiArMTg0Miw3IEBACiAJCTUxQjFFRThEMUM4MEY1ODgwMDY0
RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lz
dGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNp
c3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk1MUM4
MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBc3luY0Z1
bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NTRFQjFCNEUyMzZC
MDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0Nsb3NlSW5zaWRl
RGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9jZXNz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4
MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0
MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRC
RCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBw
bGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyog
QXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlB
RjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAz
OUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8sCkBAIC00NTM2LDYgKzQ1MzksNyBAQAogCQkJ
CUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCNDBEOUUyM0FDOTYyNDAw
RTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIw
MzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0
cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBB
dHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODlhZjFm
NTVlNDFjMGJiNzc4NjAxZTVjMDYyN2JjZTAwMWNkZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0w
LDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgQmFzaWMpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKwor
ICAgIC8vIEZ1bmN0aW9uIHdpdGggbm8gcmV0dXJuIHZhbHVlLgorICAgIC8vIFJldHVybnMgSmF2
YVNjcmlwdCB1bmRlZmluZWQgd2hpY2ggdHJhbnNsYXRlcyB0byBuaWwuCisgICAgaWQgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAIjEiIHdpdGhBcmd1bWVu
dHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVD
VF9FUShyZXN1bHQsIG5pbCk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGV4cGxpY2l0IG51
bGwuCisgICAgLy8gUmV0dXJucyBKYXZhU2NyaXB0IG51bGwgd2hpY2ggdHJhbnNsYXRlcyB0byBO
U051bGwuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlv
bjpAInJldHVybiBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6
W05TTnVsbCBjbGFzc11dKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIuCisg
ICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVy
biAxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNs
YXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisK
KyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3
IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gJzEnIiB3aXRoQXJndW1lbnRz
Om5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiMSJdKTsKKworICAgIC8vIFRha2VzIG11
bHRpcGxlIGFyZ3VtZW50cy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAs
IEAiYiIgOiBAMiB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CisKKyAgICAvLyBU
YWtlcyBtdWx0aXBsZSBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzLCBmb2xsb3dzIGphdmFz
Y3JpcHRzICJ0eXBlIGFwcGVuZGluZyIgcnVsZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBmb28gKyBiYXIiIHdpdGhBcmd1bWVu
dHM6QHsgQCJmb28iIDogQCJmb28iLCBAImJhciIgOiBANDIgfSBlcnJvcjomZXJyb3JdOworICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
U3RyaW5nOkAiZm9vNDIiXSk7CisKKyAgICAvLyBJbnZhbGlkIEphdmFTY3JpcHQsIHNob3VsZCBy
ZXR1cm4gYW4gZXJyb3IuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVuciBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3Jd
OworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisg
ICAgLy8gQXJndW1lbnQga2V5cyBtdXN0IGJlIHN0cmluZ3MuCisgICAgaWQgcmVzdWx0ID0gW3dl
YlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1l
bnRzOkB7IEAxIDogQDEgfSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yID09IG5pbCk7CisKKyAgICAvLyBWYWx1ZXMgY2FuIG9u
bHkgYmUgTlNTdHJpbmcsIE5TTnVtYmVyLCBOU0RhdGUsIE5TTnVsbCwgTlMoTXV0YWJsZSlBcnJh
eSwgTlMoTXV0YWJsZSlEaWN0aW9uYXJ5LCBOU051bGwsIGFuZCBtYXkgb25seSBjb250YWluIHRo
b3NlIDYgdHlwZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNG
dW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBbTlNEYXRhIGRhdGFd
IH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgIEVYUEVDVF9G
QUxTRShlcnJvciA9PSBuaWwpOworCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiAxIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBAWyBA
MSwgW05TRGF0YSBkYXRhXSBdIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1
bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworCisgICAgLy8gUmVmZXJlbmNl
cyBhbiBhcmd1bWVudCB0aGF0IHdhcyBub3QgcHJvdmlkZWQuCisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhICsgYiIgd2l0aEFyZ3Vt
ZW50czpAeyBAImEiIDogQDQwIH0gZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1
bHQpOworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworfQorCitURVNUKEFzeW5jRnVu
Y3Rpb24sIFJvdW5kVHJpcCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OworICAgIE5TRXJyb3IgKmVycm9yOworCisgICAgLy8gVGVzdHMgcm91bmQgdHJpcHBpbmcgYSB3
aG9sZSBidW5jaCBvZiBhcmd1bWVudCBpbnB1dHMgYW5kIHZlcmlmeWluZyB0aGUgcmVzdWx0Lgor
CisgICAgaWQgdmFsdWUgPSBANDI7CisgICAgaWQgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVl
IH07CisgICAgaWQgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlv
bjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1
bHRdKTsKKworICAgIHZhbHVlID0gW05TTnVsbCBudWxsXTsKKyAgICBhcmd1bWVudHMgPSBAeyBA
ImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3lu
Y0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJv
cl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0Vx
dWFsOnJlc3VsdF0pOworCisgICAgdmFsdWUgPSBAIkZvbyI7CisgICAgYXJndW1lbnRzID0gQHsg
QCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNF
cXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZh
bFNpbmNlUmVmZXJlbmNlRGF0ZTowXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUg
fTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAi
cmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0p
OworCisgICAgdmFsdWUgPSBAWyBAMSwgQDIgXTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDog
dmFsdWUgfTsKKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0
aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07Cisg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJl
c3VsdF0pOworCisgICAgTlNNdXRhYmxlQXJyYXkgKm11dGFibGVBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdOworICAgIFttdXRhYmxlQXJyYXkgYWRkT2JqZWN0OnZhbHVlXTsK
KyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogbXV0YWJsZUFycmF5IH07CisgICAgcmVzdWx0ID0g
W3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJn
dW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICBFWFBFQ1RfVFJVRShbbXV0YWJsZUFycmF5IGlzRXF1YWw6cmVzdWx0XSk7CisgICAgW211
dGFibGVBcnJheSByZWxlYXNlXTsKKworICAgIHZhbHVlID0gQFsgQCJmb28iLCBbTlNEYXRlIGRh
dGVXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIF07CisgICAgYXJndW1lbnRz
ID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFs
dWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEAxLCBAImIiIDog
QDIgfTsKKyAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKKyAgICByZXN1bHQgPSBb
d2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhBcmd1
bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOworCisgICAgTlNNdXRhYmxl
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKm11dGFibGVEaWN0aW9uYXJ5ID0gW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBtdXRhYmxlRGljdGlvbmFyeVtAImZvbyJd
ID0gdmFsdWU7CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IG11dGFibGVEaWN0aW9uYXJ5IH07
CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJl
dHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbbXV0YWJsZURpY3Rpb25hcnkgaXNFcXVh
bDpyZXN1bHRdKTsKKyAgICBbbXV0YWJsZURpY3Rpb25hcnkgcmVsZWFzZV07CisKKyAgICB2YWx1
ZSA9IEB7IEAiYSIgOiBAImZvbyIsIEAiYiIgOiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFs
U2luY2VSZWZlcmVuY2VEYXRlOjBdIH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVl
IH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRd
KTsKKworICAgIHZhbHVlID0gQHsgQCJhIiA6IEB7IEAiYSIgOiBAMSB9IH07CisgICAgYXJndW1l
bnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlD
YWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShb
dmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDJhZDE1ZWYyMDk0ZGVmNDI3MjlmNjAxNzA0Y2Y4NTE2
NzE1NGMyNWUuLjNjYzQzNGE1ZDI1ZTBlOGQzZDc3ZjhiOTVhZmEyZGM2OTRjMmYxN2EgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC02Myw2ICs2Myw3IEBA
CiAtIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0OwogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVy
ZTooTlNTdHJpbmcgKilzY3JpcHQ7CiAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246
KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50
cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsKIC0gKHVuc2lnbmVkKXdhaXRVbnRpbENsaWVu
dFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7CiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBhYWZmMjVjZDcxNmVjYWU2
Y2U2MmI1ODE3MmMzOTI5MzUwOTIyNmVhLi43NGFkNTgxMjUwMTZjMDMxZjhjNWU0ZWRiYjk0OGUx
ODA1ZWI1NTBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1t
CkBAIC0xNzgsNiArMTc4LDI3IEBAIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRX
aXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0CiAgICAgcmV0dXJuIGV2YWxSZXN1bHQu
YXV0b3JlbGVhc2UoKTsKIH0KIAorLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjoo
TlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRz
IGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0Cit7CisgICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZh
U2NyaXB0ID0gZmFsc2U7CisgICAgaWYgKGVycm9yT3V0KQorICAgICAgICAqZXJyb3JPdXQgPSBu
aWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7CisgICAgW3NlbGYgX2NhbGxBc3lu
Y0Z1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9
IHJlc3VsdDsKKyAgICAgICAgaWYgKGVycm9yT3V0KQorICAgICAgICAgICAgKmVycm9yT3V0ID0g
W2Vycm9yIHJldGFpbl07CisgICAgICAgIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNj
cmlwdCk7CisKKyAgICBpZiAoZXJyb3JPdXQpCisgICAgICAgIFsqZXJyb3JPdXQgYXV0b3JlbGVh
c2VdOworCisgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAoTlNT
dHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAog
ewogICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386535</attachid>
            <date>2019-12-30 08:40:53 -0800</date>
            <delta_ts>2019-12-30 08:53:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191230084052.patch</filename>
            <type>text/plain</type>
            <size>67942</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uNzIwNWJhM2I3MmQ3MzNmYjE3MGUxMDRhY2UyM2Nj
MjA1MWM2ZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEyLTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0
cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9FeGNl
cHRpb25EZXRhaWxzLmg6CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL1J1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIAorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICBY
UGF0aEdyYW1tYXIgY2hhbmdlcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgZnVuY3Rpb25h
bGl0eSBvZiB0aGlzIHBhdGNoLAorICAgICAgICBidXQgYmVjYXVzZSBvZiBvdXIgcG9vciAjaW5j
bHVkZSBoeWdpZW5lIHRoZXNlIHdlcmUgbmVjZXNzYXJ5IHRvIGtlZXAgbGludXhlcyBidWlsZGlu
Zy4KKyAgICAgICAgKiB4bWwvWFBhdGhHcmFtbWFyLmNwcDoKKyAgICAgICAgKiB4bWwvWFBhdGhH
cmFtbWFyLnk6CisKIDIwMTktMTItMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3BlY2lhbCBjb21iaW5hdGlvbiBjaGFy
YWN0ZXJzIGRvZXNuJ3QgcmVzcGVjdCB0aGUga2V5c3Ryb2tlIG9yZGVyIHdoZW4gaGlnaCBDUFUg
bG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3N2M0NmQ3ZjRmOWQ4YzU4Mjc5M2U4NmQ5YTAwYzc0ODU1MGFkODAw
Li42NjYzYmQyYjRiMDNmZTQ3OWJhYTI2NTJlMDE4MGM4ODY2ZWI2YzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE5LTEyLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdp
dGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnNoYXJlZENvbnRleHQp
OgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAg
ICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3Qp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0
ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6Zm9y
Y2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19ydW5famF2YXNjcmlwdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfaW5fd29ybGQpOgorICAgICAgICAocmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpydW5TY3JpcHQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxOS0xMi0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICB3YXRjaE9TIGJ1aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4Yzdl
NWM1OTQ3ZjBiNWM5NDM2NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5
ZjRmMWQ0Yzg4M2FiY2M1MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3Mv
anMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94
eS5oCiAgICAgYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisg
ICAgYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2Nl
YjQ1ODc4Y2FjZjE5ZmE2NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFm
N2FhM2VkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERG
M0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUlu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlF
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJC
QzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5
NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3
OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2Vy
dmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFF
RTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hl
ZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJ
NTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFD
OTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3
REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURB
MUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4
RjBBQUIwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywK
IAkJCQk0MThDMzk1RjFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oICovLAorCQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycy5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0
NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJ
CQkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzlCQURBMjE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OUJBREE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBS
dW5Mb29wT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdD
Mzk4MyAvKiBydW50aW1lX2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3
OTUyZmQwYzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjQ5MjQxMTg1MDlhNDcyZDAzYTM4YmU0NjBm
NTdiNzdmZmFiNGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4
Y2VwdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRp
b25EZXRhaWxzLmgKQEAgLTMzLDcgKzMzLDEwIEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsK
ICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQg
Y29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgLy8gVGhpcyBi
aXphcnJlIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIG9mIFN0cmluZyBpcyBiZWNhdXNlIG9sZGVy
IGNvbXBpbGVycyAobGlrZSBvbiBIaWdoIFNpZXJyYSkKKyAgICAvLyBkb24ndCBwcm9wZXJseSBo
YW5kbGUgcGFydGlhbCBpbml0aWFsaXphdGlvbiBsaXN0cyB1bmxlc3MgZXZlcnkgc3RydWN0IG1l
bWJlciBoYXMgYW4gZXhwbGljaXQgZGVmYXVsdCB2YWx1ZS4KKyAgICAvLyBPbmNlIHdlIHN0b3Ag
YnVpbGRpbmcgb24gdGhvc2UgcGxhdGZvcm1zIHdlIGNhbiByZW1vdmUgdGhpcy4KKyAgICBTdHJp
bmcgc291cmNlVVJMIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ3YTNmZmIwNTM3NzVjYTE0YTNjYThmMTg5YjRkNzZmYTgxN2U3YmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgUnVuQXNBc3luY0Z1bmN0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3Mg
Rm9yY2VVc2VyR2VzdHVyZSA6IGJvb2wgeyBObywgWWVzIH07CisKK3VzaW5nIEFyZ3VtZW50V2ly
ZUJ5dGVzTWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CisKK3N0cnVjdCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3Ry
aW5nJiYgc291cmNlLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBPcHRp
b25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4mJiBhcmd1bWVudHMsIEZvcmNlVXNlckdlc3R1cmUg
Zm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAg
ICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAgICwg
YXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJl
KGZvcmNlVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0
aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBydW5Bc0FzeW5jRnVu
Y3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5B
c0FzeW5jRnVuY3Rpb246Ok5vKQorICAgICAgICAsIGFyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50
cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlID8gRm9yY2VV
c2VyR2VzdHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVyZTo6Tm8pCisgICAgeworICAgIH0KKwor
ICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgYm9vbCBydW5Bc0Fz
eW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZSkp
CisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbiA/IFJ1bkFz
QXN5bmNGdW5jdGlvbjo6WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpObykKKyAgICAgICAgLCBh
cmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUo
Zm9yY2VVc2VyR2VzdHVyZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6IEZvcmNlVXNlckdlc3R1
cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgc291cmNlOworICAgIFJ1bkFzQXN5
bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJl
Qnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1
cmU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UgPDwgcnVu
QXNBc3luY0Z1bmN0aW9uIDw8IGFyZ3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJlOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBTdHJpbmcgc291cmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFJ1bkFzQXN5bmNGdW5j
dGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVu
QXNBc3luY0Z1bmN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHsgV1RGTW92ZShzb3VyY2UpLCBydW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUo
YXJndW1lbnRzKSwgZm9yY2VVc2VyR2VzdHVyZSB9IH07CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCA0MWViYjc0ZDE1MjM3MDdhZmU0NDE4ZTYzMjc3MWI4MzZkODJlN2Iw
Li4xOTYyN2FjMDQ2NjA1YjZhYzg0NTExZWJlYzM2NWMzY2Y3OGI4NGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRv
ci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNp
bmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTYgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAog
SlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
IHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAK
LVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwo
KSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNl
dCgpKSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0
ZXJzLmZvcmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6
Om51bGxvcHQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5
IEpTVmFsdWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2Rl
LCB3b3JsZCk7CisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikgewor
ICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3VyY2VD
b2RlIHNvdXJjZUNvZGUocGFyYW1ldGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCkt
PnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQ
cm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5j
aGFyc2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CisgICAgfQorICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAgICAg
IHJldHVybiBjYWxsSW5Xb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisK
K1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorewor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5jRnVu
Y3Rpb246Olllcyk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuYXJndW1lbnRzKTsKKworICAgIGF1
dG8mIHByb3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKnByb3h5LndpbmRvdygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtlZEFyZ3Vt
ZW50czsKKyAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5nQnVpbGRlcjsKKyAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlOworCisgICAgLy8gQnVpbGQgdXAgYSBuZXcgc2NyaXB0IHN0cmluZyB0
aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzLCBhbmQgZGVzZXJpYWxpemUg
dGhvc2UgYXJndW1lbnRzLgorICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIihmdW5j
dGlvbigiKTsKKyAgICBmb3IgKGF1dG8gYXJndW1lbnQgPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+
YmVnaW4oKTsgYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpOykgeworICAg
ICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3VtZW50LT5rZXkpOworICAgICAg
ICBhdXRvIHNlcmlhbGl6ZWRBcmd1bWVudCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
RnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGFyZ3VtZW50LT52YWx1ZSkpOworCisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAg
YXV0byBqc0FyZ3VtZW50ID0gc2VyaWFsaXplZEFyZ3VtZW50LT5kZXNlcmlhbGl6ZShnbG9iYWxP
YmplY3QsICZnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGFyZ3VtZW50IHRvIGV4ZWN1dGUgYXN5bmNocm9ub3VzIEphdmFTY3JpcHQgZnVuY3Rpb24i
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtYXJrZWRBcmd1bWVu
dHMuYXBwZW5kKGpzQXJndW1lbnQpOworCisgICAgICAgICsrYXJndW1lbnQ7CisgICAgICAgIGlm
IChhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5kKCkpCisgICAgICAgICAgICBm
dW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgfQorCisgICAgaWYgKCFlcnJv
ck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7IGVycm9yTWVzc2FnZSB9KTsKKworICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRl
ci5hcHBlbmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIpOworCisgICAgYXV0byBzb3Vy
Y2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6
Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSB9OworICAgIGNvbnN0IGF1dG8m
IGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CisKKyAgICBTdHJpbmcg
c291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0
cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKKyAgICBtX3NvdXJjZVVSTCA9ICZz
b3VyY2VVUkw7CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJj
ZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVtbigpKTsK
KworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKKyAgICBKU1ZhbHVl
IHJldHVyblZhbHVlOworICAgIGRvIHsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCA9
IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmls
aW5nUmVhc29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNlcHRp
b24pOworCisgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3QuaXNG
dW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0geyB7
ICJVbmFibGUgdG8gY3JlYXRlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCJfcyB9
IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCisgICAgICAgIC8v
IEdldHRpbmcgQ2FsbERhdGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwg
aW50byBKUy4KKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRh
KTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAg
ICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQgYXN5
bmMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxs
KCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25PYmpl
Y3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRp
b25FeGNlcHRpb24pOworICAgIH0gd2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbiAmJiAhb3B0aW9uYWxEZXRhaWxzKSB7CisgICAgICAgIEV4Y2VwdGlvbkRl
dGFpbHMgZGV0YWlsczsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2
YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsK
KyAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKKyAgICB9CisKKyAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOworCisgICAgaWYgKG9wdGlvbmFsRGV0YWls
cykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKQEAgLTU4NywxMyArNjg0LDI3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiAgICAgcmV0
dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGRJbnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNl
ckdlc3R1cmUgfSk7Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byYgZG9j
dW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdl
bnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBk
b2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVz
ZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9z
IH0pOwogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwot
ICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUo
cGFyYW1ldGVycykpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2
ZUZ1bmN0aW9uKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGRJbnRlcm5hbCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisKKyAgICAvLyBGSVhN
RTogSWYgdGhlIHJlc3VsdCBpcyBhIHRoZW5hYmxlLCBpbnN0YWxsIHRoZSBmdWxmaWxsL3JlamVj
dCBoYW5kbGVycyBpbnN0ZWFkIG9mIHJlc29sdmluZyBub3cuCisKKyAgICByZXNvbHZlRnVuY3Rp
b24ocmVzdWx0KTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI2ODgxY2I3MjM5ZGY4MjcwNjhj
ZjhhYzhiNWYxODdjYWJjNjFkNjAuLjAwNDlmNDZlMjJjMjE3YWE2OWRjMDZjYzA1NjI2ZDlmMmYz
MjkzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTYzLDcgKzY0
LDExIEBAIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNv
ZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdldDsKKworZW51bSBjbGFzcyBS
dW5Bc0FzeW5jRnVuY3Rpb24gOiBib29sOworCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKK3N0
cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIAogZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2Fu
RXhlY3V0ZVNjcmlwdHMgewogICAgIEFib3V0VG9DcmVhdGVFdmVudExpc3RlbmVyLApAQCAtOTEs
MTEgKzk2LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0
b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24g
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBK
U0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9
IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2Vu
dFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgUmVz
b2x2ZUZ1bmN0aW9uJiYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBw
ZXJXb3JsZCYpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1l
bnQmKSBjb25zdDsKIApAQCAtMTA2LDEwICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2lu
IGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5j
dGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3Jp
bmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBl
dmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAgdm9pZCBs
b2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmlu
ZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3JhcHBlcldv
cmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsK
ICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTcxLDYgKzE3
NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGlu
Z0phdmFzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxSZXBsYWNlV2l0aFJlc3VsdE9m
RXhlY3V0aW5nSmF2YXNjcmlwdFVSTDsgfQogCiBwcml2YXRlOgorICAgIFZhbHVlT3JFeGNlcHRp
b24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQm
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1
dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGNhbGxJ
bldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAg
IAogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlw
dCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZv
aWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLmNwcAppbmRleCA1ZTA2OWQ3OTEwNzJiZjU3ZGRkNzNjNDNlNGUxZWE5MTY3MzFmNWZh
Li4wODc1YTVlY2ZmYTljNjdlNjBjMWFmNjZjOTBjNzA5NWZlN2JkMTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLmNwcApAQCAtMTk2OSw3ICsxOTY5LDcgQEAgeXlyZWR1Y2U6CiAjbGlu
ZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgogICAgIHsKICAgICAgICAgKHl5dnNw
WygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvbikgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
QEAgLTE5NzgsNyArMTk3OCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dnNwWygz
KSAtICgzKV0ubG9jYXRpb25QYXRoKS0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+
KCh5eXZzcFsoMikgLSAoMyldLnN0ZXApKSk7CiAgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxv
Y2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7Ci0gICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9
IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAo
MyldLmxvY2F0aW9uUGF0aCkpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFhQ
YXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAo
MyldLmxvY2F0aW9uUGF0aCkpKTsKICAgICA7fQogICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkKaW5kZXggNGViMjBiOTJhNTY0ODllMGZmYjYwNTllMTFhZmE5MjZjYmEzYjk0
Ni4uYjc1MWE2MWJhM2Y0MjIyNDBlN2MwYmUwZTRmNWQ2MTNlMmY3YTU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueQpAQCAtNDAxLDE0ICs0MDEsMTQgQEAgUGF0aEV4cHI6CiAgICAgRmls
dGVyRXhwciAnLycgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7CiAgICAgICAgICQzLT5zZXRB
YnNvbHV0ZSgpOwotICAgICAgICAkJCA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CisgICAgICAgICQk
ID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6
dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CiAgICAgfQogICAgIHwKICAgICBGaWx0ZXJF
eHByIERlc2NlbmRhbnRPclNlbGYgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7CiAgICAgICAg
ICQzLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oJDIpKTsKICAgICAgICAgJDMt
PnNldEFic29sdXRlKCk7Ci0gICAgICAgICQkID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKKyAgICAg
ICAgJCQgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwg
c3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKICAgICB9CiAgICAgOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
aW5kZXggNTRjMzRlODg4NGMyNGNjYjgyNGU2ZDJiY2ZkMzYwMjc3Njg1MjcwZS4uMWY0M2U2M2M2
MTEyZTBmNjQ3NjlhNDE4MzA2YzhiNDZiYjIwZGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18p
CiAgICAgc3RhdGljIGlkIGRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gd2lyZUJ5dGVzRnJvbU5TT2JqZWN0KGlkKTsKICNlbmRpZgogCiAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmLi5kZDc5
NmI4MzMyMzU5ZTFjM2IxZTU1NzVmZDdhMDMzNTNjYjFmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2Uq
IGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVu
SmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwg
W2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFs
dWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRy
dWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0
dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwg
KGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6
Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXggYTI2NzNlMjVjMTEzNDA3MTkxMmMyMDI4ZmQ3ZGYy
Mjk2NTRhYTM4ZS4uNjZlOGIyN2EwOWFmODNlNWZiZjcxMzFkMGYxZWQ3YTE4YWI0NzVjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtMjYsNyArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0NvbnRleHQuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
SW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNTksMTEg
KzYxLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8U2hhcmVkSlNDb250ZXh0PiBt
X3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYgc2hhcmVkQ29udGV4dCgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4
dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30KKwogaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpT
Q29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRD
b250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBz
aGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVSZWYpCkBAIC03Myw0ICs4MCwy
MCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1ZS50b09iamVjdDsK
IH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJl
Q29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdG9KUyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvIGNvcmVWYWx1
ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxPYmplY3Qs
IHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKKyAgICByZXR1cm4gY29y
ZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNGU3YmMwY2Y3NjhlMTM0ZWIw
ZjNjOTg2NmZjMjg5Y2Y1MzQxYzliZC4uZGRlZjBiN2NlYzEzMjU1ZTZiZTczODE0NTcyOTlkNWU4
MzYyYWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4MSBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tF
cnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2b2lkKWV2
YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0
dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3
aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNT
dHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCit7
CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFth
cmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tp
bmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNO
dWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKFthcmd1bWVudCBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9jayBCT09MIHZh
bGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxv
Y2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlm
ICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIGlmIChbYXJndW1l
bnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9j
ayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlS2V5c0Fu
ZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAg
ICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwgIXZhbGlkYXRlQXJndW1lbnQo
dmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0
dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLSAodm9pZClfZXZh
bHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0
aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFT
Y3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9y
IGVycm9yQ29kZSkgeworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFw
PiBhcmd1bWVudHNNYXA7CisgICAgaWYgKGFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgYXJndW1l
bnRzTWFwID0gV2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXAgeyB9OworICAgIE5TU3RyaW5n
ICplcnJvck1lc3NhZ2UgPSBuaWw7CisKKyAgICBmb3IgKGlkIGtleSBpbiBhcmd1bWVudHMpIHsK
KyAgICAgICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTprZXldOworICAgICAg
ICBpZiAoIXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICBlcnJvck1lc3Nh
Z2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93
aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB0eXBlczogTlNTdHJpbmcs
IE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBOU0RpY3Rpb25hcnkiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAg
ICAgICAgLy8gU2luY2Ugd2UndmUgdmFsaWRhdGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3Zl
LCB3ZSBzaG91bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgor
ICAgICAgICBBU1NFUlQod2lyZUJ5dGVzKTsKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCAqd2lyZUJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgW3VzZXJJbmZvIHNldE9i
amVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4
Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0
RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHRO
UyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7
CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5k
bGVyLCBlcnJvcl0geworICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwg
ZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyB7IGphdmFTY3JpcHRTdHJpbmcsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3Zl
KGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
OjpFcnJvciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xOTIzLDYgKzE5OTAsMTEgQEAgLSAodm9pZClfdGFrZVBERlNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb24K
ICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpwZGZDb25maWd1cmF0aW9uIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9pZClfY2FsbEFz
eW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlv
bjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiAtIChOU0RhdGEgKilfc2Vzc2lv
blN0YXRlRGF0YQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdh
Y3kgc2Vzc2lvbiBzdGF0ZSBlbmNvZGVyLgpAQCAtMjA2NSw3ICsyMTM3LDcgQEAgLSAodm9pZClf
aXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQp
X2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlw
dFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8g
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV91cGRh
dGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggYzMxMmM4MTg4YzBmYzA4YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2OC4uOGQz
YzQ1YWI5OTZhZjM4NzEwY2M1Y2ZjZDFhNTdjNGE1NDZlYmU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTUs
NiArMzE1LDkgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7
CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0
ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAt
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKworLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0
cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1l
bnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBs
ZXRpb25IYW5kbGVyOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDJh
NDM5ODgwMWZhYWE5ZmMwOGQ2NDE1MGIzMThkNmZmMGMzODYzOWUuLjY0NmU0NWFkYzI4MTgyODdm
NDdkMDAzNDA1Njc4MjJjMjEwYTE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNjM2LDcgKzM2MzYsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAg
IEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5j
ZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIEV4Y2VwdGlv
bkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAg
ICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zNzM3LDcgKzM3MzcsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwod29ybGROYW1lKTsK
IAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmc6OmZyb21VVEY4KHNj
cmlwdCksIHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwog
ICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0
YWlsczsKQEAgLTM3NzksNyArMzc3OSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJl
YWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAKICAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291
cmNlX29iamVjdCh0YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9
IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShv
YmplY3QpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShT
dHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJl
YW1EYXRhKSksIHRydWUsCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihv
dXRwdXRTdHJlYW1EYXRhKSksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWV9LAogICAgICAgICBb
dGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CiAgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7
CiAgICAgICAgICAgICBpZiAoZGV0YWlscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDRhNGNjYzI1MzRlMTBmM2QzMmNmZDg1OTBhNmJiM2RmZGE3Nzk2NGYu
LjgzOGI0ZGE4NTAzOWM2YzJhZGVlMjNhNmZmYTJjMTgzNzNjZjNiZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0OSwxMiArMzg0OSwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1
cHBvcnQgcnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkg
bG9hZHMgeWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0z
ODY1LDcgKzM4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFy
YW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFjYjcwZjU2N2QzOTlmZWI2Y2ZmYWQ0MGNhYjc5MWQ5
NDJkM2RlNWUuLjc3ZmMwNDU4N2NkOTljMzRkZmQ1ZGY2NmIxMjdjMmFhZmQ0YzY4NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05Miw2ICs5Miw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qb2ludGVySUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVu
dS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CkBAIC0xMDYyLDggKzEwNjMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwog
ICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA3YmMxOGZmYmY2YWVjMzQ0MTI4OGZhMzYyNmVh
MTJiNzgxYjZjNWI0Li5iZTIwZjFkMjk4MTY1YmZlNTk2OWRjZDU0NzFmYTM4ZWRhNGFhYjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjppbnNwZWN0KGNvbnN0IFN0cmluZyYg
aG9zdEFuZFBvcnQsIENvbm5lY3RpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyOjpydW5TY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgbV9wYWdlLnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShzY3JpcHQsIGZhbHNlLAorICAgIG1fcGFnZS5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH0sIAog
ICAgICAgICBbXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKICAgICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFp
bHMtPm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDE4YmQ2OGQxMzdlOTY2NjEzY2I2MTUzYzI1MzY3NDNj
NDgyYTcxZjEuLjEzZDQzZWQwMDk1MDVlYTAxYjViZjE5YTAyMzc3ZWVkMmUyMDcyZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTQsNiAr
MjE0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0Q29udHJvbGxlci5oPgpAQCAtMzM1Miw0NSArMzM1Myw0OSBAQCBLZXlib2FyZFVJTW9kZSBX
ZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJk
VUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6
IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NU
YWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8g
YmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVu
ZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRpb24g
cmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFt
ZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2Ny
aXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3Jl
RnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
ZXhlY3V0ZSBKYXZhU2NyaXB0OiBQYWdlIGlzIGluIGludmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJh
Y2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXNvbHZlRnVuY3Rp
b24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VS
ZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JF
eGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAg
ICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
ZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRl
eHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCiAgICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNv
cmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVz
dWx0LnZhbHVlKCkpLCBudWxscHRyKTsKICAgICAgICAgfQotICAgIH0KIAotICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUp
Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsK
KyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChz
ZXJpYWxpemVkUmVzdWx0VmFsdWUpCisgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFs
aXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisKKyAgICAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBkZXRhaWxz
ID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRh
aWxzOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgfTsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJl
bmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9u
Vk0oKSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9u
b3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFy
YW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQobWFpbldl
YkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkg
IT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1l
LCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXVEY6
Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNT
dHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc4ZWEwMmVmNWYyYjAzZDNjMGY5YzlhZjcxYzM5MDliZTQx
MWFlODcuLmIwN2NmMTdmMWIyMmM3MTE5ZjVjYmRkZDFiYWU4YzI5Y2Y5ZDlhZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Nyw2ICsxOTcsNyBA
QCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1
Y3QgS2V5cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CitzdHJ1
Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owog
c3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogCkBAIC0xNDM1LDggKzE0MzYsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIGNv
bnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFw
c2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRt
YXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGJhYWQ3
NmU1MDkzN2Q2NjFhYjk1MDY0NTFmYTY3NDRiNDZhZDc5YzEuLjliZjIxZWMzNTFjMmJiYjU0M2Y4
MDFmYjg1NGFmMGE4ZDExODE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
T3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdv
cmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUnVuSmF2YVNjcmlw
dEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTA4ZTEzYTRhZWZi
MGE1YzdhY2I0Y2Q4ZDcwOTA0ZThhN2I3ZWFhMy4uYmQ3NjQxYzhmMGE5YjAyN2UwM2UyNTc2YmRi
MGE3YzAyNmYwODQyMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEyLTMwICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBh
IGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlz
dGVuc2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJv
cjpdKToKKwogMjAxOS0xMi0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gSW5wdXRNZXRob2QgQVBJIHVuaXQgdGVzdHMgZG9uJ3Qg
d29yayB1bmRlciBYMTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTBlODAwOTQ3MjdlNGUx
ZjI2YTBiNjFiMzQwYjkzYzcwNTI3N2YwYy4uZmVkZmNmMjM1ZmRmOWMyMGU5ZGM2ZmU4MGE5NTVi
YTllMDdiNWUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MCw2ICsyOTAsNyBAQAog
CQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUYyM0RFMUVGMUEz
NzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovOyB9OwogCQk1MUIxRUU5NjFD
ODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4MEZB
REQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUxQjFF
RTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUx
QzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKKwkJ
NTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0MEQ5RDIzQUM5NjBFMDBFMDUy
NDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsgfTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJF
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0Iw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQy
QzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1MUJFOUU2NjIz
NzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlFNjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlw
ZS5tbSAqLzsgfTsKQEAgLTE4NDEsNiArMTg0Miw3IEBACiAJCTUxQjFFRThEMUM4MEY1ODgwMDY0
RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lz
dGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNp
c3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk1MUM4
MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBc3luY0Z1
bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NTRFQjFCNEUyMzZC
MDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0Nsb3NlSW5zaWRl
RGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9jZXNz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4
MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0
MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRC
RCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBw
bGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyog
QXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlB
RjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAz
OUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8sCkBAIC00NTM2LDYgKzQ1MzksNyBAQAogCQkJ
CUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCNDBEOUUyM0FDOTYyNDAw
RTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIw
MzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0
cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBB
dHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2ZlOWEx
NjBjZWY2MzQwZjkwZDFhNjA4NDY4NWY2Y2MyOTQwZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0w
LDAgKzEsMTgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgQmFzaWMpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKwor
ICAgIC8vIEZ1bmN0aW9uIHdpdGggbm8gcmV0dXJuIHZhbHVlLgorICAgIC8vIFJldHVybnMgSmF2
YVNjcmlwdCB1bmRlZmluZWQgd2hpY2ggdHJhbnNsYXRlcyB0byBuaWwuCisgICAgaWQgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAIjEiIHdpdGhBcmd1bWVu
dHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVD
VF9FUShyZXN1bHQsIG5pbCk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGV4cGxpY2l0IG51
bGwuCisgICAgLy8gUmV0dXJucyBKYXZhU2NyaXB0IG51bGwgd2hpY2ggdHJhbnNsYXRlcyB0byBO
U051bGwuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlv
bjpAInJldHVybiBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6
W05TTnVsbCBjbGFzc11dKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIuCisg
ICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVy
biAxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNs
YXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisK
KyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3
IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gJzEnIiB3aXRoQXJndW1lbnRz
Om5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiMSJdKTsKKworICAgIC8vIFRha2VzIG11
bHRpcGxlIGFyZ3VtZW50cy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAs
IEAiYiIgOiBAMiB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CisKKyAgICAvLyBU
YWtlcyBtdWx0aXBsZSBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzLCBmb2xsb3dzIGphdmFz
Y3JpcHRzICJ0eXBlIGFwcGVuZGluZyIgcnVsZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBmb28gKyBiYXIiIHdpdGhBcmd1bWVu
dHM6QHsgQCJmb28iIDogQCJmb28iLCBAImJhciIgOiBANDIgfSBlcnJvcjomZXJyb3JdOworICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
U3RyaW5nOkAiZm9vNDIiXSk7CisKKyAgICAvLyBJbnZhbGlkIEphdmFTY3JpcHQsIHNob3VsZCBy
ZXR1cm4gYW4gZXJyb3IuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVuciBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3Jd
OworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisg
ICAgLy8gVmFsdWVzIGNhbiBvbmx5IGJlIE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRlLCBOU051
bGwsIE5TKE11dGFibGUpQXJyYXksIE5TKE11dGFibGUpRGljdGlvbmFyeSwgTlNOdWxsLCBhbmQg
bWF5IG9ubHkgY29udGFpbiB0aG9zZSA2IHR5cGVzLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpAeyBA
ImEiIDogW05TRGF0YSBkYXRhXSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIHJlc3VsdCA9IFt3
ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3Vt
ZW50czpAeyBAImEiIDogQFsgQDEsIFtOU0RhdGEgZGF0YV0gXSB9IGVycm9yOiZlcnJvcl07Cisg
ICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsK
KworICAgIC8vIFJlZmVyZW5jZXMgYW4gYXJndW1lbnQgdGhhdCB3YXMgbm90IHByb3ZpZGVkLgor
ICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1
cm4gYSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCB9IGVycm9yOiZlcnJvcl07Cisg
ICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsK
K30KKworVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIFRlc3Rz
IHJvdW5kIHRyaXBwaW5nIGEgd2hvbGUgYnVuY2ggb2YgYXJndW1lbnQgaW5wdXRzIGFuZCB2ZXJp
ZnlpbmcgdGhlIHJlc3VsdC4KKworICAgIGlkIHZhbHVlID0gQDQyOworICAgIGlkIGFyZ3VtZW50
cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5
Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMg
ZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUo
W3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU051bGwgbnVsbF07Cisg
ICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcg
b2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFy
Z3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBF
Q1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQCJGb28iOwor
ICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3
IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czph
cmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQ
RUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU0RhdGUg
ZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF07CisgICAgYXJndW1lbnRz
ID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJv
cjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFs
dWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQDEsIEAyIF07CisgICAgYXJn
dW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50
cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJV
RShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIE5TTXV0YWJsZUFycmF5ICptdXRhYmxl
QXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBbbXV0YWJsZUFycmF5
IGFkZE9iamVjdDp2YWx1ZV07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IG11dGFibGVBcnJh
eSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246
QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW211dGFibGVBcnJheSBpc0VxdWFs
OnJlc3VsdF0pOworICAgIFttdXRhYmxlQXJyYXkgcmVsZWFzZV07CisKKyAgICB2YWx1ZSA9IEBb
IEAiZm9vIiwgW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTow
XSBdOworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3
ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3Vt
ZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7
IEAiYSIgOiBAMSwgQCJiIiA6IEAyIH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVl
IH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpA
InJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRd
KTsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICptdXRhYmxlRGlj
dGlvbmFyeSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgbXV0YWJs
ZURpY3Rpb25hcnlbQCJmb28iXSA9IHZhbHVlOworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiBt
dXRhYmxlRGljdGlvbmFyeSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGlu
Z0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6
JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW211dGFi
bGVEaWN0aW9uYXJ5IGlzRXF1YWw6cmVzdWx0XSk7CisgICAgW211dGFibGVEaWN0aW9uYXJ5IHJl
bGVhc2VdOworCisgICAgdmFsdWUgPSBAeyBAImEiIDogQCJmb28iLCBAImIiIDogW05TRGF0ZSBk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTowXSB9OworICAgIGFyZ3VtZW50
cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAeyBAImEiIDog
QDEgfSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9
IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFy
Z3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7Cit9CisKK30KKwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCAyYWQxNWVmMjA5NGRl
ZjQyNzI5ZjYwMTcwNGNmODUxNjcxNTRjMjVlLi4zY2M0MzRhNWQyNWUwZThkM2Q3N2Y4Yjk1YWZh
MmRjNjk0YzJmMTdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aApAQCAtNjMsNiArNjMsNyBAQAogLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CistIChpZClvYmplY3RCeUNh
bGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0Rp
Y3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JPdXQ7CiAtICh1bnNp
Z25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1bnNpZ25lZClleHBlY3RlZENsaWVudFdpZHRo
OwogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5k
ZXggYWFmZjI1Y2Q3MTZlY2FlNmNlNjJiNTgxNzJjMzkyOTM1MDkyMjZlYS4uNzRhZDU4MTI1MDE2
YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc4LDYgKzE3OCwyNyBAQCAtIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdAogICAg
IHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKKy0gKGlkKW9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGlj
dGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dAoreworICAgIGJv
b2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIGlmIChlcnJvck91dCkKKyAg
ICAgICAgKmVycm9yT3V0ID0gbmlsOworCisgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0Owor
ICAgIFtzZWxmIF9jYWxsQXN5bmNGdW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIGlmIChlcnJvck91dCkKKyAgICAg
ICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRhaW5dOworICAgICAgICBpc1dhaXRpbmdGb3JK
YXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOworCisgICAgaWYgKGVycm9yT3V0KQorICAgICAgICBb
KmVycm9yT3V0IGF1dG9yZWxlYXNlXTsKKworICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxl
YXNlKCk7Cit9CisKIC0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilzY3JpcHQKIHsKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386536</attachid>
            <date>2019-12-30 08:53:50 -0800</date>
            <delta_ts>2019-12-30 12:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205239-20191230085349.patch</filename>
            <type>text/plain</type>
            <size>67945</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uNzIwNWJhM2I3MmQ3MzNmYjE3MGUxMDRhY2UyM2Nj
MjA1MWM2ZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEyLTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQ
SSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0
cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9FeGNl
cHRpb25EZXRhaWxzLmg6CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL1J1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnM6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIAorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICBY
UGF0aEdyYW1tYXIgY2hhbmdlcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgZnVuY3Rpb25h
bGl0eSBvZiB0aGlzIHBhdGNoLAorICAgICAgICBidXQgYmVjYXVzZSBvZiBvdXIgcG9vciAjaW5j
bHVkZSBoeWdpZW5lIHRoZXNlIHdlcmUgbmVjZXNzYXJ5IHRvIGtlZXAgbGludXhlcyBidWlsZGlu
Zy4KKyAgICAgICAgKiB4bWwvWFBhdGhHcmFtbWFyLmNwcDoKKyAgICAgICAgKiB4bWwvWFBhdGhH
cmFtbWFyLnk6CisKIDIwMTktMTItMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3BlY2lhbCBjb21iaW5hdGlvbiBjaGFy
YWN0ZXJzIGRvZXNuJ3QgcmVzcGVjdCB0aGUga2V5c3Ryb2tlIG9yZGVyIHdoZW4gaGlnaCBDUFUg
bG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3N2M0NmQ3ZjRmOWQ4YzU4Mjc5M2U4NmQ5YTAwYzc0ODU1MGFkODAw
Li42NjYzYmQyYjRiMDNmZTQ3OWJhYTI2NTJlMDE4MGM4ODY2ZWI2YzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE5LTEyLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBhIGZ1bmN0aW9uIHdp
dGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnNoYXJlZENvbnRleHQp
OgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAg
ICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3Qp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICh2YWxpZGF0ZUFyZ3VtZW50KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0
ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6Zm9y
Y2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19ydW5famF2YXNjcmlwdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfaW5fd29ybGQpOgorICAgICAgICAocmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpydW5TY3JpcHQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxOS0xMi0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICB3YXRjaE9TIGJ1aWxkIGZpeCBhdHRlbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4Yzdl
NWM1OTQ3ZjBiNWM5NDM2NTk3NGUxZWNmZmJhZGUxOGEwYTcwLi4zNjZkOWZhNmE0OTEzZDU5Y2M5
ZjRmMWQ0Yzg4M2FiY2M1MTI5M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI0MCw2ICsyNDAs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3Mv
anMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCiAgICAgYmluZGluZ3MvanMvSlNXaW5kb3dQcm94
eS5oCiAgICAgYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisg
ICAgYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCiAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4OTU0ZTk5MDZmNTg2M2Nl
YjQ1ODc4Y2FjZjE5ZmE2NGQ0ODE5OTQuLjM5NzM3YjQ3MjE0ZTBjNGI5MzkzNTZhNjljYWJkYWFm
N2FhM2VkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE1MzMsNiArMTUzMyw3IEBACiAJCTUxQkE0QUM0MUJCQjVDRDgwMERG
M0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUlu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlF
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJC
QzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5
NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3
OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2Vy
dmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFF
RTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hl
ZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJ
NTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJBNEFD
OTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3
REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0MDMsNiArMjU0MDUsNyBAQAogCQkJCTQxQjQ1OURB
MUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxOEMzOTVFMUM4
RjBBQUIwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywK
IAkJCQk0MThDMzk1RjFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oICovLAorCQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycy5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0
NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCkBAIC0zMjEyOSw2ICszMjEzMiw3IEBACiAJ
CQkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzlCQURBMjE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OUJBREE0MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBS
dW5Mb29wT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdD
Mzk4MyAvKiBydW50aW1lX2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRXhjZXB0aW9uRGV0YWlscy5oCmluZGV4IGU4MGE5OTBhMmQ3
OTUyZmQwYzI2MWRjZTE1NGFiZGNlYTczZTNjNWEuLjQ5MjQxMTg1MDlhNDcyZDAzYTM4YmU0NjBm
NTdiNzdmZmFiNGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0V4
Y2VwdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9FeGNlcHRp
b25EZXRhaWxzLmgKQEAgLTMzLDcgKzMzLDEwIEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsK
ICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKICAgICBpbnQg
Y29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgLy8gVGhpcyBi
aXphcnJlIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIG9mIFN0cmluZyBpcyBiZWNhdXNlIG9sZGVy
IGNvbXBpbGVycyAobGlrZSBvbiBIaWdoIFNpZXJyYSkKKyAgICAvLyBkb24ndCBwcm9wZXJseSBo
YW5kbGUgcGFydGlhbCBpbml0aWFsaXphdGlvbiBsaXN0cyB1bmxlc3MgZXZlcnkgc3RydWN0IG1l
bWJlciBoYXMgYW4gZXhwbGljaXQgZGVmYXVsdCB2YWx1ZS4KKyAgICAvLyBPbmNlIHdlIHN0b3Ag
YnVpbGRpbmcgb24gdGhvc2UgcGxhdGZvcm1zIHdlIGNhbiByZW1vdmUgdGhpcy4KKyAgICBTdHJp
bmcgc291cmNlVVJMIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ3YTNmZmIwNTM3NzVjYTE0YTNjYThmMTg5YjRkNzZmYTgxN2U3YmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgUnVuQXNBc3luY0Z1bmN0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3Mg
Rm9yY2VVc2VyR2VzdHVyZSA6IGJvb2wgeyBObywgWWVzIH07CisKK3VzaW5nIEFyZ3VtZW50V2ly
ZUJ5dGVzTWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CisKK3N0cnVjdCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3Ry
aW5nJiYgc291cmNlLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBPcHRp
b25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4mJiBhcmd1bWVudHMsIEZvcmNlVXNlckdlc3R1cmUg
Zm9yY2VVc2VyR2VzdHVyZSkKKyAgICAgICAgOiBzb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAg
ICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCisgICAgICAgICwg
YXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJl
KGZvcmNlVXNlckdlc3R1cmUpCisgICAgeworICAgIH0KKworICAgIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0
aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCisgICAgICAgIDogc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBydW5Bc0FzeW5jRnVu
Y3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5B
c0FzeW5jRnVuY3Rpb246Ok5vKQorICAgICAgICAsIGFyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50
cykpCisgICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlID8gRm9yY2VV
c2VyR2VzdHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVyZTo6Tm8pCisgICAgeworICAgIH0KKwor
ICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgYm9vbCBydW5Bc0Fz
eW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZSkp
CisgICAgICAgICwgcnVuQXNBc3luY0Z1bmN0aW9uKHJ1bkFzQXN5bmNGdW5jdGlvbiA/IFJ1bkFz
QXN5bmNGdW5jdGlvbjo6WWVzIDogUnVuQXNBc3luY0Z1bmN0aW9uOjpObykKKyAgICAgICAgLCBh
cmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQorICAgICAgICAsIGZvcmNlVXNlckdlc3R1cmUo
Zm9yY2VVc2VyR2VzdHVyZSA/IEZvcmNlVXNlckdlc3R1cmU6OlllcyA6IEZvcmNlVXNlckdlc3R1
cmU6Ok5vKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgc291cmNlOworICAgIFJ1bkFzQXN5
bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJl
Qnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1
cmU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2UgPDwgcnVu
QXNBc3luY0Z1bmN0aW9uIDw8IGFyZ3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJlOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBTdHJpbmcgc291cmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFJ1bkFzQXN5bmNGdW5j
dGlvbiBydW5Bc0FzeW5jRnVuY3Rpb247CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVu
QXNBc3luY0Z1bmN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHsgV1RGTW92ZShzb3VyY2UpLCBydW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUo
YXJndW1lbnRzKSwgZm9yY2VVc2VyR2VzdHVyZSB9IH07CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCA0MWViYjc0ZDE1MjM3MDdhZmU0NDE4ZTYzMjc3MWI4MzZkODJlN2Iw
Li4xOTYyN2FjMDQ2NjA1YjZhYzg0NTExZWJlYzM2NWMzY2Y3OGI4NGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRv
ci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNp
bmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCkBAIC01NjUsMjAgKzU2NiwxMTYgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAog
SlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
IHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAK
LVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwo
KSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNl
dCgpKSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0
ZXJzLmZvcmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6
Om51bGxvcHQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5
IEpTVmFsdWUsIHNob3VsZCByZXR1cm4gYW4gRXhjZXB0aW9uRGV0YWlscy4KICAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2Rl
LCB3b3JsZCk7CisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbikgewor
ICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpObzogeworICAgICAgICBTY3JpcHRTb3VyY2VD
b2RlIHNvdXJjZUNvZGUocGFyYW1ldGVycy5zb3VyY2UsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCkt
PnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQ
cm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5j
aGFyc2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CisgICAgfQorICAgIGNhc2UgUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXM6CisgICAgICAg
IHJldHVybiBjYWxsSW5Xb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisK
K1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorewor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5jRnVu
Y3Rpb246Olllcyk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuYXJndW1lbnRzKTsKKworICAgIGF1
dG8mIHByb3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKnByb3h5LndpbmRvdygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtlZEFyZ3Vt
ZW50czsKKyAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5nQnVpbGRlcjsKKyAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlOworCisgICAgLy8gQnVpbGQgdXAgYSBuZXcgc2NyaXB0IHN0cmluZyB0
aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzLCBhbmQgZGVzZXJpYWxpemUg
dGhvc2UgYXJndW1lbnRzLgorICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIihmdW5j
dGlvbigiKTsKKyAgICBmb3IgKGF1dG8gYXJndW1lbnQgPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+
YmVnaW4oKTsgYXJndW1lbnQgIT0gcGFyYW1ldGVycy5hcmd1bWVudHMtPmVuZCgpOykgeworICAg
ICAgICBmdW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3VtZW50LT5rZXkpOworICAgICAg
ICBhdXRvIHNlcmlhbGl6ZWRBcmd1bWVudCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
RnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGFyZ3VtZW50LT52YWx1ZSkpOworCisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAg
YXV0byBqc0FyZ3VtZW50ID0gc2VyaWFsaXplZEFyZ3VtZW50LT5kZXNlcmlhbGl6ZShnbG9iYWxP
YmplY3QsICZnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGFyZ3VtZW50IHRvIGV4ZWN1dGUgYXN5bmNocm9ub3VzIEphdmFTY3JpcHQgZnVuY3Rpb24i
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtYXJrZWRBcmd1bWVu
dHMuYXBwZW5kKGpzQXJndW1lbnQpOworCisgICAgICAgICsrYXJndW1lbnQ7CisgICAgICAgIGlm
IChhcmd1bWVudCAhPSBwYXJhbWV0ZXJzLmFyZ3VtZW50cy0+ZW5kKCkpCisgICAgICAgICAgICBm
dW5jdGlvblN0cmluZ0J1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgfQorCisgICAgaWYgKCFlcnJv
ck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7IGVycm9yTWVzc2FnZSB9KTsKKworICAgIGZ1bmN0aW9uU3RyaW5nQnVpbGRl
ci5hcHBlbmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIpOworCisgICAgYXV0byBzb3Vy
Y2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6
Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSB9OworICAgIGNvbnN0IGF1dG8m
IGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CisKKyAgICBTdHJpbmcg
c291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0
cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKKyAgICBtX3NvdXJjZVVSTCA9ICZz
b3VyY2VVUkw7CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJj
ZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSwgc291cmNlQ29kZS5zdGFydENvbHVtbigpKTsK
KworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAg
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKKyAgICBKU1ZhbHVl
IHJldHVyblZhbHVlOworICAgIGRvIHsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCA9
IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmls
aW5nUmVhc29uOjpPdGhlciwganNTb3VyY2VDb2RlLCAmcHJveHksIGV2YWx1YXRpb25FeGNlcHRp
b24pOworCisgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3QuaXNG
dW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0geyB7
ICJVbmFibGUgdG8gY3JlYXRlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCJfcyB9
IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCisgICAgICAgIC8v
IEdldHRpbmcgQ2FsbERhdGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwg
aW50byBKUy4KKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRh
KTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAg
ICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQgYXN5
bmMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIl9zIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxs
KCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25PYmpl
Y3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRp
b25FeGNlcHRpb24pOworICAgIH0gd2hpbGUgKGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CisKKyAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbiAmJiAhb3B0aW9uYWxEZXRhaWxzKSB7CisgICAgICAgIEV4Y2VwdGlvbkRl
dGFpbHMgZGV0YWlsczsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2
YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsK
KyAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RGTW92ZShkZXRhaWxzKTsKKyAgICB9CisKKyAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOworCisgICAgaWYgKG9wdGlvbmFsRGV0YWls
cykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpvcHRpb25hbERldGFpbHMpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKQEAgLTU4NywxMyArNjg0LDI3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiAgICAgcmV0
dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGRJbnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNl
ckdlc3R1cmUgfSk7Cit9CisKK1ZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byYgZG9j
dW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdl
bnRTY3JpcHRzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgaW4gdGhpcyBk
b2N1bWVudCBmb3Igc2VjdXJpdHkgcmVhc29ucyJfcywgMCwgMCwgeyB9IH0pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVz
ZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9z
IH0pOwogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwot
ICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUo
cGFyYW1ldGVycykpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0aW9uJiYgcmVzb2x2
ZUZ1bmN0aW9uKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGRJbnRlcm5hbCh3b3JsZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisKKyAgICAvLyBGSVhN
RTogSWYgdGhlIHJlc3VsdCBpcyBhIHRoZW5hYmxlLCBpbnN0YWxsIHRoZSBmdWxmaWxsL3JlamVj
dCBoYW5kbGVycyBpbnN0ZWFkIG9mIHJlc29sdmluZyBub3cuCisKKyAgICByZXNvbHZlRnVuY3Rp
b24ocmVzdWx0KTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI2ODgxY2I3MjM5ZGY4MjcwNjhj
ZjhhYzhiNWYxODdjYWJjNjFkNjAuLjAwNDlmNDZlMjJjMjE3YWE2OWRjMDZjYzA1NjI2ZDlmMmYz
MjkzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTYzLDcgKzY0
LDExIEBAIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNv
ZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdldDsKKworZW51bSBjbGFzcyBS
dW5Bc0FzeW5jRnVuY3Rpb24gOiBib29sOworCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKK3N0
cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIAogZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2Fu
RXhlY3V0ZVNjcmlwdHMgewogICAgIEFib3V0VG9DcmVhdGVFdmVudExpc3RlbmVyLApAQCAtOTEs
MTEgKzk2LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0
b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKKyAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24g
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBK
U0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9
IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2Vu
dFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgUmVz
b2x2ZUZ1bmN0aW9uJiYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBw
ZXJXb3JsZCYpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1l
bnQmKSBjb25zdDsKIApAQCAtMTA2LDEwICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2lu
IGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5j
dGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3Jp
bmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBl
dmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7Ci0gICAgVmFsdWVPckV4Y2VwdGlvbiBldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwotCiAgICAgdm9pZCBs
b2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmlu
ZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiwgRE9NV3JhcHBlcldv
cmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsK
ICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0Jiwg
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTcxLDYgKzE3
NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGlu
Z0phdmFzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxSZXBsYWNlV2l0aFJlc3VsdE9m
RXhlY3V0aW5nSmF2YXNjcmlwdFVSTDsgfQogCiBwcml2YXRlOgorICAgIFZhbHVlT3JFeGNlcHRp
b24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQm
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1
dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGNhbGxJ
bldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAg
IAogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlw
dCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZv
aWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLmNwcAppbmRleCA1ZTA2OWQ3OTEwNzJiZjU3ZGRkNzNjNDNlNGUxZWE5MTY3MzFmNWZh
Li4wODc1YTVlY2ZmYTljNjdlNjBjMWFmNjZjOTBjNzA5NWZlN2JkMTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLmNwcApAQCAtMTk2OSw3ICsxOTY5LDcgQEAgeXlyZWR1Y2U6CiAjbGlu
ZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgogICAgIHsKICAgICAgICAgKHl5dnNw
WygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKLSAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvbikgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4o
KHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
QEAgLTE5NzgsNyArMTk3OCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dnNwWygz
KSAtICgzKV0ubG9jYXRpb25QYXRoKS0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+
KCh5eXZzcFsoMikgLSAoMyldLnN0ZXApKSk7CiAgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxv
Y2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7Ci0gICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9
IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAo
MyldLmxvY2F0aW9uUGF0aCkpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFhQ
YXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAo
MyldLmxvY2F0aW9uUGF0aCkpKTsKICAgICA7fQogICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkKaW5kZXggNGViMjBiOTJhNTY0ODllMGZmYjYwNTllMTFhZmE5MjZjYmEzYjk0
Ni4uYjc1MWE2MWJhM2Y0MjIyNDBlN2MwYmUwZTRmNWQ2MTNlMmY3YTU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueQpAQCAtNDAxLDE0ICs0MDEsMTQgQEAgUGF0aEV4cHI6CiAgICAgRmls
dGVyRXhwciAnLycgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7CiAgICAgICAgICQzLT5zZXRB
YnNvbHV0ZSgpOwotICAgICAgICAkJCA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPigkMSksIHN0ZDo6dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CisgICAgICAgICQk
ID0gbmV3IFhQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigkMSksIHN0ZDo6
dW5pcXVlX3B0cjxMb2NhdGlvblBhdGg+KCQzKSk7CiAgICAgfQogICAgIHwKICAgICBGaWx0ZXJF
eHByIERlc2NlbmRhbnRPclNlbGYgUmVsYXRpdmVMb2NhdGlvblBhdGgKICAgICB7CiAgICAgICAg
ICQzLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oJDIpKTsKICAgICAgICAgJDMt
PnNldEFic29sdXRlKCk7Ci0gICAgICAgICQkID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+KCQxKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKKyAgICAg
ICAgJCQgPSBuZXcgWFBhdGg6OlBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCQxKSwg
c3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oJDMpKTsKICAgICB9CiAgICAgOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
aW5kZXggNTRjMzRlODg4NGMyNGNjYjgyNGU2ZDJiY2ZkMzYwMjc3Njg1MjcwZS4uMWY0M2U2M2M2
MTEyZTBmNjQ3NjlhNDE4MzA2YzhiNDZiYjIwZGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18p
CiAgICAgc3RhdGljIGlkIGRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gd2lyZUJ5dGVzRnJvbU5TT2JqZWN0KGlkKTsKICNlbmRpZgogCiAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAppbmRleCAwYzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmLi5kZDc5
NmI4MzMyMzU5ZTFjM2IxZTU1NzVmZDdhMDMzNTNjYjFmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2Uq
IGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVu
SmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwg
W2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFs
dWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRy
dWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0
dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwg
KGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6
Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXggYTI2NzNlMjVjMTEzNDA3MTkxMmMyMDI4ZmQ3ZGYy
Mjk2NTRhYTM4ZS4uNjZlOGIyN2EwOWFmODNlNWZiZjcxMzFkMGYxZWQ3YTE4YWI0NzVjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtMjYsNyArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0NvbnRleHQuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
SW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNTksMTEg
KzYxLDE2IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8U2hhcmVkSlNDb250ZXh0PiBt
X3RpbWVyOwogfTsKIAorc3RhdGljIFNoYXJlZEpTQ29udGV4dCYgc2hhcmVkQ29udGV4dCgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4
dDsKKyAgICByZXR1cm4gc2hhcmVkQ29udGV4dC5nZXQoKTsKK30KKwogaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZEpT
Q29udGV4dD4gc2hhcmVkQ29udGV4dDsKLSAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRD
b250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBz
aGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwogCiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCBleGNlcHRpb24pOwogICAgIGlmICghdmFsdWVSZWYpCkBAIC03Myw0ICs4MCwy
MCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1ZS50b09iamVjdDsK
IH0KIAorT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondp
cmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJl
Q29udGV4dCgpOworICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
Om9iamVjdCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdG9KUyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvIGNvcmVWYWx1
ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxPYmplY3Qs
IHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKKyAgICByZXR1cm4gY29y
ZVZhbHVlLT50b1dpcmVCeXRlcygpOworfQorCiB9IC8vIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNGU3YmMwY2Y3NjhlMTM0ZWIw
ZjNjOTg2NmZjMjg5Y2Y1MzQxYzliZC4uZGRlZjBiN2NlYzEzMjU1ZTZiZTczODE0NTcyOTlkNWU4
MzYyYWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC04MjIsMTQgKzgyMiw4MSBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tF
cnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2b2lkKWV2
YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0
dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3
aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNT
dHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3N0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCit7
CisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFth
cmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tp
bmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNO
dWxsIGNsYXNzXV0pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKFthcmd1bWVudCBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9jayBCT09MIHZh
bGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxv
Y2s6XihpZCBvYmplY3QsIE5TVUludGVnZXIsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlm
ICghdmFsaWRhdGVBcmd1bWVudChvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAgIGlmIChbYXJndW1l
bnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9j
ayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1lbnQgZW51bWVyYXRlS2V5c0Fu
ZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAg
ICAgICAgICAgaWYgKCF2YWxpZGF0ZUFyZ3VtZW50KGtleSkgfHwgIXZhbGlkYXRlQXJndW1lbnQo
dmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAqc3RvcCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0
dXJuIHZhbGlkOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLSAodm9pZClfZXZh
bHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0
aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFT
Y3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9y
IGVycm9yQ29kZSkgeworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFw
PiBhcmd1bWVudHNNYXA7CisgICAgaWYgKGFzQXN5bmNGdW5jdGlvbikKKyAgICAgICAgYXJndW1l
bnRzTWFwID0gV2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXAgeyB9OworICAgIE5TU3RyaW5n
ICplcnJvck1lc3NhZ2UgPSBuaWw7CisKKyAgICBmb3IgKGlkIGtleSBpbiBhcmd1bWVudHMpIHsK
KyAgICAgICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTprZXldOworICAgICAg
ICBpZiAoIXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7CisgICAgICAgICAgICBlcnJvck1lc3Nh
Z2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93
aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB0eXBlczogTlNTdHJpbmcs
IE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBOU0RpY3Rpb25hcnkiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKKyAg
ICAgICAgLy8gU2luY2Ugd2UndmUgdmFsaWRhdGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3Zl
LCB3ZSBzaG91bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgor
ICAgICAgICBBU1NFUlQod2lyZUJ5dGVzKTsKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCAqd2lyZUJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgW3VzZXJJbmZvIHNldE9i
amVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4
Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0
RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHRO
UyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7
CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5k
bGVyLCBlcnJvcl0geworICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwg
ZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyB7IGphdmFTY3JpcHRTdHJpbmcsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3Zl
KGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2VyR2VzdHVyZSB9LCBbaGFuZGxlcl0oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
OjpFcnJvciBlcnJvckNvZGUpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xOTIzLDYgKzE5OTAsMTEgQEAgLSAodm9pZClfdGFrZVBERlNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb24K
ICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpwZGZDb25maWd1cmF0aW9uIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9pZClfY2FsbEFz
eW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlv
bjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiAtIChOU0RhdGEgKilfc2Vzc2lv
blN0YXRlRGF0YQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdh
Y3kgc2Vzc2lvbiBzdGF0ZSBlbmNvZGVyLgpAQCAtMjA2NSw3ICsyMTM3LDcgQEAgLSAodm9pZClf
aXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQp
X2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlw
dFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8g
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV91cGRh
dGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggYzMxMmM4MTg4YzBmYzA4YzY5MzE4NjgxZWI4M2ZjMWE3ODcwOTM2OC4uOGQz
YzQ1YWI5OTZhZjM4NzEwY2M1Y2ZjZDFhNTdjNGE1NDZlYmU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTUs
NiArMzE1LDkgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7
CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0
ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAt
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKworLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0
cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1l
bnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBs
ZXRpb25IYW5kbGVyOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDJh
NDM5ODgwMWZhYWE5ZmMwOGQ2NDE1MGIzMThkNmZmMGMzODYzOWUuLjY0NmU0NWFkYzI4MTgyODdm
NDdkMDAzNDA1Njc4MjJjMjEwYTE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNjM2LDcgKzM2MzYsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAg
IEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5j
ZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIEV4Y2VwdGlv
bkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAg
ICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zNzM3LDcgKzM3MzcsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwod29ybGROYW1lKTsK
IAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmc6OmZyb21VVEY4KHNj
cmlwdCksIHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxs
b3B0LCB0cnVlIH0sIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwog
ICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0
YWlsczsKQEAgLTM3NzksNyArMzc3OSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJl
YWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAKICAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291
cmNlX29iamVjdCh0YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9
IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShv
YmplY3QpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShT
dHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJl
YW1EYXRhKSksIHRydWUsCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihv
dXRwdXRTdHJlYW1EYXRhKSksIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWV9LAogICAgICAgICBb
dGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CiAgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7
CiAgICAgICAgICAgICBpZiAoZGV0YWlscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDRhNGNjYzI1MzRlMTBmM2QzMmNmZDg1OTBhNmJiM2RmZGE3Nzk2NGYu
LjgzOGI0ZGE4NTAzOWM2YzJhZGVlMjNhNmZmYTJjMTgzNzNjZjNiZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0OSwxMiArMzg0OSwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1
cHBvcnQgcnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkg
bG9hZHMgeWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0z
ODY1LDcgKzM4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFy
YW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFjYjcwZjU2N2QzOTlmZWI2Y2ZmYWQ0MGNhYjc5MWQ5
NDJkM2RlNWUuLjc3ZmMwNDU4N2NkOTljMzRkZmQ1ZGY2NmIxMjdjMmFhZmQ0YzY4NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05Miw2ICs5Miw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qb2ludGVySUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVu
dS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CkBAIC0xMDYyLDggKzEwNjMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwog
ICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA3YmMxOGZmYmY2YWVjMzQ0MTI4OGZhMzYyNmVh
MTJiNzgxYjZjNWI0Li5iZTIwZjFkMjk4MTY1YmZlNTk2OWRjZDU0NzFmYTM4ZWRhNGFhYjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjppbnNwZWN0KGNvbnN0IFN0cmluZyYg
aG9zdEFuZFBvcnQsIENvbm5lY3RpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyOjpydW5TY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgbV9wYWdlLnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShzY3JpcHQsIGZhbHNlLAorICAgIG1fcGFnZS5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH0sIAog
ICAgICAgICBbXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKICAgICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFp
bHMtPm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDE4YmQ2OGQxMzdlOTY2NjEzY2I2MTUzYzI1MzY3NDNj
NDgyYTcxZjEuLjEzZDQzZWQwMDk1MDVlYTAxYjViZjE5YTAyMzc3ZWVkMmUyMDcyZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTQsNiAr
MjE0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0Q29udHJvbGxlci5oPgpAQCAtMzM1Miw0NSArMzM1Myw0OSBAQCBLZXlib2FyZFVJTW9kZSBX
ZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJk
VUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6
IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NU
YWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8g
YmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVu
ZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwotICAgIFZhbHVlT3JFeGNlcHRpb24g
cmVzdWx0OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZTsKLQogICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6bm9ybWFsV29ybGQoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFt
ZSgpICYmIHdvcmxkKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2Ny
aXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3Jl
RnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
ZXhlY3V0ZSBKYXZhU2NyaXB0OiBQYWdlIGlzIGluIGludmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJh
Y2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXNvbHZlRnVuY3Rp
b24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VS
ZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JF
eGNlcHRpb24gcmVzdWx0KSB7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAg
ICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
ZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRl
eHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCiAgICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNv
cmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVz
dWx0LnZhbHVlKCkpLCBudWxscHRyKTsKICAgICAgICAgfQotICAgIH0KIAotICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUp
Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsK
KyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChz
ZXJpYWxpemVkUmVzdWx0VmFsdWUpCisgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFs
aXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisKKyAgICAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlsczsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBkZXRhaWxz
ID0gcmVzdWx0LmVycm9yKCk7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRh
aWxzOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgfTsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJl
bmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9u
Vk0oKSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9u
b3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFy
YW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQobWFpbldl
YkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFpbldlYkZyYW1lKCkg
IT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpudWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1l
LCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXVEY6
Om51bGxvcHQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNT
dHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc4ZWEwMmVmNWYyYjAzZDNjMGY5YzlhZjcxYzM5MDliZTQx
MWFlODcuLmIwN2NmMTdmMWIyMmM3MTE5ZjVjYmRkZDFiYWU4YzI5Y2Y5ZDlhZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Nyw2ICsxOTcsNyBA
QCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1
Y3QgS2V5cHJlc3NDb21tYW5kOwogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CitzdHJ1
Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owog
c3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogCkBAIC0xNDM1LDggKzE0MzYsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIGNv
bnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFw
c2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRt
YXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGJhYWQ3
NmU1MDkzN2Q2NjFhYjk1MDY0NTFmYTY3NDRiNDZhZDc5YzEuLjliZjIxZWMzNTFjMmJiYjU0M2Y4
MDFmYjg1NGFmMGE4ZDExODE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZyBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
T3B0aW9uYWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxTdHJpbmc+IHdv
cmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUnVuSmF2YVNjcmlw
dEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTA4ZTEzYTRhZWZi
MGE1YzdhY2I0Y2Q4ZDcwOTA0ZThhN2I3ZWFhMy4uYmQ3NjQxYzhmMGE5YjAyN2UwM2UyNTc2YmRi
MGE3YzAyNmYwODQyMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEyLTMwICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0byBldmFsdWF0ZSBh
IGZ1bmN0aW9uIHdpdGggYXJndW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDUyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlz
dGVuc2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Bc3luY0Z1bmN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJv
cjpdKToKKwogMjAxOS0xMi0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gSW5wdXRNZXRob2QgQVBJIHVuaXQgdGVzdHMgZG9uJ3Qg
d29yayB1bmRlciBYMTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTBlODAwOTQ3MjdlNGUx
ZjI2YTBiNjFiMzQwYjkzYzcwNTI3N2YwYy4uZmVkZmNmMjM1ZmRmOWMyMGU5ZGM2ZmU4MGE5NTVi
YTllMDdiNWUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MCw2ICsyOTAsNyBAQAog
CQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUYyM0RFMUVGMUEz
NzIwMDcyRjI4MSAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovOyB9OwogCQk1MUIxRUU5NjFD
ODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4MEZB
REQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUxQjFF
RTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUx
QzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKKwkJ
NTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0MEQ5RDIzQUM5NjBFMDBFMDUy
NDEgLyogQXN5bmNGdW5jdGlvbi5tbSAqLzsgfTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJF
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0Iw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQy
QzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1MUJFOUU2NjIz
NzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlFNjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlw
ZS5tbSAqLzsgfTsKQEAgLTE4NDEsNiArMTg0Miw3IEBACiAJCTUxQjFFRThEMUM4MEY1ODgwMDY0
RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUIxRUU5NDFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lz
dGVuY2UtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlBlcnNp
c3RlbmNlLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjFFRTk1MUM4
MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBc3luY0Z1
bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NTRFQjFCNEUyMzZC
MDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0Nsb3NlSW5zaWRl
RGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9jZXNz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4
MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0
MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRC
RCAvKiBBcHBsZVBheS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBw
bGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyog
QXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlB
RjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAz
OUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8sCkBAIC00NTM2LDYgKzQ1MzksNyBAQAogCQkJ
CUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCNDBEOUUyM0FDOTYyNDAw
RTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIw
MzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0
cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBB
dHRyU3R5bGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWY5N2Qz
ZDY5ODIyN2M0ZjYwZDQzNGM1ZTVhNDUyODIxOWNmYThjCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0w
LDAgKzEsMTgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgQmFzaWMpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKwor
ICAgIC8vIEZ1bmN0aW9uIHdpdGggbm8gcmV0dXJuIHZhbHVlLgorICAgIC8vIFJldHVybnMgSmF2
YVNjcmlwdCB1bmRlZmluZWQgd2hpY2ggdHJhbnNsYXRlcyB0byBuaWwuCisgICAgaWQgcmVzdWx0
ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAIjEiIHdpdGhBcmd1bWVu
dHM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVD
VF9FUShyZXN1bHQsIG5pbCk7CisKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGV4cGxpY2l0IG51
bGwuCisgICAgLy8gUmV0dXJucyBKYXZhU2NyaXB0IG51bGwgd2hpY2ggdHJhbnNsYXRlcyB0byBO
U051bGwuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlv
bjpAInJldHVybiBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6
W05TTnVsbCBjbGFzc11dKTsKKworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIuCisg
ICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVy
biAxIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNs
YXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisK
KyAgICAvLyBGdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3
IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gJzEnIiB3aXRoQXJndW1lbnRz
Om5pbCBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiMSJdKTsKKworICAgIC8vIFRha2VzIG11
bHRpcGxlIGFyZ3VtZW50cy4KKyAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdB
c3luY0Z1bmN0aW9uOkAicmV0dXJuIGEgKyBiIiB3aXRoQXJndW1lbnRzOkB7IEAiYSIgOiBANDAs
IEAiYiIgOiBAMiB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CisKKyAgICAvLyBU
YWtlcyBtdWx0aXBsZSBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzLCBmb2xsb3dzIGphdmFz
Y3JpcHRzICJ0eXBlIGFwcGVuZGluZyIgcnVsZXMuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBmb28gKyBiYXIiIHdpdGhBcmd1bWVu
dHM6QHsgQCJmb28iIDogQCJmb28iLCBAImJhciIgOiBANDIgfSBlcnJvcjomZXJyb3JdOworICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
U3RyaW5nOkAiZm9vNDIiXSk7CisKKyAgICAvLyBJbnZhbGlkIEphdmFTY3JpcHQsIHNob3VsZCBy
ZXR1cm4gYW4gZXJyb3IuCisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVuciBudWxsIiB3aXRoQXJndW1lbnRzOm5pbCBlcnJvcjomZXJyb3Jd
OworICAgIEVYUEVDVF9GQUxTRShlcnJvciA9PSBuaWwpOworICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TRXJyb3IgKmVycm9yOworCisg
ICAgLy8gVmFsdWVzIGNhbiBvbmx5IGJlIE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRlLCBOU051
bGwsIE5TKE11dGFibGUpQXJyYXksIE5TKE11dGFibGUpRGljdGlvbmFyeSwgTlNOdWxsLCBhbmQg
bWF5IG9ubHkgY29udGFpbiB0aG9zZSA2IHR5cGVzLgorICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3
IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFyZ3VtZW50czpA
eyBAImEiIDogW05TRGF0YSBkYXRhXSB9IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmlsKTsKKworICAgIHJlc3VsdCA9
IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gMSIgd2l0aEFy
Z3VtZW50czpAeyBAImEiIDogQFsgQDEsIFtOU0RhdGEgZGF0YV0gXSB9IGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmls
KTsKKworICAgIC8vIFJlZmVyZW5jZXMgYW4gYXJndW1lbnQgdGhhdCB3YXMgbm90IHByb3ZpZGVk
LgorICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJy
ZXR1cm4gYSArIGIiIHdpdGhBcmd1bWVudHM6QHsgQCJhIiA6IEA0MCB9IGVycm9yOiZlcnJvcl07
CisgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IgPT0gbmls
KTsKK30KKworVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKworICAgIC8vIFRl
c3RzIHJvdW5kIHRyaXBwaW5nIGEgd2hvbGUgYnVuY2ggb2YgYXJndW1lbnQgaW5wdXRzIGFuZCB2
ZXJpZnlpbmcgdGhlIHJlc3VsdC4KKworICAgIGlkIHZhbHVlID0gQDQyOworICAgIGlkIGFyZ3Vt
ZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIGlkIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVj
dEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RS
VUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU051bGwgbnVsbF07
CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZp
ZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBF
WFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQCJGb28i
OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJW
aWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50
czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
RVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IFtOU0Rh
dGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF07CisgICAgYXJndW1l
bnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlD
YWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBl
cnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShb
dmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIHZhbHVlID0gQFsgQDEsIEAyIF07CisgICAg
YXJndW1lbnRzID0gQHsgQCJhIiA6IHZhbHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3Vt
ZW50cyBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1Rf
VFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKKworICAgIE5TTXV0YWJsZUFycmF5ICptdXRh
YmxlQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBbbXV0YWJsZUFy
cmF5IGFkZE9iamVjdDp2YWx1ZV07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IG11dGFibGVB
cnJheSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW211dGFibGVBcnJheSBpc0Vx
dWFsOnJlc3VsdF0pOworICAgIFttdXRhYmxlQXJyYXkgcmVsZWFzZV07CisKKyAgICB2YWx1ZSA9
IEBbIEAiZm9vIiwgW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0
ZTowXSBdOworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9
IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFy
Z3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9
IEB7IEAiYSIgOiBAMSwgQCJiIiA6IEAyIH07CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZh
bHVlIH07CisgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlv
bjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJyb3JdOworICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1
bHRdKTsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICptdXRhYmxl
RGljdGlvbmFyeSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgbXV0
YWJsZURpY3Rpb25hcnlbQCJmb28iXSA9IHZhbHVlOworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIg
OiBtdXRhYmxlRGljdGlvbmFyeSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZXJy
b3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUoW211
dGFibGVEaWN0aW9uYXJ5IGlzRXF1YWw6cmVzdWx0XSk7CisgICAgW211dGFibGVEaWN0aW9uYXJ5
IHJlbGVhc2VdOworCisgICAgdmFsdWUgPSBAeyBAImEiIDogQCJmb28iLCBAImIiIDogW05TRGF0
ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTowXSB9OworICAgIGFyZ3Vt
ZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3VsdCA9IFt3ZWJWaWV3IG9iamVjdEJ5
Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0aEFyZ3VtZW50czphcmd1bWVudHMg
ZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RSVUUo
W3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CisKKyAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAeyBAImEi
IDogQDEgfSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiB2YWx1ZSB9OworICAgIHJlc3Vs
dCA9IFt3ZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246QCJyZXR1cm4gYSIgd2l0
aEFyZ3VtZW50czphcmd1bWVudHMgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7Cit9CisKK30KKwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCAyYWQxNWVmMjA5
NGRlZjQyNzI5ZjYwMTcwNGNmODUxNjcxNTRjMjVlLi4zY2M0MzRhNWQyNWUwZThkM2Q3N2Y4Yjk1
YWZhMmRjNjk0YzJmMTdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaApAQCAtNjMsNiArNjMsNyBAQAogLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CistIChpZClvYmplY3RC
eUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihO
U0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JPdXQ7CiAtICh1
bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1bnNpZ25lZClleHBlY3RlZENsaWVudFdp
ZHRoOwogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0K
aW5kZXggYWFmZjI1Y2Q3MTZlY2FlNmNlNjJiNTgxNzJjMzkyOTM1MDkyMjZlYS4uNzRhZDU4MTI1
MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc4LDYgKzE3OCwyNyBAQCAtIChpZClvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdAog
ICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKKy0gKGlkKW9iamVjdEJ5
Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5T
RGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dAoreworICAg
IGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIGlmIChlcnJvck91dCkK
KyAgICAgICAgKmVycm9yT3V0ID0gbmlsOworCisgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0
OworICAgIFtzZWxmIF9jYWxsQXN5bmNGdW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50czphcmd1
bWVudHMgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIGlmIChlcnJvck91dCkKKyAg
ICAgICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRhaW5dOworICAgICAgICBpc1dhaXRpbmdG
b3JKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOworCisgICAgaWYgKGVycm9yT3V0KQorICAgICAg
ICBbKmVycm9yT3V0IGF1dG9yZWxlYXNlXTsKKworICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9y
ZWxlYXNlKCk7Cit9CisKIC0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilzY3JpcHQKIHsKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>