<?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>154729</bug_id>
          
          <creation_ts>2016-02-26 09:50:26 -0800</creation_ts>
          <short_desc>[Fetch API] Make FetchRequest and FetchResponse ActiveDOMObject</short_desc>
          <delta_ts>2016-03-08 01:10:05 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>155022</dependson>
          <blocked>151937</blocked>
    
    <blocked>154959</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168536</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-26 09:50:26 -0800</bug_when>
    <thetext>FetchRequest and FetchResponse may need to trigger loading of resources.
This is limited to blob data for FetchRequest.
FetchResponse might also load blob data and may also receive data from loaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168542</commentid>
    <comment_count>1</comment_count>
      <attachid>272331</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-26 09:57:28 -0800</bug_when>
    <thetext>Created attachment 272331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168545</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-26 10:00:18 -0800</bug_when>
    <thetext>Attachment 272331 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/ObjC/DOMTestClassWithJSBuiltinConstructorAndCallWith.mm:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructorAndCallWith.cpp:181:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169183</commentid>
    <comment_count>3</comment_count>
      <attachid>272498</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-29 09:59:55 -0800</bug_when>
    <thetext>Created attachment 272498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169184</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-29 10:01:02 -0800</bug_when>
    <thetext>Attachment 272498 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/ObjC/DOMTestClassWithJSBuiltinConstructorAndCallWith.mm:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructorAndCallWith.cpp:181:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169460</commentid>
    <comment_count>5</comment_count>
      <attachid>272498</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-01 09:32:14 -0800</bug_when>
    <thetext>Comment on attachment 272498
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:165
&gt; +    return true;

Does the comment in XMLHttpRequest::canSuspendForDocumentSuspension apply here?

&gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt; +    if (!object)
&gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);

Why is this needed now for the fetch api and it wasn&apos;t needed before?

&gt; Source/WebCore/bindings/scripts/test/TestClassWithJSBuiltinConstructorAndCallWith.idl:2
&gt; + * Copyright (C) 2015 Canon Inc.

2016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169508</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 11:32:29 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 272498 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272498&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:165
&gt; &gt; +    return true;
&gt; 
&gt; Does the comment in XMLHttpRequest::canSuspendForDocumentSuspension apply
&gt; here?

It seems to make sense when doing network loads from fetch.
For blob (i.e. converting a blob stored in a body as a string or array buffer), I am less sure about it.
Plan is to implement Blob conversion first, using the simple approach (if loading, do not suspend).
This should be revisited when doing network loads.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt; &gt; +    if (!object)
&gt; &gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);
&gt; 
&gt; Why is this needed now for the fetch api and it wasn&apos;t needed before?

This mimicks the checks for regular constructors called with ScriptExecutionContext.
This check was not needed as createJSObject could not return a null pointer in any valid case before that patch.

&gt; &gt; Source/WebCore/bindings/scripts/test/TestClassWithJSBuiltinConstructorAndCallWith.idl:2
&gt; &gt; + * Copyright (C) 2015 Canon Inc.
&gt; 
&gt; 2016

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169519</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 11:44:35 -0800</bug_when>
    <thetext>&gt; It seems to make sense when doing network loads from fetch.
&gt; For blob (i.e. converting a blob stored in a body as a string or array
&gt; buffer), I am less sure about it.
&gt; Plan is to implement Blob conversion first, using the simple approach (if
&gt; loading, do not suspend).
&gt; This should be revisited when doing network loads.

This probably only applies to FetchResponse, FetchRequest having only to handle Blob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170139</commentid>
    <comment_count>8</comment_count>
      <attachid>272740</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-03 00:30:31 -0800</bug_when>
    <thetext>Created attachment 272740
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170140</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-03 00:31:44 -0800</bug_when>
    <thetext>Attachment 272740 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/ObjC/DOMTestClassWithJSBuiltinConstructorAndCallWith.mm:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructorAndCallWith.cpp:181:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170141</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-03 00:33:12 -0800</bug_when>
    <thetext>Thanks for the feedback.
I rebased the patch and made some updates according your comments/questions.

(In reply to comment #5)
&gt; Comment on attachment 272498 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272498&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:165
&gt; &gt; +    return true;
&gt; 
&gt; Does the comment in XMLHttpRequest::canSuspendForDocumentSuspension apply
&gt; here?

Added some info in Changelog about suspending request and response.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt; &gt; +    if (!object)
&gt; &gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);
&gt; 
&gt; Why is this needed now for the fetch api and it wasn&apos;t needed before?

Added some info in the Changelog also.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/TestClassWithJSBuiltinConstructorAndCallWith.idl:2
&gt; &gt; + * Copyright (C) 2015 Canon Inc.
&gt; 
&gt; 2016

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170153</commentid>
    <comment_count>11</comment_count>
      <attachid>272740</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 01:35:08 -0800</bug_when>
    <thetext>Comment on attachment 272740
Rebasing

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

&gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt; +    if (!object)
&gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);

This patch looks good to me except this.  This adds a branch to some pretty hot code, and I imagine it would significantly affect performance.  I&apos;d like someone more familiar with the bindings to look at this.  If this is indeed newly needed, then I think there should be a new inline function that has this branch so we don&apos;t add this branch to all existing bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170169</commentid>
    <comment_count>12</comment_count>
      <attachid>272740</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-03 02:51:55 -0800</bug_when>
    <thetext>Comment on attachment 272740
Rebasing

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

&gt;&gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt;&gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);
&gt; 
&gt; This patch looks good to me except this.  This adds a branch to some pretty hot code, and I imagine it would significantly affect performance.  I&apos;d like someone more familiar with the bindings to look at this.  If this is indeed newly needed, then I think there should be a new inline function that has this branch so we don&apos;t add this branch to all existing bindings.

It indeed adds a check for all DOM objects having a JS built-in constructor, while there were none previously.
It has no effect for other DOM objects though.
The number of JS built-in constructed DOM classes is fairly low at the moment but it may increase in the future.

The ususal way of fixing this would be to update the binding generator to generate that check when needed but that might require the binding generator to generate the whole JSBuiltinConstructor::construct.
An alternative would be to update JSBuiltinConstructor by adding a template/compile-time boolean parameter to activate or not this check.
If that is found worthwhile, I can tackle this as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170194</commentid>
    <comment_count>13</comment_count>
      <attachid>272740</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-03 06:14:03 -0800</bug_when>
    <thetext>Comment on attachment 272740
Rebasing

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

&gt; Source/WebCore/Modules/fetch/FetchRequest.h:87
&gt; +    FetchRequest(FetchBody&amp;&amp;, Ref&lt;FetchHeaders&gt;&amp;&amp;, InternalRequest&amp;&amp;, ScriptExecutionContext&amp;);

ScriptExecutionContext&amp; seems usually to be the first constructor parameter.
I plan to update this in a next patch or when landing this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170212</commentid>
    <comment_count>14</comment_count>
      <attachid>272740</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 08:50:06 -0800</bug_when>
    <thetext>Comment on attachment 272740
Rebasing

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

&gt;&gt; Source/WebCore/Modules/fetch/FetchRequest.h:87
&gt;&gt; +    FetchRequest(FetchBody&amp;&amp;, Ref&lt;FetchHeaders&gt;&amp;&amp;, InternalRequest&amp;&amp;, ScriptExecutionContext&amp;);
&gt; 
&gt; ScriptExecutionContext&amp; seems usually to be the first constructor parameter.
&gt; I plan to update this in a next patch or when landing this one.

Contexts like this one, GraphicsContext, ExecState, Document, Frame, Page, etc. are conventionally the first parameter to any function. That’s the pattern you are seeing and considering following.

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:54
&gt; -Ref&lt;FetchResponse&gt; FetchResponse::error()
&gt; +Ref&lt;FetchResponse&gt; FetchResponse::error(ScriptExecutionContext* context)
&gt;  {
&gt; -    return adoptRef(*new FetchResponse(Type::Error, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), ResourceResponse()));
&gt; +    return adoptRef(*new FetchResponse(Type::Error, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), ResourceResponse(), *context));
&gt;  }

This code assumes the context is non-null, so the argument should be ScriptExecutionContext&amp;. If it can’t be a reference, then instead we at least have to figure out where the guarantee that the argument is non-null comes from.

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:68
&gt; +    RefPtr&lt;FetchResponse&gt; redirectResponse = adoptRef(*new FetchResponse(Type::Default, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), ResourceResponse(), *context));

Same issue here.

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:127
&gt; +    RefPtr&lt;FetchResponse&gt; cloned = adoptRef(*new FetchResponse(m_type, FetchBody(m_body), FetchHeaders::create(headers()), ResourceResponse(m_response), *scriptExecutionContext()));

Variation on the same issue here. What guarantees scriptExecutionContext() is non-null, and if nothing does, then why does it return a pointer rather than a reference?

&gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt;&gt;&gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);
&gt;&gt; 
&gt;&gt; This patch looks good to me except this.  This adds a branch to some pretty hot code, and I imagine it would significantly affect performance.  I&apos;d like someone more familiar with the bindings to look at this.  If this is indeed newly needed, then I think there should be a new inline function that has this branch so we don&apos;t add this branch to all existing bindings.
&gt; 
&gt; It indeed adds a check for all DOM objects having a JS built-in constructor, while there were none previously.
&gt; It has no effect for other DOM objects though.
&gt; The number of JS built-in constructed DOM classes is fairly low at the moment but it may increase in the future.
&gt; 
&gt; The ususal way of fixing this would be to update the binding generator to generate that check when needed but that might require the binding generator to generate the whole JSBuiltinConstructor::construct.
&gt; An alternative would be to update JSBuiltinConstructor by adding a template/compile-time boolean parameter to activate or not this check.
&gt; If that is found worthwhile, I can tackle this as a follow-up patch.

Another way to do it is to change the createJSObject function so that in some classes it returns a pointer and in others it returns a reference. Then we can use a private member function that is overloaded:

    return callConstructor(*state, castedThis-&gt;createJSObject(), *castedThis-&gt;initializeFunction());

There are two inline callConstructor functions, one that takes a JSObject&amp; and another that takes a JSObject*. The JSObject* one does this:

    if (!object)
        return throwConstructorDocumentUnavailableError(state, info()-&gt;className);
    return callConstructor(state, object, function);

And the JSObject&amp; one does this:

    callFunctionWithCurrentArguments(state, object,function);
    return JSC::JSValue::encode(&amp;object);

All we have to do is make the createJSObject function return a reference when known to be non-null, and a pointer when it might be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170537</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-03 23:37:19 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:54
&gt; &gt; -Ref&lt;FetchResponse&gt; FetchResponse::error()
&gt; &gt; +Ref&lt;FetchResponse&gt; FetchResponse::error(ScriptExecutionContext* context)
&gt; &gt;  {
&gt; &gt; -    return adoptRef(*new FetchResponse(Type::Error, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), ResourceResponse()));
&gt; &gt; +    return adoptRef(*new FetchResponse(Type::Error, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), ResourceResponse(), *context));
&gt; &gt;  }
&gt; 
&gt; This code assumes the context is non-null, so the argument should be
&gt; ScriptExecutionContext&amp;. If it can’t be a reference, then instead we at
&gt; least have to figure out where the guarantee that the argument is non-null
&gt; comes from.

The binding generated code does the check and should pass a reference.
This is done for constructors but not yet for methods.

&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:68
&gt; &gt; +    RefPtr&lt;FetchResponse&gt; redirectResponse = adoptRef(*new FetchResponse(Type::Default, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), ResourceResponse(), *context));
&gt; 
&gt; Same issue here.

Ditto.

&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:127
&gt; &gt; +    RefPtr&lt;FetchResponse&gt; cloned = adoptRef(*new FetchResponse(m_type, FetchBody(m_body), FetchHeaders::create(headers()), ResourceResponse(m_response), *scriptExecutionContext()));
&gt; 
&gt; Variation on the same issue here. What guarantees scriptExecutionContext()
&gt; is non-null, and if nothing does, then why does it return a pointer rather
&gt; than a reference?

Right, for consistency, clone should be set as CallWith=ScriptExecutionContext
I will fix that as a follow-up patch.

&gt; &gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMConstructor.h:224
&gt; &gt;&gt;&gt; +        return throwConstructorDocumentUnavailableError(*state, info()-&gt;className);
&gt; &gt;&gt; 
&gt; &gt;&gt; This patch looks good to me except this.  This adds a branch to some pretty hot code, and I imagine it would significantly affect performance.  I&apos;d like someone more familiar with the bindings to look at this.  If this is indeed newly needed, then I think there should be a new inline function that has this branch so we don&apos;t add this branch to all existing bindings.
&gt; &gt; 
&gt; &gt; It indeed adds a check for all DOM objects having a JS built-in constructor, while there were none previously.
&gt; &gt; It has no effect for other DOM objects though.
&gt; &gt; The number of JS built-in constructed DOM classes is fairly low at the moment but it may increase in the future.
&gt; &gt; 
&gt; &gt; The ususal way of fixing this would be to update the binding generator to generate that check when needed but that might require the binding generator to generate the whole JSBuiltinConstructor::construct.
&gt; &gt; An alternative would be to update JSBuiltinConstructor by adding a template/compile-time boolean parameter to activate or not this check.
&gt; &gt; If that is found worthwhile, I can tackle this as a follow-up patch.
&gt; 
&gt; Another way to do it is to change the createJSObject function so that in
&gt; some classes it returns a pointer and in others it returns a reference. Then
&gt; we can use a private member function that is overloaded:
&gt; 
&gt;     return callConstructor(*state, castedThis-&gt;createJSObject(),
&gt; *castedThis-&gt;initializeFunction());
&gt; 
&gt; There are two inline callConstructor functions, one that takes a JSObject&amp;
&gt; and another that takes a JSObject*. The JSObject* one does this:
&gt; 
&gt;     if (!object)
&gt;         return throwConstructorDocumentUnavailableError(state,
&gt; info()-&gt;className);
&gt;     return callConstructor(state, object, function);
&gt; 
&gt; And the JSObject&amp; one does this:
&gt; 
&gt;     callFunctionWithCurrentArguments(state, object,function);
&gt;     return JSC::JSValue::encode(&amp;object);
&gt; 
&gt; All we have to do is make the createJSObject function return a reference
&gt; when known to be non-null, and a pointer when it might be null.

I will handle this as a separated bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170869</commentid>
    <comment_count>16</comment_count>
      <attachid>273007</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-04 09:49:48 -0800</bug_when>
    <thetext>Created attachment 273007
Patch based on fix 155022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171527</commentid>
    <comment_count>17</comment_count>
      <attachid>273162</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-06 23:03:16 -0800</bug_when>
    <thetext>Created attachment 273162
Updating style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171634</commentid>
    <comment_count>18</comment_count>
      <attachid>273162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-07 09:56:23 -0800</bug_when>
    <thetext>Comment on attachment 273162
Updating style

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

&gt; Source/WebCore/Modules/fetch/FetchRequest.h:91
&gt; +    const char* activeDOMObjectName() const override;
&gt; +    bool canSuspendForDocumentSuspension() const override;

Should say final instead of override.

&gt; Source/WebCore/Modules/fetch/FetchResponse.h:84
&gt; +    const char* activeDOMObjectName() const override;
&gt; +    bool canSuspendForDocumentSuspension() const override;

Should be final, not override.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171971</commentid>
    <comment_count>19</comment_count>
      <attachid>273279</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-08 00:12:42 -0800</bug_when>
    <thetext>Created attachment 273279
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171982</commentid>
    <comment_count>20</comment_count>
      <attachid>273279</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-08 01:09:59 -0800</bug_when>
    <thetext>Comment on attachment 273279
Patch for landing

Clearing flags on attachment: 273279

Committed r197744: &lt;http://trac.webkit.org/changeset/197744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171983</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-08 01:10:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272331</attachid>
            <date>2016-02-26 09:57:28 -0800</date>
            <delta_ts>2016-02-29 09:59:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154729-20160226185710.patch</filename>
            <type>text/plain</type>
            <size>57624</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ0NjJhOGY3YzM4NWIy
N2ZlMTRjYzgzMjFiOTlmYWE0MDJhOTUzMC4uYTA1YWUwMTkyOGQ4MmM0ODBlZjE5YjRhN2I4M2Fl
ZGQ4MGIzMTE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE2LTAyLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gTWFrZSBGZXRjaFJlcXVlc3QgYW5kIEZldGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1ha2luZyBGZXRjaFJlcXVlc3QgYW5kIEZl
dGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICBGZXRjaFJlc3BvbnNlIGhhdmlu
ZyBhIEpTQnVpbHRpbkNvbnN0cnVjdG9yLCB0aGUgYmluZGluZyBnZW5lcmF0b3IgaXMgdXBkYXRl
ZCB0byBzdXBwb3J0IENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dC4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVx
dWVzdDo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjphY3RpdmVET01P
YmplY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2Vi
S2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jbGFzc193
aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2Fu
ZF9jYWxsX3dpdGhfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NsYXNz
X3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2NsYXNzX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rv
cl9hbmRfY2FsbF93aXRoX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoUHJvdG90eXBlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGg6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmdldFByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aDo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhP
d25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OnRvV3JhcHBlZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGguaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9N
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggZGVhbGxvY10pOgor
ICAgICAgICAoY29yZSk6CisgICAgICAgIChraXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwuCisKIDIwMTYtMDItMjUgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IHNpemUg
Y29tcHV0ZWQgc3R5bGUgaXMgaW5uYWNjdXJhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCA3ZTBjYThkYmJjMTNkNzQ4M2M4NjU0NWJjMDM4
ZDM4YjVhMTQ1YjM4Li4xNTcwMGYyMjlhMTU1YmFmODY5MzNmOTZhOWE1YmEzOGVmMzEwNWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0y
NjYsNyArMjY2LDcgQEAgUmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdU
Rk1vdmUoYm9keSksIGhlYWRlcnMucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJl
cXVlc3QpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUo
Ym9keSksIGhlYWRlcnMucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3Qp
LCBjb250ZXh0KSk7CiB9CiAKIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCogaW5wdXQs
IGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk3LDcgKzI5
Nyw3IEBAIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChXVEZNb3ZlKGJv
ZHkpLCBoZWFkZXJzLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChXVEZNb3ZlKGJvZHkpLCBo
ZWFkZXJzLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSwgY29udGV4
dCkpOwogfQogCiBTdHJpbmcgRmV0Y2hSZXF1ZXN0Ojp0eXBlKCkgY29uc3QKQEAgLTQ0Myw3ICs0
NDMsMTcgQEAgUmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShFeGNlcHRp
b25Db2RlJiBlYykKICAgICB9CiAKICAgICAvLyBGSVhNRTogVmFsaWRhdGUgYm9keSB0ZWVpbmcu
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KEZldGNoQm9keShtX2JvZHkp
LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVlc3Q6Oklu
dGVybmFsUmVxdWVzdChtX2ludGVybmFsUmVxdWVzdCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRl
KG1faGVhZGVycy5nZXQoKSksIEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0KG1faW50ZXJu
YWxSZXF1ZXN0KSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOworfQorCitjb25zdCBjaGFy
KiBGZXRjaFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biAiUmVxdWVzdCI7Cit9CisKK2Jvb2wgRmV0Y2hSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmgKaW5kZXggN2ZhMDgzMTNjZTM2MGNlZTRhMDFmY2NlODAzYWQ5NjFjMTI3NjFjNy4uMjIwMDk4
OTMwMWZjZDU0MTU0NmRlZWZiMjk4MzAwMjg4ZjIwMWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFC
TEUoRkVUQ0hfQVBJKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAi
RmV0Y2hCb2R5LmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRmV0Y2hP
cHRpb25zLmgiCkBAIC00Myw3ICs0NCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEZldGNoUmVxdWVzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPEZldGNoUmVxdWVzdD4geworY2xhc3MgRmV0Y2hSZXF1ZXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8RmV0Y2hSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0KiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0
aW9uQ29kZSYpOwpAQCAtODMsMTUgKzg0LDIwIEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkmIGJv
ZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogcHJpdmF0ZToKLSAgICBGZXRjaFJlcXVlc3QoRmV0
Y2hCb2R5JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIEludGVybmFsUmVxdWVzdCYmKTsKKyAgICBG
ZXRjaFJlcXVlc3QoRmV0Y2hCb2R5JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIEludGVybmFsUmVx
dWVzdCYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmpl
Y3QgQVBJLgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdDsKKyAg
ICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdDsKIAogICAgIEZl
dGNoQm9keSBtX2JvZHk7CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogICAgIElu
dGVybmFsUmVxdWVzdCBtX2ludGVybmFsUmVxdWVzdDsKIH07CiAKLWlubGluZSBGZXRjaFJlcXVl
c3Q6OkZldGNoUmVxdWVzdChGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhl
YWRlcnMsIEludGVybmFsUmVxdWVzdCYmIGludGVybmFsUmVxdWVzdCkKLSAgICA6IG1fYm9keShX
VEZNb3ZlKGJvZHkpKQoraW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KEZldGNoQm9k
eSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYg
aW50ZXJuYWxSZXF1ZXN0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCiAg
ICAgLCBtX2hlYWRlcnMoV1RGTW92ZShoZWFkZXJzKSkKICAgICAsIG1faW50ZXJuYWxSZXF1ZXN0
KFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAppbmRleCBmNGM3NjZjY2RjYzA3MDAzYmIyZDU1YzVhYzVm
NGZlNDFjOGYxYmVmLi5kMTU2MjVmYzc4YjcyZGUxMTA1MTk1MTU0NjNlOWU0NGMxOTBmN2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCkBAIC0z
NSw2ICszNSw3IEBAIGVudW0gUmVxdWVzdFJlZGlyZWN0IHsgImZvbGxvdyIsICJlcnJvciIsICJt
YW51YWwiIH07CiBlbnVtIFJlZmVycmVyUG9saWN5IHsgIiIsICJuby1yZWZlcnJlciIsICAibm8t
cmVmZXJyZXItd2hlbi1kb3duZ3JhZGUiLCAib3JpZ2luLW9ubHkiLCAib3JpZ2luLXdoZW4tY3Jv
c3Mtb3JpZ2luIiwgInVuc2FmZS11cmwiIH07CiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAg
ICAgQ29uZGl0aW9uYWw9RkVUQ0hfQVBJLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRlMzI2
MmY1N2FjNTViMTkyNDVhNTk1NDI3NDlmN2FjZTVhOGM2ODkuLmMyYWY1YzZmNzM3YzhkM2VmZDQw
YjdlN2MzODNjMjc4NWYwZmQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDgsOSArNDgsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQogICAgIHJldHVybiBzdGF0dXMgPT0gMTAxIHx8
IHN0YXR1cyA9PSAyMDQgfHwgc3RhdHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0OwogfQogCi1S
ZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6ZXJyb3IoKQorUmVmPEZldGNoUmVzcG9u
c2U+IEZldGNoUmVzcG9uc2U6OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBlOjpFcnJvciwg
RmV0Y2hCb2R5OjplbXB0eSgpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1
YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlc3BvbnNlKFR5cGU6OkVycm9yLCBGZXRjaEJvZHk6OmVtcHR5KCksIEZl
dGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJlc291
cmNlUmVzcG9uc2UoKSwgKmNvbnRleHQpKTsKIH0KIAogUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZl
dGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTY1LDcg
KzY1LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25z
ZT4gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBlOjpE
ZWZhdWx0LCBGZXRjaEJvZHk6OmVtcHR5KCksIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVh
ZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIFJlZlB0
cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJl
c3BvbnNlKFR5cGU6OkRlZmF1bHQsIEZldGNoQm9keTo6ZW1wdHkoKSwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgp
LCAqY29udGV4dCkpOwogICAgIHJlZGlyZWN0UmVzcG9uc2UtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c0NvZGUoc3RhdHVzKTsKICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX2hlYWRlcnMtPmZhc3RT
ZXQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICBy
ZXR1cm4gcmVkaXJlY3RSZXNwb25zZTsKQEAgLTEwOCw4ICsxMDgsOSBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIH0KIH0KIAotRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShUeXBlIHR5
cGUsIEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlKQotICAgIDogbV90eXBlKHR5cGUpCitGZXRjaFJlc3BvbnNl
OjpGZXRjaFJlc3BvbnNlKFR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVh
ZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisg
ICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAg
ICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRl
cnMpKQpAQCAtMTIyLDcgKzEyMyw3IEBAIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3Bv
bnNlOjpjbG9uZShFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4g
Y2xvbmVkID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKG1fdHlwZSwgRmV0Y2hCb2R5KG1f
Ym9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2Uo
bV9yZXNwb25zZSkpKTsKKyAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmVkID0gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlc3BvbnNlKG1fdHlwZSwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksICpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKICAgICBjbG9uZWQtPm1faXNSZWRpcmVjdGVkID0g
bV9pc1JlZGlyZWN0ZWQ7CiAgICAgcmV0dXJuIGNsb25lZDsKIH0KQEAgLTE1Myw2ICsxNTQsMTYg
QEAgSlNDOjpKU1ZhbHVlIEpTRmV0Y2hSZXNwb25zZTo6Ym9keShKU0M6OkV4ZWNTdGF0ZSYpIGNv
bnN0CiAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiB9CiAKK2NvbnN0IGNoYXIqIEZldGNoUmVz
cG9uc2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiUmVzcG9u
c2UiOworfQorCitib29sIEZldGNoUmVzcG9uc2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAwMTY5MmVmM2IxNzIzODA0MGFkMDhk
ZDc4MjAxM2IyNGNkNjRlNTZjLi41MDJiMWYwZmRkOWEzZWUzODU3ZWVkMzQyZmNmMmMzMWIyZmZl
ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApA
QCAtMzEsNiArMzEsNyBAQAogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAorI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgogI2luY2x1ZGUgIkZldGNo
SGVhZGVycy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQ1LDEwICs0Niwx
MCBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1j
bGFzcyBGZXRjaFJlc3BvbnNlIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hSZXNwb25zZT4gewor
Y2xhc3MgRmV0Y2hSZXNwb25zZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoUmVzcG9uc2U+LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVz
cG9uc2U+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBl
OjpEZWZhdWx0LCBGZXRjaEJvZHk6OmVtcHR5KCksIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNo
SGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KLSAgICBz
dGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKCk7CisgICAgc3RhdGljIFJlZjxGZXRjaFJl
c3BvbnNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKFR5cGU6OkRlZmF1bHQsIEZldGNoQm9keTo6ZW1w
dHkoKSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2Up
LCBSZXNvdXJjZVJlc3BvbnNlKCksIGNvbnRleHQpKTsgfQorICAgIHN0YXRpYyBSZWY8RmV0Y2hS
ZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyBSZWZQ
dHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYsIGludCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIC8vIEZJWE1FOiBCaW5kaW5nIGdl
bmVyYXRvciBzaG91bGQgbm90IHJlcXVpcmUgYmVsb3cgbWV0aG9kIHRvIGhhbmRsZSBvcHRpb25h
bCBzdGF0dXMgcGFyYW1ldGVyLgogICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVk
aXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiByZWRpcmVjdChjb250ZXh0LCB1cmwsIDMwMiwg
ZWMpOyB9CkBAIC03Niw3ICs3NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGVudW0gY2xh
c3MgVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBFcnJvciwgT3BhcXVlLCBPcGFxdWVSZWRp
cmVjdCB9OwogCi0gICAgRmV0Y2hSZXNwb25zZShUeXBlLCBGZXRjaEJvZHkmJiwgUmVmPEZldGNo
SGVhZGVycz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICBGZXRjaFJlc3BvbnNlKFR5cGUs
IEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCisg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0OworICAgIGJvb2wgY2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0OwogCiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKaW5kZXggZTcwZjRiOTFkMDVhNWM4M2QyZmQw
ZmNjMDZkMzkwNDhjZWM5NzA2Zi4uMDExZGY4ZjZkNDQ5MTBhOWM5ZTQ4MDdjMzQ0N2JmNDdjZjhl
OWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aWRsCkBAIC0yOCw3ICsyOCw5IEBACiBlbnVtIFJlc3BvbnNlVHlwZSB7ICJiYXNpYyIsICJjb3Jz
IiwgImRlZmF1bHQiLCAiZXJyb3IiLCAib3BhcXVlIiwgIm9wYXF1ZXJlZGlyZWN0IiB9OwogCiBb
CisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPUZFVENIX0FQSSwKKyAgICBD
b25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgR2xvYmFsQ29u
dGV4dD1ET01XaW5kb3cmV29ya2VyR2xvYmFsU2NvcGUsCiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVJlc3BvbnNlLApAQCAtMzYsNyArMzgsNyBAQCBl
bnVtIFJlc3BvbnNlVHlwZSB7ICJiYXNpYyIsICJjb3JzIiwgImRlZmF1bHQiLCAiZXJyb3IiLCAi
b3BhcXVlIiwgIm9wYXF1ZXJlZGlyZQogXQogaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAg
IC8vIEZJWE1FOiBOZXdPYmplY3QgZG9lcyBub3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQgZm9yIHN0
YXRpYyBtZXRob2RzLgotICAgIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9y
KCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbiwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwg
dW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBS
ZXNwb25zZVR5cGUgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3IuaAppbmRleCBlYjVkZmZmNjgxNTM1ZGQ4ZDczZjRiMTZiNmJjMWE3M2M3Njc1Zjcw
Li42ZmRkN2U0ODZmMzdkZDczMTMwMjQ4ZmEwYzU5ZDc2ZjVhNDBiMTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCkBAIC0yMjAsNiArMjIwLDgg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU0J1aWx0aW5Db24KIHsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0gSlND
Ojpqc0Nhc3Q8SlNCdWlsdGluQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIGF1
dG8qIG9iamVjdCA9IGNhc3RlZFRoaXMtPmNyZWF0ZUpTT2JqZWN0KCk7CisgICAgaWYgKCFvYmpl
Y3QpCisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVy
cm9yKCpzdGF0ZSwgaW5mbygpLT5jbGFzc05hbWUpOwogICAgIGNhbGxGdW5jdGlvbldpdGhDdXJy
ZW50QXJndW1lbnRzKCpzdGF0ZSwgKm9iamVjdCwgKmNhc3RlZFRoaXMtPmluaXRpYWxpemVGdW5j
dGlvbigpKTsKICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggMmJmODE4NzU4ZTA0OTU0ODZkNDYwMjdlOGU0ZWY1YmIxNTgwNzgxOC4uZjFhYTI1MmUw
YTE1M2E0N2Y0YTNkYTZkZjU5ZmZkMGM0ZDE3ZmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ3ODMsMTEgKzQ3ODMs
MjQgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAKICAgICBpZiAoSXNKU0J1
aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAg
ICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBDb25zdHJ1Y3RvckNhbGxXaXRoCisgICAgICAg
ICAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgQ29uc3RydWN0b3JDYWxsV2l0aC4K
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOwogdGVtcGxhdGU8PiBKU0M6
OkpTT2JqZWN0KiAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3QoKQogewor
RU5ECisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29u
dGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdp
dGgifSwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkgeworICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGdldERP
TVN0cnVjdHVyZTwke2NsYXNzTmFtZX0+KGdsb2JhbE9iamVjdCgpLT52bSgpLCAqZ2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCpjb250ZXh0
KSk7CitFTkQKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCA8PEVORCk7CiAgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGdldERP
TVN0cnVjdHVyZTwke2NsYXNzTmFtZX0+KGdsb2JhbE9iamVjdCgpLT52bSgpLCAqZ2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCkpOworRU5E
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsK
IH0KIAogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWMwOGUzMTY5NDM3YmYxOTA2YTE5MDUxYjYwODNkMmM5Yzg4YWNjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisKKyNpbmNsdWRlICJDU1NJbXBvcnRS
dWxlLmgiCisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24uaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRl
ICJXZWJLaXRET01Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVj
dC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9K
U19CVUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEhfR0VUX1BSSVZBVEUob2JqKSBHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19X
SVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCwgV2ViS2l0RE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGhQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+IGNvcmVPYmplY3Q7Cit9IFdlYktpdERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoKiBraXQoV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGgqIG9iaikKK3sKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQorICAgICAg
ICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RP
Ul9BTkRfQ0FMTF9XSVRIKHJldCk7CisKKyAgICByZXR1cm4gd3JhcFRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKG9iaik7Cit9CisKK1dlYkNvcmU6OlRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiBjb3JlKFdlYktpdERPTVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiByZXF1ZXN0KQoreworICAg
IHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+
Y29yZU9iamVjdCkgOiAwOworfQorCitXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aCogd3JhcFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoKFdlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoKiBjb3JlT2JqZWN0KQoreworICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKKyAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9B
TkRfQ0FMTF9XSVRIKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRI
X0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCwgImNvcmUtb2JqZWN0IiwgY29y
ZU9iamVjdCwgbnVsbHB0cikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworR19ERUZJ
TkVfVFlQRShXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aCwgd2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9h
bmRfY2FsbF93aXRoLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dp
dGhfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdERPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9E
T01fVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9H
RVRfUFJJVkFURShvYmplY3QpOworCisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOworCisgICAgcHJpdi0+fldlYktpdERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSgpOworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0
b3JfYW5kX2NhbGxfd2l0aF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitz
dGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25z
dHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0
cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9w
ZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9w
YXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQs
IGNvbnN0cnVjdFByb3BlcnRpZXMpOworCisgICAgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNU
X0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRIX0dFVF9QUklW
QVRFKG9iamVjdCk7CisgICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4oV0VCS0lUX0RP
TV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNo
ZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CisKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWls
dGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENsYXNzKiByZXF1ZXN0Q2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1
ZXN0Q2xhc3MpOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNp
emVvZihXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aFByaXZhdGUpKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90
ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2NvbnN0
cnVjdG9yOworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfY2xh
c3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhfZmluYWxpemU7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29u
c3RydWN0b3JfYW5kX2NhbGxfd2l0aF9pbml0KFdlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiByZXF1ZXN0KQoreworICAgIFdlYktpdERPTVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSogcHJpdiA9IFdF
QktJVF9ET01fVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExf
V0lUSF9HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSgpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZjUyYTg3MTFjNDIwODhhNmIyNDU3Zjk5MWUwZDNkNWQxZjYwYTE0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdERP
TVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoX2gKKyNkZWZpbmUg
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhfaAor
CisjaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCisKKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KKyNpbmNsdWRl
IDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ0xBU1NfV0lUSF9KU19CVUlMVElOX0NP
TlNUUlVDVE9SX0FORF9DQUxMX1dJVEggICAgICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NsYXNz
X3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2dldF90eXBlKCkpCisj
ZGVmaW5lIFdFQktJVF9ET01fVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1Jf
QU5EX0NBTExfV0lUSChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RS
VUNUT1JfQU5EX0NBTExfV0lUSCwgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9K
U19CVUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEhfQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ0xBU1Nf
V0lUSF9KU19CVUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEgsIFdlYktpdERPTVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ2xhc3MpCisjZGVmaW5lIFdF
QktJVF9ET01fSVNfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NB
TExfV0lUSChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5E
X0NBTExfV0lUSCkpCisjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9DTEFTU19XSVRIX0pTX0JV
SUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pT
X0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCkpCisjZGVmaW5lIFdFQktJVF9ET01f
VEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9N
X1RZUEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lU
SCwgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhD
bGFzcykpCisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGggeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9
OworCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoQ2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1
aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9nZXRfdHlwZSh2b2lkKTsKKworR19FTkRf
REVDTFMKKworI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLworI2VuZGlm
IC8qIFdlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQ
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRjNzRjYjBkMjgwMmE5YmFlN2M1MDQ4MTI5MmJmNGJjZjA2
YmMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlX2gKKworI2luY2x1ZGUgIlRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisjaW5jbHVkZSA8
d2Via2l0ZG9tL1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIHdyYXBUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aChXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aCopOworV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGtpdChXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aCopOworV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNvcmUoV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqKTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLyogV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGhQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
OWE0NGVkZjk5MmY2NzBhZjI1NmVhZDkwZmM1NGRhZmJlN2VmZDY2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguY3BwCkBAIC0wLDAgKzEsMjI5IEBACisv
KgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhCdWlsdGlu
cy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CisKK2NsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGhQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90
b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307
CisKK3R5cGVkZWYgSlNCdWlsdGluQ29uc3RydWN0b3I8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aD4gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yOworCit0ZW1wbGF0ZTw+IEpTQzo6SlNPYmplY3QqIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6
Y3JlYXRlSlNPYmplY3QoKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aDo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPihnbG9iYWxPYmplY3QoKS0+dm0oKSwgKmds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0KCksIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoOjpjcmVhdGUoKmNvbnRleHQpKTsKK30KKwordGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6Omdl
dFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUq
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZtKQoreworICAgIHJldHVybiB0ZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aEluaXRpYWxpemVUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvZGVHZW5lcmF0b3Iodm0pOworfQorCit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
Q29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVj
dG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZTo6
c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQ
cm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGUpIH07CisKK3Zv
aWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworfQor
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aDo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGgiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgpIH07CisKK0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OkpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aD4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKworSlNPYmplY3QqIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KHZtLCBnbG9iYWxPYmpl
Y3QpOworfQorCit2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGg6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihjZWxsKTsK
KyAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoOjp+SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCgp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghZG9tT2JqZWN0KQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwor
fQorCit2b2lkIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGhDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIGRv
bU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
Cit9CisKK3ZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworfQorCitib29sIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGhPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCA9IGpzQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwor
ICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQp
OworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aC0+d3JhcHBlZCgpLCBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4
dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQFdlYkNvcmVAQDZCQCIpW10pKCk7
IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU0NFRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoRVtdOyB9CisjZW5kaWYKKyNl
bmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoKiBpbXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9
CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGgqIGltcGwpCit7CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7Cisg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdCwgaW1wbCkpCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisg
ICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KGltcGwpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhAV2ViQ29yZUBANkJAIikpOworI2Vs
c2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTQ0VGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhFWzJdOworI2lmIENPTVBJ
TEVSKENMQU5HKQorICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGggZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQg
dG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIENPTVBJTEVfQVNTRVJUKF9faXNfcG9seW1v
cnBoaWMoVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgpLCBUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aF9pc19ub3RfcG9seW1vcnBo
aWMpOworI2VuZGlmCisjZW5kaWYKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlv
dSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggaGFzIHN1YmNsYXNzZXMg
dGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIHlvdSB0byBvcHQgb3V0
IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFs
aWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJF
TEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVy
KTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjp0b1dyYXBwZWQoSlNDOjpKU1Zh
bHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4odmFsdWUpKQorICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYyZmQ4Nzg2ZTc0YWI3YTk3
YTY2ZmUxY2I3NTNkMjhlYzhkZjg1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGhfaAorI2RlZmluZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoX2gKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+IHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aD4gQmFzZTsKKyAgICBzdGF0aWMgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKKworICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJvdGVjdGVk
OgorICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgfQorCit9OworCitjbGFzcyBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBj
b250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpT
Qzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2
b2lkKiB3cmFwcGVyS2V5KFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30K
KworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKik7CitpbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aCYgaW1wbCkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAmaW1wbCk7IH0K
K0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCop
OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGQzMWU1NTQ5NWFlYzMzYmE4MWMyMTA3OTE1YjA4YjUw
YmY4ZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGguaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdl
YkNvcmUvRE9NT2JqZWN0Lmg+CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkK
K1dFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGggOiBET01PYmplY3QKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGgubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RkYWNiN2I5ZTkwYzUxMTM1MDhmMTY1MGViZjI4ZDNiYmQx
MmFmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
Lm1tCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aC5oIgorCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoLmgiCisjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiV2Vi
Q29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihfaW50
ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aAorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9i
akNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVy
IGRlYWxsb2NdOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoKiBjb3JlKERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aCo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01UZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCAqa2l0KFdlYkNvcmU6OlRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiB2YWx1ZSkKK3sKKyAgICBXZWJD
b3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgaWYgKERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCisgICAgICAg
IHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgRE9NVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggKndyYXBwZXIgPSBbW0RPTVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIGFsbG9jXSBfaW5pdF07Cisg
ICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KHZhbHVlKTsKKyAgICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCB2YWx1ZSk7CisgICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoSW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2NhNzA5MDA2
YWI1NDAwYjRmMDg5ZDM4NGEyOTBhNDQyNTRlN2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8q
CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
CisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDsKK30KKworV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNv
cmUoRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggKik7CitX
RUJDT1JFX0VYUE9SVCBET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aCAqa2l0KFdlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
aWRsCmluZGV4IGY3NzAzZTY5MmVhMWRkMTgzNDUzNWMyNjkwYmZmNjhlMDU0ODA1ZDguLmFkODY5
NmMxMWMwZmYyNzliOWI1OTExZTg0YjYzM2U3ZmRkYTBjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaWRsCkBAIC0yNyw2ICsyNyw3IEBACiAgKi8K
IAogWworICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAg
ICBKU0J1aWx0aW5Db25zdHJ1Y3RvcgotXSBpbnRlcmZhY2UgVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yIHsKK10gaW50ZXJmYWNlIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoIHsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGguaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzcwM2U2
OTJlYTFkZDE4MzQ1MzVjMjY5MGJmZjY4ZTA1NDgwNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9y
CitdIGludGVyZmFjZSBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgeworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272498</attachid>
            <date>2016-02-29 09:59:55 -0800</date>
            <delta_ts>2016-03-03 00:30:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154729-20160229185938.patch</filename>
            <type>text/plain</type>
            <size>58037</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwZjEwOGI4NjRjMzZh
ZGI3YTQ3NGZlNmJiY2I0ODA3YTgyNTc4NS4uMzgyZjJlOTc5N2VhOGQ0ZTEyMTc5MTVmNTM3YjAy
NGNhYmQzZmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAyMDE2LTAyLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgW0ZldGNo
IEFQSV0gTWFrZSBGZXRjaFJlcXVlc3QgYW5kIEZldGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1ha2luZyBGZXRjaFJlcXVlc3QgYW5kIEZl
dGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICBGZXRjaFJlc3BvbnNlIGhhdmlu
ZyBhIEpTQnVpbHRpbkNvbnN0cnVjdG9yLCB0aGUgYmluZGluZyBnZW5lcmF0b3IgaXMgdXBkYXRl
ZCB0byBzdXBwb3J0IENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dC4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVx
dWVzdDo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjphY3RpdmVET01P
YmplY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2Vi
S2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jbGFzc193
aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2Fu
ZF9jYWxsX3dpdGhfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NsYXNz
X3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2NsYXNzX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rv
cl9hbmRfY2FsbF93aXRoX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoUHJvdG90eXBlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGg6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmdldFByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aDo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhP
d25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OnRvV3JhcHBlZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGguaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9N
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggZGVhbGxvY10pOgor
ICAgICAgICAoY29yZSk6CisgICAgICAgIChraXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwuCisKKzIwMTYtMDItMjkgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKwogICAgICAgICBSZWZhY3Rv
ciBGZXRjaEJvZHkgY29uc3RydWN0b3JzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IGI2ODY4MWFhMTYzMDg4NjNhZDRiMTA2YmZlZGM5YjU5
MWQyMDQyYjcuLjg1OTY1NzAxZmVkOGFiYTRiMjRmYmUwZWQ3M2I1MWU2MzFiN2I3MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTI2Niw3
ICsyNjYsNyBAQCBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoV1RGTW92
ZShib2R5KSwgaGVhZGVycy5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUmVxdWVz
dCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoV1RGTW92ZShib2R5
KSwgaGVhZGVycy5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUmVxdWVzdCksIGNv
bnRleHQpKTsKIH0KIAogUmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0KiBpbnB1dCwgY29u
c3QgRGljdGlvbmFyeSYgaW5pdCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yOTcsNyArMjk3LDcg
QEAgUmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2gKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUoYm9keSks
IGhlYWRlcnMucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUoYm9keSksIGhlYWRl
cnMucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpLCBjb250ZXh0KSk7
CiB9CiAKIFN0cmluZyBGZXRjaFJlcXVlc3Q6OnR5cGUoKSBjb25zdApAQCAtNDQzLDcgKzQ0Mywx
NyBAQCBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNsb25lKEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBWYWxpZGF0ZSBib2R5IHRlZWluZy4KLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5KG1fYm9keSksIEZl
dGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIEZldGNoUmVxdWVzdDo6SW50ZXJu
YWxSZXF1ZXN0KG1faW50ZXJuYWxSZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZldGNoUmVxdWVzdChGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9o
ZWFkZXJzLmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJl
cXVlc3QpLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7Cit9CisKK2NvbnN0IGNoYXIqIEZl
dGNoUmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJS
ZXF1ZXN0IjsKK30KKworYm9vbCBGZXRjaFJlcXVlc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApp
bmRleCA3ZmEwODMxM2NlMzYwY2VlNGEwMWZjY2U4MDNhZDk2MWMxMjc2MWM3Li5iMTJlOTgyNTk3
MzY4OGQwODhiZWQ4ZGQzZDllMDBmZjg5ZmExZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShG
RVRDSF9BUEkpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJGZXRj
aEJvZHkuaCIKICNpbmNsdWRlICJGZXRjaEhlYWRlcnMuaCIKICNpbmNsdWRlICJGZXRjaE9wdGlv
bnMuaCIKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAog
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgRmV0Y2hSZXF1ZXN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8RmV0Y2hSZXF1ZXN0PiB7CitjbGFzcyBGZXRjaFJlcXVlc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxGZXRjaFJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBGZXRjaFJlcXVlc3QqLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25D
b2RlJik7CkBAIC04MywxOCArODQsMjQgQEAgcHVibGljOgogICAgIEZldGNoQm9keSYgYm9keSgp
IHsgcmV0dXJuIG1fYm9keTsgfQogCiBwcml2YXRlOgotICAgIEZldGNoUmVxdWVzdChGZXRjaEJv
ZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJuYWxSZXF1ZXN0JiYpOworICAgIEZldGNo
UmVxdWVzdChGZXRjaEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJuYWxSZXF1ZXN0
JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBB
UEkuCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZldGNoQm9keSBtX2JvZHk7CiAgICAgUmVmPEZl
dGNoSGVhZGVycz4gbV9oZWFkZXJzOwogICAgIEludGVybmFsUmVxdWVzdCBtX2ludGVybmFsUmVx
dWVzdDsKIH07CiAKLWlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChGZXRjaEJvZHkm
JiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIEludGVybmFsUmVxdWVzdCYmIGlu
dGVybmFsUmVxdWVzdCkKLSAgICA6IG1fYm9keShXVEZNb3ZlKGJvZHkpKQoraW5saW5lIEZldGNo
UmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+
JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJuYWxSZXF1ZXN0LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQor
ICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCiAgICAgLCBtX2hlYWRlcnMoV1RGTW92ZShoZWFk
ZXJzKSkKICAgICAsIG1faW50ZXJuYWxSZXF1ZXN0KFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkK
IHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCmluZGV4IGY0
Yzc2NmNjZGNjMDcwMDNiYjJkNTVjNWFjNWY0ZmU0MWM4ZjFiZWYuLjhkYWMwZGFmMmM0OGQ5ZDdm
ODdkZmY0Mzg5OTZmYjJkNmFmMWQzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVxdWVzdC5pZGwKQEAgLTM1LDEzICszNSwxMyBAQCBlbnVtIFJlcXVlc3RSZWRp
cmVjdCB7ICJmb2xsb3ciLCAiZXJyb3IiLCAibWFudWFsIiB9OwogZW51bSBSZWZlcnJlclBvbGlj
eSB7ICIiLCAibm8tcmVmZXJyZXIiLCAgIm5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlIiwgIm9y
aWdpbi1vbmx5IiwgIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIsICJ1bnNhZmUtdXJsIiB9Owog
CiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPUZFVENIX0FQSSwKICAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgQ29uc3Ry
dWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgQ29uc3RydWN0b3IoRmV0Y2hSZXF1ZXN0IGlucHV0
LCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERpY3Rpb25hcnkgaW5pdCksCiAgICAgQ29u
c3RydWN0b3IoRE9NU3RyaW5nIGlucHV0LCBbRGVmYXVsdD1VbmRlZmluZWRdICBvcHRpb25hbCBE
aWN0aW9uYXJ5IGluaXQpLAogICAgIEdsb2JhbENvbnRleHQ9RE9NV2luZG93Jldvcmtlckdsb2Jh
bFNjb3BlLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSW50ZXJmYWNlTmFt
ZT1SZXF1ZXN0CiBdCiBpbnRlcmZhY2UgRmV0Y2hSZXF1ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDg3NjIzZGUzNmVmM2FiODIw
M2UzZDQ0NWYxZDI5MDY0YmUwN2U5MzIuLjZkOGE3YTFjNzFiY2Y4MGQwYjQ5Mzk3NTY5MzZjYmJk
YjcxNDdhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtNDgsOSArNDgsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNOdWxsQm9keVN0
YXR1cyhpbnQgc3RhdHVzKQogICAgIHJldHVybiBzdGF0dXMgPT0gMTAxIHx8IHN0YXR1cyA9PSAy
MDQgfHwgc3RhdHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0OwogfQogCi1SZWY8RmV0Y2hSZXNw
b25zZT4gRmV0Y2hSZXNwb25zZTo6ZXJyb3IoKQorUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVz
cG9uc2U6OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBlOjpFcnJvciwgeyB9LCBGZXRjaEhl
YWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJl
c3BvbnNlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKFR5cGU6
OkVycm9yLCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6Oklt
bXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSwgKmNvbnRleHQpKTsKIH0KIAogUmVmUHRyPEZl
dGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTY1LDcgKzY1LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9u
c2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICAgICAg
ZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQ
dHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hS
ZXNwb25zZShUeXBlOjpEZWZhdWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVh
ZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIFJlZlB0
cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJl
c3BvbnNlKFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFk
ZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpLCAqY29udGV4dCkpOwog
ICAgIHJlZGlyZWN0UmVzcG9uc2UtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVz
KTsKICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX2hlYWRlcnMtPmZhc3RTZXQoSFRUUEhlYWRlck5h
bWU6OkxvY2F0aW9uLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICByZXR1cm4gcmVkaXJlY3RS
ZXNwb25zZTsKQEAgLTEwOCwxMiArMTA4LDE0IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6aW5pdGlh
bGl6ZVdpdGgoY29uc3QgRGljdGlvbmFyeSYgaW5pdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
fQogfQogCi1GZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFR5cGUgdHlwZSwgRmV0Y2hCb2R5
JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UpCi0gICAgOiBtX3R5cGUodHlwZSkKK0ZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9u
c2UoVHlwZSB0eXBlLCBGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRl
cnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fdHlwZSh0
eXBlKQogICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAsIG1fYm9keShX
VEZNb3ZlKGJvZHkpKQogICAgICwgbV9oZWFkZXJzKFdURk1vdmUoaGVhZGVycykpCiB7CisgICAg
c3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3Bv
bnNlOjpjbG9uZShFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEyMiw3ICsxMjQsNyBAQCBSZWZQdHI8
RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IGNsb25lZCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNw
b25zZShtX3R5cGUsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFk
ZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CisgICAgUmVmUHRyPEZldGNo
UmVzcG9uc2U+IGNsb25lZCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShtX3R5cGUsIEZl
dGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFkZXJzKCkpLCBSZXNvdXJj
ZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CiAgICAg
Y2xvbmVkLT5tX2lzUmVkaXJlY3RlZCA9IG1faXNSZWRpcmVjdGVkOwogICAgIHJldHVybiBjbG9u
ZWQ7CiB9CkBAIC0xNTMsNiArMTU1LDE2IEBAIEpTQzo6SlNWYWx1ZSBKU0ZldGNoUmVzcG9uc2U6
OmJvZHkoSlNDOjpFeGVjU3RhdGUmKSBjb25zdAogICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwog
fQogCitjb25zdCBjaGFyKiBGZXRjaFJlc3BvbnNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIlJlc3BvbnNlIjsKK30KKworYm9vbCBGZXRjaFJlc3BvbnNlOjpj
YW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZFVENI
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5k
ZXggMTBmZDZlNDMyYTIwZTAxZTk1YWRhZmMwYWIzNzAyZWFlNTBhYWE1NS4uZTQxNGU0M2Y3NTQ3
MjQyYWZmYTY4NWIwNzU5M2ZmYjA3NGQ4NTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShG
RVRDSF9BUEkpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJGZXRj
aEJvZHkuaCIKICNpbmNsdWRlICJGZXRjaEhlYWRlcnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCkBAIC00NSwxMCArNDYsMTAgQEAgY2xhc3MgRGljdGlvbmFyeTsKIAogdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgRmV0Y2hSZXNwb25zZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEZldGNoUmVzcG9uc2U+IHsKK2NsYXNzIEZldGNoUmVzcG9uc2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxGZXRjaFJlc3BvbnNlPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNy
ZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2UoKSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcigpOworICAgIHN0YXRpYyBS
ZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBlOjpEZWZhdWx0LCB7IH0s
IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVz
b3VyY2VSZXNwb25zZSgpLCBjb250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9u
c2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgUmVmUHRyPEZl
dGNoUmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmLCBpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAvLyBGSVhNRTogQmluZGluZyBnZW5lcmF0
b3Igc2hvdWxkIG5vdCByZXF1aXJlIGJlbG93IG1ldGhvZCB0byBoYW5kbGUgb3B0aW9uYWwgc3Rh
dHVzIHBhcmFtZXRlci4KICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gcmVkaXJlY3QoY29udGV4dCwgdXJsLCAzMDIsIGVjKTsg
fQpAQCAtNzYsNyArNzcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5
cGUgeyBCYXNpYywgQ29ycywgRGVmYXVsdCwgRXJyb3IsIE9wYXF1ZSwgT3BhcXVlUmVkaXJlY3Qg
fTsKIAotICAgIEZldGNoUmVzcG9uc2UoVHlwZSwgRmV0Y2hCb2R5JiYsIFJlZjxGZXRjaEhlYWRl
cnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisgICAgRmV0Y2hSZXNwb25zZShUeXBlLCBGZXRj
aEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJCisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRs
CmluZGV4IGU3MGY0YjkxZDA1YTVjODNkMmZkMGZjYzA2ZDM5MDQ4Y2VjOTcwNmYuLjgxNzFmZGZj
MjExYzhjOTBhNDdjZjU4ZmY2MWE1YjYyMTg4OGZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAtMjgsMTUgKzI4LDE2IEBACiBlbnVt
IFJlc3BvbnNlVHlwZSB7ICJiYXNpYyIsICJjb3JzIiwgImRlZmF1bHQiLCAiZXJyb3IiLCAib3Bh
cXVlIiwgIm9wYXF1ZXJlZGlyZWN0IiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbmRpdGlvbmFsPUZFVENIX0FQSSwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsCiAgICAgR2xvYmFsQ29udGV4dD1ET01XaW5kb3cmV29ya2VyR2xvYmFs
U2NvcGUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1l
PVJlc3BvbnNlLAogICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yCiBdCiBpbnRlcmZhY2UgRmV0Y2hS
ZXNwb25zZSB7CiAgICAgLy8gRklYTUU6IE5ld09iamVjdCBkb2VzIG5vdCBzZWVtIHRvIGJlIHN1
cHBvcnRlZCBmb3Igc3RhdGljIG1ldGhvZHMuCi0gICAgc3RhdGljIEZldGNoUmVzcG9uc2UgZXJy
b3IoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIEZldGNo
UmVzcG9uc2UgZXJyb3IoKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uLCBDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBzdGF0aWMgRmV0Y2hSZXNwb25zZSByZWRpcmVjdChET01TdHJpbmcg
dXJsLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBzdGF0dXMgPSAzMDIpOwogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFJlc3BvbnNlVHlwZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCmluZGV4IGViNWRmZmY2ODE1MzVkZDhkNzNmNGIxNmI2
YmMxYTczYzc2NzVmNzAuLjZmZGQ3ZTQ4NmYzN2RkNzMxMzAyNDhmYTBjNTlkNzZmNWE0MGIxMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKQEAg
LTIyMCw2ICsyMjAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQnVpbHRpbkNvbgogewogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBKU0M6OmpzQ2FzdDxKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxs
ZWUoKSk7CiAgICAgYXV0byogb2JqZWN0ID0gY2FzdGVkVGhpcy0+Y3JlYXRlSlNPYmplY3QoKTsK
KyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVu
dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBpbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgY2FsbEZ1
bmN0aW9uV2l0aEN1cnJlbnRBcmd1bWVudHMoKnN0YXRlLCAqb2JqZWN0LCAqY2FzdGVkVGhpcy0+
aW5pdGlhbGl6ZUZ1bmN0aW9uKCkpOwogICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShv
YmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCAyYmY4MTg3NThlMDQ5NTQ4NmQ0NjAyN2U4ZTRlZjViYjE1ODA3
ODE4Li5mMWFhMjUyZTBhMTUzYTQ3ZjRhM2RhNmRmNTlmZmQwYzRkMTdmZTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
NDc4MywxMSArNDc4MywyNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIAog
ICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluQ29uc3RydWN0b3Ii
fSkgewotICAgICAgICAgICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIENvbnN0cnVjdG9yQ2Fs
bFdpdGgKKyAgICAgICAgICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciBDb25zdHJ1
Y3RvckNhbGxXaXRoLgogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7CiB0
ZW1wbGF0ZTw+IEpTQzo6SlNPYmplY3QqICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGVK
U09iamVjdCgpCiB7CitFTkQKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5k
ZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpKSB7CisgICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJHtjbGFzc05hbWV9
OjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPCR7Y2xhc3NOYW1lfT4oZ2xvYmFsT2JqZWN0KCktPnZt
KCksICpnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCAke2ludGVyZmFjZU5hbWV9Ojpj
cmVhdGUoKmNvbnRleHQpKTsKK0VORAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKICAgICByZXR1cm4gJHtjbGFzc05hbWV9
OjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPCR7Y2xhc3NOYW1lfT4oZ2xvYmFsT2JqZWN0KCktPnZt
KCksICpnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCAke2ludGVyZmFjZU5hbWV9Ojpj
cmVhdGUoKSk7CitFTkQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgPDxFTkQpOwogfQogCiBFTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzA4ZTMxNjk0MzdiZjE5MDZhMTkwNTFiNjA4
M2QyYzljODhhY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGguY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9N
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaCIKKworI2luY2x1
ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKKyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01U
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByaXZhdGUuaCIKKyNp
bmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjZGVmaW5lIFdFQktJVF9ET01fVEVT
VF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9HRVRfUFJJ
VkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQ
RV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRILCBX
ZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByaXZh
dGUpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aFByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4gY29yZU9iamVjdDsKK30gV2Vi
S2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGtpdChXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogb2JqKQoreworICAgIGlmICghb2JqKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0
KG9iaikpCisgICAgICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9KU19CVUlM
VElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEgocmV0KTsKKworICAgIHJldHVybiB3cmFwVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgob2JqKTsKK30KKworV2Vi
Q29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNvcmUo
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIHJl
cXVlc3QpCit7CisgICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCo+KFdFQktJVF9ET01fT0JK
RUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Cit9CisKK1dlYktpdERPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiB3cmFwVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNvcmVPYmplY3QpCit7CisgICAgQVNTRVJUKGNvcmVP
YmplY3QpOworICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9KU19CVUlMVElO
X0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEgoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9U
RVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRILCAiY29y
ZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCitHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoLCB3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGgsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCisKK3N0
YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0
b3JfYW5kX2NhbGxfd2l0aF9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0
RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlKiBw
cml2ID0gV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9B
TkRfQ0FMTF9XSVRIX0dFVF9QUklWQVRFKG9iamVjdCk7CisKKyAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CisKKyAgICBwcml2LT5+V2Vi
S2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRl
KCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVp
bHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Cit9CisKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9q
c19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhfY29uc3RydWN0b3IoR1R5cGUgdHlw
ZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0q
IGNvbnN0cnVjdFByb3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9h
bmRfY2FsbF93aXRoX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFBy
b3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisKKyAgICBXZWJLaXRET01UZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9KU19CVUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxM
X1dJVEhfR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGgqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKKwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jbGFz
c193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9jbGFzc19pbml0KFdl
YktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ2xhc3Mq
IHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdv
YmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSkpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3Ig
PSB3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9j
YWxsX3dpdGhfY29uc3RydWN0b3I7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0
aF9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhf
anNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2luaXQoV2ViS2l0RE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIHJlcXVlc3QpCit7CisgICAg
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJV
Q1RPUl9BTkRfQ0FMTF9XSVRIX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJpdikg
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2
YXRlKCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNmNTJhODcxMWM0MjA4OGE2YjI0NTdmOTkxZTBkM2Q1ZDFmNjBhMTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGhfaAorI2RlZmluZSBXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aF9oCisKKyNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVj
dC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRI
X0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCAgICAgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJ
Tl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRIKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9URVNUX0NMQVNTX1dJVEhfSlNf
QlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRILCBXZWJLaXRET01UZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCkpCisjZGVmaW5lIFdFQktJVF9ET01fVEVT
VF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZ
UEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCwg
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDbGFz
cykKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05T
VFJVQ1RPUl9BTkRfQ0FMTF9XSVRIKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9D
T05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRIKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0NM
QVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRIX0NMQVNTKGtsYXNz
KSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9URVNU
X0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRIKSkKKyNkZWZp
bmUgV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRf
Q0FMTF9XSVRIX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9ET01fVFlQRV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RP
Ul9BTkRfQ0FMTF9XSVRILCBXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aENsYXNzKSkKKworc3RydWN0IF9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCB7CisgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVu
dF9pbnN0YW5jZTsKK307CisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDbGFzcyB7CisgICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2RvbV90ZXN0X2Ns
YXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2dldF90eXBlKHZv
aWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVf
QVBJICovCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGhfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM3NGNiMGQyODAyYTliYWU3YzUw
NDgxMjkyYmY0YmNmMDZiYzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAq
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
KiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRET01UZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRE
T01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByaXZhdGVfaAor
CisjaW5jbHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgu
aCIKKyNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGguaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitXZWJLaXRET01U
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogd3JhcFRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKFdlYkNvcmU6OlRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKik7CitXZWJLaXRET01UZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCoga2l0KFdlYkNvcmU6OlRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKik7CitXZWJDb3JlOjpUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogY29yZShXZWJLaXRET01UZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCopOworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aFByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGguY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5YTQ0ZWRmOTkyZjY3MGFmMjU2ZWFkOTBmYzU0ZGFmYmU3ZWZkNjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5jcHAKQEAgLTAs
MCArMSwyMjkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGguaCIKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aEJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
PgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owordm9pZCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5
cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJu
IHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aFByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYpOworfTsKKwordHlwZWRlZiBKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPiBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I7CisKK3RlbXBsYXRlPD4gSlND
OjpKU09iamVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aENvbnN0cnVjdG9yOjpjcmVhdGVKU09iamVjdCgpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVj
dCgpLT52bSgpLCAqZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmNyZWF0ZSgqY29udGV4dCkpOworfQor
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BB
UkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9
CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aDo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgiKSkpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IEZ1bmN0
aW9uRXhlY3V0YWJsZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aENvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pCit7CisgICAgcmV0
dXJuIHRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoSW5pdGlhbGl6
ZVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29kZUdlbmVyYXRv
cih2bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7Cisg
ICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3Rv
dHlwZSkgfTsKKwordm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCkgfTsK
KworSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCitKU09iamVjdCogSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6Y3JlYXRlUHJvdG90eXBl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGhQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpnZXRQcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Q
cm90b3R5cGU8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4o
dm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK3ZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGg6On5KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGhQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFk
b21PYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGg6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7Cit9CisKK3ZvaWQgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGhQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCisgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGhDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK2Jvb2wgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoID0ganNDYXN0PEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLT53cmFwcGVkKCksIGpzVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgpOworfQorCisjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVy
KCI/P183VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhAV2ViQ29y
ZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43
V2ViQ29yZTQ0VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhFW107
IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGltcGwpCit7CisgICAgaWYgKCFpbXBs
KQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4oZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aCogaW1wbCkKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVy
biBqc051bGwoKTsKKyAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4oZ2xvYmFsT2Jq
ZWN0LCBpbXBsKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oaW1wbCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aEBXZWJDb3Jl
QEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlNDRUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aEVb
Ml07CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCBkb2VzIG5vdCBoYXZlIGEgdnRhYmxl
LCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgQ09NUElMRV9BU1NF
UlQoX19pc19wb2x5bW9ycGhpYyhUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aCksIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoX2lz
X25vdF9wb2x5bW9ycGhpYyk7CisjZW5kaWYKKyNlbmRpZgorICAgIC8vIElmIHlvdSBoaXQgdGhp
cyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAg
IC8vIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIGhhcyBzdWJj
bGFzc2VzLiBJZiBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCBo
YXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVu
dGx5IHJlcXVpcmUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgg
eW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhl
IFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZp
bml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aD4oZ2xvYmFsT2JqZWN0
LCBpbXBsKTsKK30KKworVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGgqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgq
Pih2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjJm
ZDg3ODZlNzRhYjdhOTdhNjZmZTFjYjc1M2QyOGVjOGRmODUxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaApAQCAtMCwwICsxLDkyIEBACisvKgorICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAg
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aF9oCisjZGVmaW5lIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhfaAorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVk
ZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaCIKKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIDogcHVibGlj
IEpTRE9NV3JhcHBlcjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aD4geworcHVibGljOgorICAgIHR5cGVkZWYgSlNET01XcmFwcGVyPFRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPiBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPiYmIGltcGwpCisgICAgewor
ICAgICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aChzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOworCisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYp
OworCitwcm90ZWN0ZWQ6CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPiYmKTsKKworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB9CisK
K307CisKK2NsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGhPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9
OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVy
V29ybGQmLCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCopCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsK
K30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGgqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBh
YmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGgqKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoJiBpbXBsKSB7IHJldHVybiB0b0pTKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsICZpbXBsKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoKik7CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZDMxZTU1NDk1YWVjMzNiYTgx
YzIxMDc5MTViMDhiNTBiZjhlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aC5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworV0VCS0lUX0NMQVNTX0FWQUlMQUJM
RV9NQUMoOTg3Nl81KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01UZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCA6IERPTU9iamVjdAorQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGRhY2I3YjllOTBjNTExMzUwOGYx
NjUwZWJmMjhkM2JiZDEyYWZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGgubW0KQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisKKyNpbXBvcnQgIkRPTU5vZGVJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGhJbnRlcm5hbC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNp
bXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaCIKKyNpbXBvcnQgIlRocmVhZENoZWNrLmgi
CisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElNUEwgcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aCo+KF9pbnRlcm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTVRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoCisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggY2xhc3NdLCBzZWxmKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYo
KTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKKworV2ViQ29yZTo6VGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNvcmUoRE9NVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggKndyYXBwZXIpCit7CisgICAgcmV0dXJu
IHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisK
K0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoICpraXQoV2Vi
Q29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIHZhbHVl
KQoreworICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoRE9NVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAg
ICBET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCAqd3JhcHBl
ciA9IFtbRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggYWxs
b2NdIF9pbml0XTsKKyAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERP
TU9iamVjdEludGVybmFsKj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01X
cmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2Vd
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhJbnRlcm5h
bC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhJbnRlcm5hbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM3Y2E3MDkwMDZhYjU0MDBiNGYwODlkMzg0YTI5MGE0NDI1NGU3YTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aEludGVybmFsLmgKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOworfQorCitX
RUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aCogY29yZShET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aCAqKTsKK1dFQkNPUkVfRVhQT1JUIERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoICpraXQoV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGgqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5pZGwKaW5kZXggZjc3MDNlNjkyZWExZGQxODM0NTM1YzI2OTBiZmY2OGUw
NTQ4MDVkOC4uYWQ4Njk2YzExYzBmZjI3OWI5YjU5MTFlODRiNjMzZTdmZGRhMGM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwKQEAgLTI3LDYg
KzI3LDcgQEAKICAqLwogCiBbCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yCi1dIGludGVyZmFjZSBUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgeworXSBpbnRlcmZhY2UgVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3NzAzZTY5MmVhMWRkMTgzNDUzNWMyNjkwYmZmNjhlMDU0ODA1ZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaWRsCkBAIC0wLDAgKzEsMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgSlNCdWls
dGluQ29uc3RydWN0b3IKK10gaW50ZXJmYWNlIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvciB7Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272740</attachid>
            <date>2016-03-03 00:30:31 -0800</date>
            <delta_ts>2016-03-04 09:49:41 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-154729-20160303093014.patch</filename>
            <type>text/plain</type>
            <size>58362</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJhZTM3ZWI4Y2U3OTRh
NWE0Nzg3Y2JlZDEwYmYyODhjOGRhNmQ5Yi4uZDI3OTE4MDQ5NzIyYmFmNGFmNTYzODc3YmQxYTUy
M2ExZmMyYjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDE2LTAzLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gTWFrZSBGZXRjaFJlcXVlc3QgYW5kIEZldGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1ha2luZyBGZXRjaFJlcXVlc3QgYW5kIEZl
dGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICBCb3RoIG9iamVjdHMgY2FuIGFs
d2F5cyBiZSBzdXNwZW5kZWQgbm93LgorICAgICAgICBUaGlzIG1pZ2h0IGJlIHVwZGF0ZWQgd2hl
biBibG9iIGNvbnZlcnNpb24gaXMgYWRkZWQgb3Igd2hlbiBmZXRjaGluZyBkYXRhIHRvIGZpbGwg
aW4gRmV0Y2hSZXNwb25zZS4KKworICAgICAgICBDb25zdHJ1Y3RvcnMgbm93IHRha2UgYSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICBGZXRjaFJlc3BvbnNlIGhhdmluZyBhIEpTQnVp
bHRpbkNvbnN0cnVjdG9yLCB0aGUgYmluZGluZyBnZW5lcmF0b3IgaXMgdXBkYXRlZCB0byBzdXBw
b3J0IENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KKyAgICAgICAg
VGhpcyBpbiBwYXJ0aWN1bGFyIHJlcXVpcmVzIHRvIGFkZCB0aHJvd2luZyBleGNlcHRpb24gd2hl
biBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG9iamVjdCBpcyBudWxsIGF0IHRoZSB0aW1lIG9mIGJ1
aWx0aW4gb2JqZWN0IGNyZWF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1
ZXN0OjpGZXRjaFJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6cmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6
RmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjbG9uZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjphY3RpdmVET01PYmplY3ROYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xh
c3M+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFw
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2Fs
bF93aXRoX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pz
X2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9jb25zdHJ1Y3Rvcik6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9j
YWxsX3dpdGhfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0
aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhfaW5pdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0
cnVjdG9yOjpjcmVhdGVKU09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGhDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpjcmVhdGVQcm90b3R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpnZXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OndyYXBwZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGguaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgubW06
IEFkZGVkLgorICAgICAgICAoLVtET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aCBkZWFsbG9jXSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKGtpdCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlk
bDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlk
bC4KKwogMjAxNi0wMy0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIERyb3AgW1RyZWF0TnVsbEFzPUxlZ2FjeU51bGxTdHJpbmddIGZyb20gSFRNTEJhc2VFbGVt
ZW50LmhyZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNw
cAppbmRleCBiNjg2ODFhYTE2MzA4ODYzYWQ0YjEwNmJmZWRjOWI1OTFkMjA0MmI3Li44NTk2NTcw
MWZlZDhhYmE0YjI0ZmJlMGVkNzNiNTFlNjMxYjdiNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgUmVmUHRy
PEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUoYm9keSksIGhlYWRlcnMu
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUoYm9keSksIGhlYWRlcnMucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpLCBjb250ZXh0KSk7CiB9CiAKIFJl
ZlB0cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCogaW5wdXQsIGNvbnN0IERpY3Rpb25hcnkmIGlu
aXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk3LDcgKzI5Nyw3IEBAIFJlZlB0cjxGZXRjaFJl
cXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZldGNoCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChXVEZNb3ZlKGJvZHkpLCBoZWFkZXJzLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZldGNoUmVxdWVzdChXVEZNb3ZlKGJvZHkpLCBoZWFkZXJzLnJlbGVhc2VOb25OdWxs
KCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSwgY29udGV4dCkpOwogfQogCiBTdHJpbmcgRmV0
Y2hSZXF1ZXN0Ojp0eXBlKCkgY29uc3QKQEAgLTQ0Myw3ICs0NDMsMTcgQEAgUmVmUHRyPEZldGNo
UmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogVmFsaWRhdGUgYm9keSB0ZWVpbmcuCi0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXF1ZXN0KEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0
ZShtX2hlYWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdChtX2ludGVy
bmFsUmVxdWVzdCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoRmV0
Y2hCb2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIEZl
dGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0KG1faW50ZXJuYWxSZXF1ZXN0KSwgKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkpOworfQorCitjb25zdCBjaGFyKiBGZXRjaFJlcXVlc3Q6OmFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiUmVxdWVzdCI7Cit9CisKK2Jv
b2wgRmV0Y2hSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggN2ZhMDgzMTNjZTM2
MGNlZTRhMDFmY2NlODAzYWQ5NjFjMTI3NjFjNy4uYjEyZTk4MjU5NzM2ODhkMDg4YmVkOGRkM2Q5
ZTAwZmY4OWZhMWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVx
dWVzdC5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCiAjaW5jbHVk
ZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCkBAIC00Myw3ICs0
NCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLWNsYXNzIEZldGNoUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNo
UmVxdWVzdD4geworY2xhc3MgRmV0Y2hSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hS
ZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hS
ZXF1ZXN0KiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMg
UmVmUHRyPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtODMsMTgg
Kzg0LDI0IEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7
IH0KIAogcHJpdmF0ZToKLSAgICBGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5JiYsIFJlZjxGZXRjaEhl
YWRlcnM+JiYsIEludGVybmFsUmVxdWVzdCYmKTsKKyAgICBGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5
JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIEludGVybmFsUmVxdWVzdCYmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgorICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBGZXRjaEJvZHkgbV9ib2R5OwogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVh
ZGVyczsKICAgICBJbnRlcm5hbFJlcXVlc3QgbV9pbnRlcm5hbFJlcXVlc3Q7CiB9OwogCi1pbmxp
bmUgRmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNo
SGVhZGVycz4mJiBoZWFkZXJzLCBJbnRlcm5hbFJlcXVlc3QmJiBpbnRlcm5hbFJlcXVlc3QpCi0g
ICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKK2lubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVx
dWVzdChGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIEludGVy
bmFsUmVxdWVzdCYmIGludGVybmFsUmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fYm9keShXVEZN
b3ZlKGJvZHkpKQogICAgICwgbV9oZWFkZXJzKFdURk1vdmUoaGVhZGVycykpCiAgICAgLCBtX2lu
dGVybmFsUmVxdWVzdChXVEZNb3ZlKGludGVybmFsUmVxdWVzdCkpCiB7CisgICAgc3VzcGVuZElm
TmVlZGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAppbmRleCBmNGM3NjZjY2RjYzA3MDAzYmIy
ZDU1YzVhYzVmNGZlNDFjOGYxYmVmLi44ZGFjMGRhZjJjNDhkOWQ3Zjg3ZGZmNDM4OTk2ZmIyZDZh
ZjFkMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVx
dWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
aWRsCkBAIC0zNSwxMyArMzUsMTMgQEAgZW51bSBSZXF1ZXN0UmVkaXJlY3QgeyAiZm9sbG93Iiwg
ImVycm9yIiwgIm1hbnVhbCIgfTsKIGVudW0gUmVmZXJyZXJQb2xpY3kgeyAiIiwgIm5vLXJlZmVy
cmVyIiwgICJuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSIsICJvcmlnaW4tb25seSIsICJvcmln
aW4td2hlbi1jcm9zcy1vcmlnaW4iLCAidW5zYWZlLXVybCIgfTsKIAogWworICAgIEFjdGl2ZURP
TU9iamVjdCwKICAgICBDb25kaXRpb25hbD1GRVRDSF9BUEksCiAgICAgQ29uc3RydWN0b3JDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0
aW9uLAogICAgIENvbnN0cnVjdG9yKEZldGNoUmVxdWVzdCBpbnB1dCwgW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBEaWN0aW9uYXJ5IGluaXQpLAogICAgIENvbnN0cnVjdG9yKERPTVN0cmlu
ZyBpbnB1dCwgW0RlZmF1bHQ9VW5kZWZpbmVkXSAgb3B0aW9uYWwgRGljdGlvbmFyeSBpbml0KSwK
ICAgICBHbG9iYWxDb250ZXh0PURPTVdpbmRvdyZXb3JrZXJHbG9iYWxTY29wZSwKLSAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9UmVxdWVzdAogXQogaW50
ZXJmYWNlIEZldGNoUmVxdWVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAppbmRleCA4NzYyM2RlMzZlZjNhYjgyMDNlM2Q0NDVmMWQyOTA2NGJl
MDdlOTMyLi42ZDhhN2ExYzcxYmNmODBkMGI0OTM5NzU2OTM2Y2JiZGI3MTQ3YTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQ4LDkg
KzQ4LDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzTnVsbEJvZHlTdGF0dXMoaW50IHN0YXR1cykK
ICAgICByZXR1cm4gc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAy
MDUgfHwgc3RhdHVzID09IDMwNDsKIH0KIAotUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9u
c2U6OmVycm9yKCkKK1JlZjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjplcnJvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoVHlwZTo6RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBlOjpFcnJvciwgeyB9LCBGZXRj
aEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJj
ZVJlc3BvbnNlKCksICpjb250ZXh0KSk7CiB9CiAKIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRj
aFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC02NSw3ICs2
NSw3IEBAIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgICAgIGVjID0gVHlwZUVycm9yOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+
IHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RGVm
YXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11
dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4g
cmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShUeXBlOjpEZWZh
dWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0
YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSwgKmNvbnRleHQpKTsKICAgICByZWRpcmVjdFJlc3Bv
bnNlLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7CiAgICAgcmVkaXJlY3RS
ZXNwb25zZS0+bV9oZWFkZXJzLT5mYXN0U2V0KEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbiwgcmVx
dWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgcmV0dXJuIHJlZGlyZWN0UmVzcG9uc2U7CkBAIC0xMDgs
MTIgKzEwOCwxNCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVXaXRoKGNvbnN0IERp
Y3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIH0KIAotRmV0Y2hSZXNw
b25zZTo6RmV0Y2hSZXNwb25zZShUeXBlIHR5cGUsIEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRj
aEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQotICAgIDog
bV90eXBlKHR5cGUpCitGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFR5cGUgdHlwZSwgRmV0
Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fcmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAg
ICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRlcnMpKQogeworICAgIHN1c3BlbmRJZk5lZWRlZCgp
OwogfQogCiBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0xMjIsNyArMTI0LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZl
dGNoUmVzcG9uc2U6OmNsb25lKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IFR5cGVF
cnJvcjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBjbG9uZWQgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UobV90eXBlLCBGZXRj
aEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VS
ZXNwb25zZShtX3Jlc3BvbnNlKSkpOworICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBjbG9uZWQg
PSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UobV90eXBlLCBGZXRjaEJvZHkobV9ib2R5KSwg
RmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3Bv
bnNlKSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwogICAgIGNsb25lZC0+bV9pc1JlZGly
ZWN0ZWQgPSBtX2lzUmVkaXJlY3RlZDsKICAgICByZXR1cm4gY2xvbmVkOwogfQpAQCAtMTUzLDYg
KzE1NSwxNiBAQCBKU0M6OkpTVmFsdWUgSlNGZXRjaFJlc3BvbnNlOjpib2R5KEpTQzo6RXhlY1N0
YXRlJikgY29uc3QKICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIH0KIAorY29uc3QgY2hhciog
RmV0Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICJSZXNwb25zZSI7Cit9CisKK2Jvb2wgRmV0Y2hSZXNwb25zZTo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDEwZmQ2ZTQzMmEyMGUw
MWU5NWFkYWZjMGFiMzcwMmVhZTUwYWFhNTUuLmU0MTRlNDNmNzU0NzI0MmFmZmE2ODViMDc1OTNm
ZmIwNzRkODU1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCiAjaW5jbHVk
ZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNDUs
MTAgKzQ2LDEwIEBAIGNsYXNzIERpY3Rpb25hcnk7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKLWNsYXNzIEZldGNoUmVzcG9uc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaFJlc3Bv
bnNlPiB7CitjbGFzcyBGZXRjaFJlc3BvbnNlIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hSZXNw
b25zZT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RmV0Y2hSZXNwb25zZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3Bv
bnNlKFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJz
OjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsgfQotICAgIHN0YXRpYyBS
ZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoKTsKKyAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNy
ZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2UoKSwg
Y29udGV4dCkpOyB9CisgICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRp
cmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgaW50LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgLy8gRklYTUU6IEJpbmRpbmcgZ2VuZXJhdG9yIHNob3VsZCBub3QgcmVx
dWlyZSBiZWxvdyBtZXRob2QgdG8gaGFuZGxlIG9wdGlvbmFsIHN0YXR1cyBwYXJhbWV0ZXIuCiAg
ICAgc3RhdGljIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIHJlZGlyZWN0KGNvbnRleHQsIHVybCwgMzAyLCBlYyk7IH0KQEAgLTc2LDcgKzc3LDEx
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQmFzaWMsIENvcnMs
IERlZmF1bHQsIEVycm9yLCBPcGFxdWUsIE9wYXF1ZVJlZGlyZWN0IH07CiAKLSAgICBGZXRjaFJl
c3BvbnNlKFR5cGUsIEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJl
c3BvbnNlJiYpOworICAgIEZldGNoUmVzcG9uc2UoVHlwZSwgRmV0Y2hCb2R5JiYsIFJlZjxGZXRj
aEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSQorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBU
eXBlIG1fdHlwZTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAppbmRleCBlNzBmNGI5MWQw
NWE1YzgzZDJmZDBmY2MwNmQzOTA0OGNlYzk3MDZmLi44MTcxZmRmYzIxMWM4YzkwYTQ3Y2Y1OGZm
NjFhNWI2MjE4ODhmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5pZGwKQEAgLTI4LDE1ICsyOCwxNiBAQAogZW51bSBSZXNwb25zZVR5cGUgeyAi
YmFzaWMiLCAiY29ycyIsICJkZWZhdWx0IiwgImVycm9yIiwgIm9wYXF1ZSIsICJvcGFxdWVyZWRp
cmVjdCIgfTsKIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1GRVRD
SF9BUEksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAog
ICAgIEdsb2JhbENvbnRleHQ9RE9NV2luZG93Jldvcmtlckdsb2JhbFNjb3BlLAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSW50ZXJmYWNlTmFtZT1SZXNwb25zZSwKICAgICBK
U0J1aWx0aW5Db25zdHJ1Y3RvcgogXQogaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAgIC8v
IEZJWE1FOiBOZXdPYmplY3QgZG9lcyBub3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQgZm9yIHN0YXRp
YyBtZXRob2RzLgotICAgIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7
CiAgICAgW1JhaXNlc0V4Y2VwdGlvbiwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
c3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgdW5z
aWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZXNw
b25zZVR5cGUgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3Ry
dWN0b3IuaAppbmRleCBlYjVkZmZmNjgxNTM1ZGQ4ZDczZjRiMTZiNmJjMWE3M2M3Njc1ZjcwLi42
ZmRkN2U0ODZmMzdkZDczMTMwMjQ4ZmEwYzU5ZDc2ZjVhNDBiMTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCkBAIC0yMjAsNiArMjIwLDggQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU0J1aWx0aW5Db24KIHsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0gSlNDOjpq
c0Nhc3Q8SlNCdWlsdGluQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIGF1dG8q
IG9iamVjdCA9IGNhc3RlZFRoaXMtPmNyZWF0ZUpTT2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3Qp
CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9y
KCpzdGF0ZSwgaW5mbygpLT5jbGFzc05hbWUpOwogICAgIGNhbGxGdW5jdGlvbldpdGhDdXJyZW50
QXJndW1lbnRzKCpzdGF0ZSwgKm9iamVjdCwgKmNhc3RlZFRoaXMtPmluaXRpYWxpemVGdW5jdGlv
bigpKTsKICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMjdiNGJkYjk4YmRmMGMyYjU4ZTJiMjIxNTdlZDRmOWFlOTJmZWVmOS4uMTU0NzhmOTc4Zjlk
MDQ4ZDRiMTljNmMzOGIxZTgxYjMzY2I5ZDU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ3ODQsMTEgKzQ3ODQsMjQg
QEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAKICAgICBpZiAoSXNKU0J1aWx0
aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAg
ICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBDb25zdHJ1Y3RvckNhbGxXaXRoCisgICAgICAgICAg
ICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgQ29uc3RydWN0b3JDYWxsV2l0aC4KICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOwogdGVtcGxhdGU8PiBKU0M6OkpT
T2JqZWN0KiAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3QoKQogeworRU5E
CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgi
fSwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkgeworICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksIDw8RU5EKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGdldERPTVN0
cnVjdHVyZTwke2NsYXNzTmFtZX0+KGdsb2JhbE9iamVjdCgpLT52bSgpLCAqZ2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCpjb250ZXh0KSk7
CitFTkQKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCA8PEVORCk7CiAgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGdldERPTVN0
cnVjdHVyZTwke2NsYXNzTmFtZX0+KGdsb2JhbE9iamVjdCgpLT52bSgpLCAqZ2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCkpOworRU5ECisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKIH0K
IAogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWMwOGUzMTY5NDM3YmYxOTA2YTE5MDUxYjYwODNkMmM5Yzg4YWNjOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
LmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisKKyNpbmNsdWRlICJDU1NJbXBvcnRSdWxl
LmgiCisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24uaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJX
ZWJLaXRET01Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVjdC9D
b252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9KU19C
VUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEhfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVf
SU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRI
X0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCwgV2ViS2l0RE9NVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlKQorCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGhQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGg+IGNvcmVPYmplY3Q7Cit9IFdlYktpdERPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoKiBraXQoV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGgqIG9iaikKK3sKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQorICAgICAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9B
TkRfQ0FMTF9XSVRIKHJldCk7CisKKyAgICByZXR1cm4gd3JhcFRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKG9iaik7Cit9CisKK1dlYkNvcmU6OlRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiBjb3JlKFdlYktpdERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiByZXF1ZXN0KQoreworICAgIHJl
dHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29y
ZU9iamVjdCkgOiAwOworfQorCitXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aCogd3JhcFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoKFdlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoKiBjb3JlT2JqZWN0KQoreworICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKKyAgICByZXR1
cm4gV0VCS0lUX0RPTV9URVNUX0NMQVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRf
Q0FMTF9XSVRIKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pT
X0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCwgImNvcmUtb2JqZWN0IiwgY29yZU9i
amVjdCwgbnVsbHB0cikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworR19ERUZJTkVf
VFlQRShXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aCwgd2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRf
Y2FsbF93aXRoLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdERPTVRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01f
VEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9HRVRf
UFJJVkFURShvYmplY3QpOworCisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHBy
aXYtPmNvcmVPYmplY3QuZ2V0KCkpOworCisgICAgcHJpdi0+fldlYktpdERPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSgpOworICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3Jf
YW5kX2NhbGxfd2l0aF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0
aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1
Y3Rvcl9hbmRfY2FsbF93aXRoX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVj
dFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0
aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21f
dGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9wYXJl
bnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNv
bnN0cnVjdFByb3BlcnRpZXMpOworCisgICAgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX0NM
QVNTX1dJVEhfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9BTkRfQ0FMTF9XSVRIX0dFVF9QUklWQVRF
KG9iamVjdCk7CisgICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4oV0VCS0lUX0RPTV9P
QkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CisKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nfd2l0aF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENsYXNzKiByZXF1ZXN0Q2xhc3MpCit7
CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0
Q2xhc3MpOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVv
ZihXZWJLaXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFBy
aXZhdGUpKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0
X2NsYXNzX3dpdGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2NvbnN0cnVj
dG9yOworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfY2xhc3Nf
d2l0aF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2FuZF9jYWxsX3dpdGhfZmluYWxpemU7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0aW5fY29uc3Ry
dWN0b3JfYW5kX2NhbGxfd2l0aF9pbml0KFdlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoKiByZXF1ZXN0KQoreworICAgIFdlYktpdERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9ET01fVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lU
SF9HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJpdmF0ZSgpOworfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjUy
YTg3MTFjNDIwODhhNmIyNDU3Zjk5MWUwZDNkNWQxZjYwYTE0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaApAQCAtMCwwICsxLDUz
IEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdERPTVRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoX2gKKyNkZWZpbmUgV2Vi
S2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhfaAorCisj
aWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KKyNpbmNsdWRlIDx3
ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgorCitHX0JFR0lOX0RFQ0xTCisK
KyNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ0xBU1NfV0lUSF9KU19CVUlMVElOX0NPTlNU
UlVDVE9SX0FORF9DQUxMX1dJVEggICAgICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NsYXNzX3dp
dGhfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9hbmRfY2FsbF93aXRoX2dldF90eXBlKCkpCisjZGVm
aW5lIFdFQktJVF9ET01fVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5E
X0NBTExfV0lUSChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNU
T1JfQU5EX0NBTExfV0lUSCwgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfQ0xBU1NfV0lUSF9KU19C
VUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEhfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ0xBU1NfV0lU
SF9KU19CVUlMVElOX0NPTlNUUlVDVE9SX0FORF9DQUxMX1dJVEgsIFdlYktpdERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ2xhc3MpCisjZGVmaW5lIFdFQktJ
VF9ET01fSVNfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExf
V0lUSChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJL
SVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NB
TExfV0lUSCkpCisjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxU
SU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DTEFTU19XSVRIX0pTX0JV
SUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCkpCisjZGVmaW5lIFdFQktJVF9ET01fVEVT
VF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSF9HRVRfQ0xB
U1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZ
UEVfVEVTVF9DTEFTU19XSVRIX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1JfQU5EX0NBTExfV0lUSCwg
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDbGFz
cykpCisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGggeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoQ2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307
CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21fdGVzdF9jbGFzc193aXRoX2pzX2J1aWx0
aW5fY29uc3RydWN0b3JfYW5kX2NhbGxfd2l0aF9nZXRfdHlwZSh2b2lkKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLworI2VuZGlmIC8q
IFdlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDRjNzRjYjBkMjgwMmE5YmFlN2M1MDQ4MTI5MmJmNGJjZjA2YmMw
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENh
bGxXaXRoUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGhQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcml2YXRlX2gKKworI2luY2x1ZGUgIlRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisjaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIHdyYXBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aChXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aCopOworV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGgqIGtpdChXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aCopOworV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNvcmUoV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqKTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLyogV2ViS2l0RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGhQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWE0
NGVkZjk5MmY2NzBhZjI1NmVhZDkwZmM1NGRhZmJlN2VmZDY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguY3BwCkBAIC0wLDAgKzEsMjI5IEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisKKyNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVk
ZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhCdWlsdGlucy5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisK
K2NsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90
b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5k
Q2FsbFdpdGhQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisg
ICAgREVDTEFSRV9JTkZPOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5
cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisK
K3R5cGVkZWYgSlNCdWlsdGluQ29uc3RydWN0b3I8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aD4gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aENvbnN0cnVjdG9yOworCit0ZW1wbGF0ZTw+IEpTQzo6SlNPYmplY3QqIEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlSlNPYmplY3QoKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aDo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPihnbG9iYWxPYmplY3QoKS0+dm0oKSwgKmdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0KCksIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoOjpjcmVhdGUoKmNvbnRleHQpKTsKK30KKwordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmdldFBy
b3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZtKQoreworICAgIHJldHVybiB0ZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aEluaXRpYWxpemVUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aENvZGVHZW5lcmF0b3Iodm0pOworfQorCit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29u
c3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9y
IiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aENvbnN0cnVjdG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGUpIH07CisKK3ZvaWQg
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworfQorCitj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxs
V2l0aDo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGgiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgpIH07CisKK0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aD4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSkKK3sKK30KKworSlNPYmplY3QqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KHZtLCBnbG9iYWxPYmplY3Qp
OworfQorCit2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGg6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihjZWxsKTsKKyAg
ICB0aGlzT2JqZWN0LT5KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoOjp+SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCgpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghZG9tT2JqZWN0KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQor
Cit2b2lkIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9
CisKK3ZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworfQorCitib29sIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
QW5kQ2FsbFdpdGhPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGhPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCA9IGpzQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwor
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aC0+d3JhcHBlZCgpLCBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
KyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0K
KyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU0NFRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoRVtdOyB9CisjZW5kaWYKKyNlbmRp
ZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoKiBpbXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgq
IGltcGwpCit7CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAg
aWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdCwgaW1wbCkpCisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAg
dm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGlt
cGwpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVy
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhAV2ViQ29yZUBANkJAIikpOworI2Vsc2UK
KyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTQ0VGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhFWzJdOworI2lmIENPTVBJTEVS
KENMQU5HKQorICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yQW5kQ2FsbFdpdGggZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8g
YWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRo
ZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIENPTVBJTEVfQVNTRVJUKF9faXNfcG9seW1vcnBo
aWMoVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgpLCBUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aF9pc19ub3RfcG9seW1vcnBoaWMp
OworI2VuZGlmCisjZW5kaWYKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBl
aXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggaGFzIHN1YmNsYXNzZXMgdGhh
dCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIHlvdSB0byBvcHQgb3V0IG9m
IGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRh
dGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVB
U0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsK
KyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+KGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKj4odmFsdWUpKQorICAgICAg
ICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGguaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYyZmQ4Nzg2ZTc0YWI3YTk3YTY2
ZmUxY2I3NTNkMjhlYzhkZjg1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaWZuZGVmIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhf
aAorI2RlZmluZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
X2gKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGg+IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTRE9NV3JhcHBlcjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aD4gQmFzZTsKKyAgICBzdGF0aWMgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JBbmRDYWxsV2l0aCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aD4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFu
ZENhbGxXaXRoPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKKworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJvdGVjdGVkOgor
ICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JBbmRDYWxsV2l0aD4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgfQorCit9OworCitjbGFzcyBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoT3duZXIgOiBwdWJsaWMg
SlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250
ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
T3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lk
KiB3cmFwcGVyS2V5KFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRo
KiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKwor
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKik7CitpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aCYgaW1wbCkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAmaW1wbCk7IH0KK0pT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqLCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCopOwor
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2Fs
bFdpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZGQzMWU1NTQ5NWFlYzMzYmE4MWMyMTA3OTE1YjA4YjUwYmY4
ZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgu
aApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNv
cmUvRE9NT2JqZWN0Lmg+CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKK1dF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQW5kQ2FsbFdpdGggOiBET01PYmplY3QKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdp
dGgubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2RkYWNiN2I5ZTkwYzUxMTM1MDhmMTY1MGViZjI4ZDNiYmQxMmFm
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLm1t
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJE
T01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JBbmRDYWxsV2l0aC5oIgorCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBv
cnQgIkRPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJl
YWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoLmgiCisjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiV2ViQ29y
ZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqPihfaW50ZXJu
YWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JBbmRDYWxsV2l0aAorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNT
Y2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoIGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGRl
YWxsb2NdOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoKiBjb3JlKERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckFuZENhbGxXaXRoICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRD
YWxsV2l0aCo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01UZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aCAqa2l0KFdlYkNvcmU6OlRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoKiB2YWx1ZSkKK3sKKyAgICBXZWJDb3Jl
VGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIGlmICghdmFsdWUpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgaWYgKERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCisgICAgICAgIHJl
dHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgRE9NVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggKndyYXBwZXIgPSBbW0RPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoIGFsbG9jXSBfaW5pdF07CisgICAg
d3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+
KHZhbHVlKTsKKyAgICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2
YWx1ZSk7CisgICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckFuZENhbGxXaXRoSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2NhNzA5MDA2YWI1
NDAwYjRmMDg5ZDM4NGEyOTBhNDQyNTRlN2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGhJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg
KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
KiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JB
bmRDYWxsV2l0aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0aDsKK30KKworV0VCQ09SRV9FWFBPUlQgV2Vi
Q29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgqIGNvcmUo
RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGggKik7CitXRUJD
T1JFX0VYUE9SVCBET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JBbmRDYWxsV2l0
aCAqa2l0KFdlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxX
aXRoKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaWRs
CmluZGV4IGY3NzAzZTY5MmVhMWRkMTgzNDUzNWMyNjkwYmZmNjhlMDU0ODA1ZDguLmFkODY5NmMx
MWMwZmYyNzliOWI1OTExZTg0YjYzM2U3ZmRkYTBjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaWRsCkBAIC0yNyw2ICsyNyw3IEBACiAgKi8KIAog
WworICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBK
U0J1aWx0aW5Db25zdHJ1Y3RvcgotXSBpbnRlcmZhY2UgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yIHsKK10gaW50ZXJmYWNlIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckFuZENhbGxXaXRoIHsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQW5kQ2FsbFdpdGgu
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckFuZENhbGxXaXRoLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDVhY2I1MDQ2
MmIwODkyYjY4YjFiZTZkYTY4OGVkMGQ1MTA4YmZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckFuZENhbGxXaXRoLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IENhbm9uIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yCitd
IGludGVyZmFjZSBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgeworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273007</attachid>
            <date>2016-03-04 09:49:48 -0800</date>
            <delta_ts>2016-03-06 23:03:08 -0800</delta_ts>
            <desc>Patch based on fix 155022</desc>
            <filename>bug-154729-20160304184933.patch</filename>
            <type>text/plain</type>
            <size>14782</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNjYTkxNTgyN2Q4MGEz
MDc5NzZlMWRiYWIwNmNkZGNhM2IwODIwMC4uYzQ0ZWYyZjMzNDYwMzc1NTEwYTU4ZjkwNDc0OTJj
NzM0YjdjN2ZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE2LTAzLTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgW0ZldGNo
IEFQSV0gTWFrZSBGZXRjaFJlcXVlc3QgYW5kIEZldGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1ha2luZyBGZXRjaFJlcXVlc3QgYW5kIEZl
dGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICBCb3RoIG9iamVjdHMgY2FuIGFs
d2F5cyBiZSBzdXNwZW5kZWQgbm93LgorICAgICAgICBUaGlzIG1pZ2h0IGJlIHVwZGF0ZWQgd2hl
biBibG9iIGNvbnZlcnNpb24gaXMgYWRkZWQgb3Igd2hlbiBmZXRjaGluZyBkYXRhIHRvIGZpbGwg
aW4gRmV0Y2hSZXNwb25zZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVx
dWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6
RmV0Y2hSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGw6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OnJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkZldGNo
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmlkbDoKKworMjAxNi0wMy0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCiAgICAgICAgIEVuYWJsZSBET00gY2xhc3MgY3JlYXRl
IGZ1bmN0aW9ucyB0byB0YWtlIHBhcmFtZXRlcnMgaW4gY2FzZSBvZiBKU0J1aWx0aW5Db25zdHJ1
Y3RvcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MDIyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApp
bmRleCBiNjg2ODFhYTE2MzA4ODYzYWQ0YjEwNmJmZWRjOWI1OTFkMjA0MmI3Li4wMjIzZDYyZmE0
MzQ3ODg1M2RlZGJhM2FkOGJkN2M3NzhmNzY5Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgUmVmUHRyPEZl
dGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUoYm9keSksIGhlYWRlcnMucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURk1vdmUoYm9keSksIGhlYWRlcnMu
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKSk7CiB9CiAKIFJlZlB0
cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCogaW5wdXQsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk3LDcgKzI5Nyw3IEBAIFJlZlB0cjxGZXRjaFJlcXVl
c3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IEZldGNoCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZldGNoUmVxdWVzdChXVEZNb3ZlKGJvZHkpLCBoZWFkZXJzLnJlbGVhc2VOb25O
dWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBoZWFkZXJzLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOwogfQogCiBTdHJpbmcgRmV0Y2hS
ZXF1ZXN0Ojp0eXBlKCkgY29uc3QKQEAgLTQzNSw3ICs0MzUsNyBAQCBTdHJpbmcgRmV0Y2hSZXF1
ZXN0OjpyZWRpcmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8
RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNsb25lKEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVm
UHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoaXNEaXN0dXJiZWQo
KSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKQEAgLTQ0Myw3ICs0NDMsMTcgQEAgUmVmUHRy
PEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShFeGNlcHRpb25Db2RlJiBlYykKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogVmFsaWRhdGUgYm9keSB0ZWVpbmcuCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6
OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCht
X2ludGVybmFsUmVxdWVzdCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVl
c3QoKmNvbnRleHQsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hl
YWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdChtX2ludGVybmFsUmVx
dWVzdCkpKTsKK30KKworY29uc3QgY2hhciogRmV0Y2hSZXF1ZXN0OjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlJlcXVlc3QiOworfQorCitib29sIEZldGNoUmVx
dWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCmluZGV4IDdmYTA4MzEzY2UzNjBjZWU0YTAxZmNj
ZTgwM2FkOTYxYzEyNzYxYzcuLjUwZDU3NDUwYjZjNzEwMGRhNzY2ODQwNjRjZTQ1NDVkMTc4MmU3
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAt
MzEsNiArMzEsNyBAQAogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAorI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgogI2luY2x1ZGUgIkZldGNoSGVh
ZGVycy5oIgogI2luY2x1ZGUgIkZldGNoT3B0aW9ucy5oIgpAQCAtNDMsNyArNDQsNyBAQCBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwog
Ci1jbGFzcyBGZXRjaFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaFJlcXVlc3Q+IHsK
K2NsYXNzIEZldGNoUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoUmVxdWVzdD4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hS
ZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoUmVxdWVzdCosIGNv
bnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIFJlZlB0cjxGZXRj
aFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTYzLDcgKzY0LDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyByZWRpcmVjdCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgaW50
ZWdyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3QuaW50ZWdyaXR5OyB9CiAK
LSAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBjbG9uZShFeGNlcHRpb25Db2RlJik7CisgICAgUmVm
UHRyPEZldGNoUmVxdWVzdD4gY2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIC8vIEJvZHkgQVBJCiAgICAgYm9vbCBpc0Rpc3R1cmJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYm9keS5pc0Rpc3R1cmJlZCgpOyB9CkBAIC04MywxOCArODQsMjQgQEAgcHVi
bGljOgogICAgIEZldGNoQm9keSYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCiBwcml2YXRl
OgotICAgIEZldGNoUmVxdWVzdChGZXRjaEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50
ZXJuYWxSZXF1ZXN0JiYpOworICAgIEZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRmV0Y2hCb2R5JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIEludGVybmFsUmVxdWVzdCYmKTsK
KworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZl
dGNoQm9keSBtX2JvZHk7CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogICAgIElu
dGVybmFsUmVxdWVzdCBtX2ludGVybmFsUmVxdWVzdDsKIH07CiAKLWlubGluZSBGZXRjaFJlcXVl
c3Q6OkZldGNoUmVxdWVzdChGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhl
YWRlcnMsIEludGVybmFsUmVxdWVzdCYmIGludGVybmFsUmVxdWVzdCkKLSAgICA6IG1fYm9keShX
VEZNb3ZlKGJvZHkpKQoraW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRl
cnM+JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJuYWxSZXF1ZXN0KQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCiAg
ICAgLCBtX2hlYWRlcnMoV1RGTW92ZShoZWFkZXJzKSkKICAgICAsIG1faW50ZXJuYWxSZXF1ZXN0
KFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkKIHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuaWRsCmluZGV4IGY0Yzc2NmNjZGNjMDcwMDNiYjJkNTVjNWFjNWY0ZmU0
MWM4ZjFiZWYuLjk0MjQ2MDA1NjI2ZDA0ZmUzNmY3MDMzYTg0ZjZkYjM5YjQ4OGM0M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwKQEAgLTM1LDEz
ICszNSwxMyBAQCBlbnVtIFJlcXVlc3RSZWRpcmVjdCB7ICJmb2xsb3ciLCAiZXJyb3IiLCAibWFu
dWFsIiB9OwogZW51bSBSZWZlcnJlclBvbGljeSB7ICIiLCAibm8tcmVmZXJyZXIiLCAgIm5vLXJl
ZmVycmVyLXdoZW4tZG93bmdyYWRlIiwgIm9yaWdpbi1vbmx5IiwgIm9yaWdpbi13aGVuLWNyb3Nz
LW9yaWdpbiIsICJ1bnNhZmUtdXJsIiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbmRpdGlvbmFsPUZFVENIX0FQSSwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsCiAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgQ29u
c3RydWN0b3IoRmV0Y2hSZXF1ZXN0IGlucHV0LCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IERpY3Rpb25hcnkgaW5pdCksCiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIGlucHV0LCBbRGVm
YXVsdD1VbmRlZmluZWRdICBvcHRpb25hbCBEaWN0aW9uYXJ5IGluaXQpLAogICAgIEdsb2JhbENv
bnRleHQ9RE9NV2luZG93Jldvcmtlckdsb2JhbFNjb3BlLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCiAgICAgSW50ZXJmYWNlTmFtZT1SZXF1ZXN0CiBdCiBpbnRlcmZhY2UgRmV0Y2hS
ZXF1ZXN0IHsKQEAgLTU5LDYgKzU5LDYgQEAgaW50ZXJmYWNlIEZldGNoUmVxdWVzdCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFJlcXVlc3RSZWRpcmVjdCByZWRpcmVjdDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGludGVncml0eTsKIAotICAgIFtSYWlzZXNFeGNlcHRpb24s
IE5ld09iamVjdF0gRmV0Y2hSZXF1ZXN0IGNsb25lKCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBGZXRjaFJlcXVlc3Qg
Y2xvbmUoKTsKIH07CiBGZXRjaFJlcXVlc3QgaW1wbGVtZW50cyBGZXRjaEJvZHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA4NzYyM2Rl
MzZlZjNhYjgyMDNlM2Q0NDVmMWQyOTA2NGJlMDdlOTMyLi5lNTk3NTg3NjU3MjI3NWU5ZmRjOTA1
N2VkYzA1ODIzYjRmNGMyMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgc3RhdGljIGlubGluZSBib29sIGlz
TnVsbEJvZHlTdGF0dXMoaW50IHN0YXR1cykKICAgICByZXR1cm4gc3RhdHVzID09IDEwMSB8fCBz
dGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3RhdHVzID09IDMwNDsKIH0KIAotUmVm
PEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmVycm9yKCkKK1JlZjxGZXRjaFJlc3BvbnNl
PiBGZXRjaFJlc3BvbnNlOjplcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RXJyb3IsIHsg
fSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwg
UmVzb3VyY2VSZXNwb25zZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNw
b25zZSgqY29udGV4dCwgVHlwZTo6RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CiB9CiAK
IFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cywgRXhj
ZXB0aW9uQ29kZSYgZWMpCkBAIC02NSw3ICs2NSw3IEBAIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBG
ZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdFJlZigq
bmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0
ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsK
KyAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpu
ZXcgRmV0Y2hSZXNwb25zZSgqY29udGV4dCwgVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRl
cnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3Bv
bnNlKCkpKTsKICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXND
b2RlKHN0YXR1cyk7CiAgICAgcmVkaXJlY3RSZXNwb25zZS0+bV9oZWFkZXJzLT5mYXN0U2V0KEhU
VFBIZWFkZXJOYW1lOjpMb2NhdGlvbiwgcmVxdWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgcmV0dXJu
IHJlZGlyZWN0UmVzcG9uc2U7CkBAIC0xMDgsMjEgKzEwOCwyMyBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OmluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KIH0KIAotRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShUeXBlIHR5cGUs
IEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlKQotICAgIDogbV90eXBlKHR5cGUpCitGZXRjaFJlc3BvbnNlOjpG
ZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSwg
RmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAg
LCBtX3R5cGUodHlwZSkKICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAg
LCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRlcnMp
KQogeworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCi1SZWZQdHI8RmV0Y2hSZXNwb25zZT4g
RmV0Y2hSZXNwb25zZTo6Y2xvbmUoRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8RmV0Y2hSZXNw
b25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fYm9keS5pc0Rpc3R1cmJlZCgpIHx8
IG1faXNMb2NrZWQpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmVkID0gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlc3BvbnNlKG1fdHlwZSwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsK
KyAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmVkID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJl
c3BvbnNlKCpjb250ZXh0LCBtX3R5cGUsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6
OmNyZWF0ZShoZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CiAgICAg
Y2xvbmVkLT5tX2lzUmVkaXJlY3RlZCA9IG1faXNSZWRpcmVjdGVkOwogICAgIHJldHVybiBjbG9u
ZWQ7CiB9CkBAIC0xNTMsNiArMTU1LDE2IEBAIEpTQzo6SlNWYWx1ZSBKU0ZldGNoUmVzcG9uc2U6
OmJvZHkoSlNDOjpFeGVjU3RhdGUmKSBjb25zdAogICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwog
fQogCitjb25zdCBjaGFyKiBGZXRjaFJlc3BvbnNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIlJlc3BvbnNlIjsKK30KKworYm9vbCBGZXRjaFJlc3BvbnNlOjpj
YW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZFVENI
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5k
ZXggMTBmZDZlNDMyYTIwZTAxZTk1YWRhZmMwYWIzNzAyZWFlNTBhYWE1NS4uMWI0N2Y0YTYxY2U1
ZWZjMjMwNTM2MTBhYjhmMDU1ZjU4MGQ1NWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShG
RVRDSF9BUEkpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJGZXRj
aEJvZHkuaCIKICNpbmNsdWRlICJGZXRjaEhlYWRlcnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCkBAIC00NSwxMCArNDYsMTAgQEAgY2xhc3MgRGljdGlvbmFyeTsKIAogdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgRmV0Y2hSZXNwb25zZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEZldGNoUmVzcG9uc2U+IHsKK2NsYXNzIEZldGNoUmVzcG9uc2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxGZXRjaFJlc3BvbnNlPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNy
ZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2UoKSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcigpOworICAgIHN0YXRpYyBS
ZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZh
dWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3Bv
bnNlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9u
c2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgUmVmUHRyPEZl
dGNoUmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmLCBpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAvLyBGSVhNRTogQmluZGluZyBnZW5lcmF0
b3Igc2hvdWxkIG5vdCByZXF1aXJlIGJlbG93IG1ldGhvZCB0byBoYW5kbGUgb3B0aW9uYWwgc3Rh
dHVzIHBhcmFtZXRlci4KICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gcmVkaXJlY3QoY29udGV4dCwgdXJsLCAzMDIsIGVjKTsg
fQpAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpOyB9CiAKICAgICBG
ZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJldHVybiBtX2hlYWRlcnM7IH0KLSAgICBSZWZQdHI8
RmV0Y2hSZXNwb25zZT4gY2xvbmUoRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgLy8gQm9keSBBUEkKICAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyByZXR1cm4g
bV9ib2R5LmlzRGlzdHVyYmVkKCk7IH0KQEAgLTc2LDcgKzc3LDExIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQmFzaWMsIENvcnMsIERlZmF1bHQsIEVycm9yLCBP
cGFxdWUsIE9wYXF1ZVJlZGlyZWN0IH07CiAKLSAgICBGZXRjaFJlc3BvbnNlKFR5cGUsIEZldGNo
Qm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOworICAgIEZl
dGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFR5cGUsIEZldGNoQm9keSYmLCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOworCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0IEFQSQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAppbmRleCBlNzBmNGI5MWQwNWE1YzgzZDJmZDBmY2MwNmQz
OTA0OGNlYzk3MDZmLi5jZTliMmE2ZmE1NjA0NjA3NzRjMDgzODZkNWEyMGM3NTFmNDliMTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKQEAg
LTI4LDE2ICsyOCwxNyBAQAogZW51bSBSZXNwb25zZVR5cGUgeyAiYmFzaWMiLCAiY29ycyIsICJk
ZWZhdWx0IiwgImVycm9yIiwgIm9wYXF1ZSIsICJvcGFxdWVyZWRpcmVjdCIgfTsKIAogWworICAg
IEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1GRVRDSF9BUEksCisgICAgQ29uc3Ry
dWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIEdsb2JhbENvbnRleHQ9
RE9NV2luZG93Jldvcmtlckdsb2JhbFNjb3BlLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiAgICAgSW50ZXJmYWNlTmFtZT1SZXNwb25zZSwKICAgICBKU0J1aWx0aW5Db25zdHJ1Y3Rv
cgogXQogaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAgIC8vIEZJWE1FOiBOZXdPYmplY3Qg
ZG9lcyBub3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQgZm9yIHN0YXRpYyBtZXRob2RzLgotICAgIHN0
YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbiwgQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3Qo
RE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIEZldGNoUmVzcG9uc2Ug
ZXJyb3IoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhj
ZXB0aW9uXSBzdGF0aWMgRmV0Y2hSZXNwb25zZSByZWRpcmVjdChET01TdHJpbmcgdXJsLCBvcHRp
b25hbCB1bnNpZ25lZCBzaG9ydCBzdGF0dXMgPSAzMDIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFJlc3BvbnNlVHlwZSB0eXBlOwogCkBAIC01MCw3ICs1MSw3IEBAIGludGVyZmFjZSBGZXRj
aFJlc3BvbnNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRmV0Y2hIZWFkZXJzIGhlYWRlcnM7
CiAgICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFi
bGVTdHJlYW0/IGJvZHk7CiAKLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dIEZldGNo
UmVzcG9uc2UgY2xvbmUoKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIEZldGNoUmVzcG9uc2UgY2xvbmUoKTsKIAogICAg
IFtQcml2YXRlLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgaW5pdGlhbGl6ZVdpdGgoRGljdGlvbmFy
eSBwYXJhbWV0ZXJzKTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273162</attachid>
            <date>2016-03-06 23:03:16 -0800</date>
            <delta_ts>2016-03-08 00:12:32 -0800</delta_ts>
            <desc>Updating style</desc>
            <filename>bug-154729-20160307080301.patch</filename>
            <type>text/plain</type>
            <size>14656</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ1YmQ5ODU1YzZjMGVi
NWIyNDA2ZTIyNjRlM2I4YzI1MjEwOWJlYy4uYjJiOTY0NzlmYzg3N2RjZjVlOWQ5YjUxZTgwNjQz
NWMyNDJiODJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTAzLTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gTWFrZSBGZXRjaFJlcXVlc3QgYW5kIEZldGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1ha2luZyBGZXRjaFJlcXVlc3QgYW5kIEZl
dGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICBCb3RoIG9iamVjdHMgY2FuIGFs
d2F5cyBiZSBzdXNwZW5kZWQgbm93LgorICAgICAgICBUaGlzIG1pZ2h0IGJlIHVwZGF0ZWQgd2hl
biBibG9iIGNvbnZlcnNpb24gaXMgYWRkZWQgb3Igd2hlbiBmZXRjaGluZyBkYXRhIHRvIGZpbGwg
aW4gRmV0Y2hSZXNwb25zZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVx
dWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6
RmV0Y2hSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGw6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OnJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkZldGNo
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmlkbDoKKwogMjAxNi0wMy0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29t
cGFyZSBhbmQgVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuY3BwCmluZGV4IGI2ODY4MWFhMTYzMDg4NjNhZDRiMTA2YmZlZGM5YjU5MWQyMDQyYjcuLjAy
MjNkNjJmYTQzNDc4ODUzZGVkYmEzYWQ4YmQ3Yzc3OGY3NjlmODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBS
ZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoV1RGTW92ZShib2R5KSwgaGVh
ZGVycy5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUmVxdWVzdCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgV1RGTW92ZShib2R5KSwg
aGVhZGVycy5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUmVxdWVzdCkpKTsKIH0K
IAogUmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0KiBpbnB1dCwgY29uc3QgRGljdGlvbmFy
eSYgaW5pdCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yOTcsNyArMjk3LDcgQEAgUmVmUHRyPEZl
dGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgRmV0Y2gKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KFdURk1vdmUoYm9keSksIGhlYWRlcnMucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURk1vdmUoYm9keSksIGhlYWRlcnMu
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKSk7CiB9CiAKIFN0cmlu
ZyBGZXRjaFJlcXVlc3Q6OnR5cGUoKSBjb25zdApAQCAtNDM1LDcgKzQzNSw3IEBAIFN0cmluZyBG
ZXRjaFJlcXVlc3Q6OnJlZGlyZWN0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LVJlZlB0cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y2xvbmUoRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNsb25lKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChpc0Rp
c3R1cmJlZCgpKSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwpAQCAtNDQzLDcgKzQ0MywxNyBA
QCBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNsb25lKEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBWYWxpZGF0ZSBib2R5IHRlZWluZy4KLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5KG1fYm9keSksIEZldGNo
SGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIEZldGNoUmVxdWVzdDo6SW50ZXJuYWxS
ZXF1ZXN0KG1faW50ZXJuYWxSZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZl
dGNoUmVxdWVzdCgqY29udGV4dCwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3Jl
YXRlKG1faGVhZGVycy5nZXQoKSksIEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0KG1faW50
ZXJuYWxSZXF1ZXN0KSkpOworfQorCitjb25zdCBjaGFyKiBGZXRjaFJlcXVlc3Q6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiUmVxdWVzdCI7Cit9CisKK2Jvb2wg
RmV0Y2hSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggN2ZhMDgzMTNjZTM2MGNl
ZTRhMDFmY2NlODAzYWQ5NjFjMTI3NjFjNy4uZjUwNmQwMjQxYjZlZTFhMGYwNDhiMzMyOGUwMmRj
ZTExMDQzZTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCiAjaW5jbHVkZSAi
RmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCkBAIC00Myw3ICs0NCw3
IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CiAKLWNsYXNzIEZldGNoUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoUmVx
dWVzdD4geworY2xhc3MgRmV0Y2hSZXF1ZXN0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0
Y2hSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0
Y2hSZXF1ZXN0KiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0
aWMgUmVmUHRyPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNjMs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlZGlyZWN0KCkgY29uc3Q7CiAgICAgY29u
c3QgU3RyaW5nJiBpbnRlZ3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5p
bnRlZ3JpdHk7IH0KIAotICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IGNsb25lKEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gQm9keSBBUEkKICAgICBib29sIGlzRGlz
dHVyYmVkKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5LmlzRGlzdHVyYmVkKCk7IH0KQEAgLTgzLDE4
ICs4NCwyNCBAQCBwdWJsaWM6CiAgICAgRmV0Y2hCb2R5JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5
OyB9CiAKIHByaXZhdGU6Ci0gICAgRmV0Y2hSZXF1ZXN0KEZldGNoQm9keSYmLCBSZWY8RmV0Y2hI
ZWFkZXJzPiYmLCBJbnRlcm5hbFJlcXVlc3QmJik7CisgICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBGZXRjaEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJu
YWxSZXF1ZXN0JiYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KKyAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGZXRj
aEJvZHkgbV9ib2R5OwogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKICAgICBJbnRl
cm5hbFJlcXVlc3QgbV9pbnRlcm5hbFJlcXVlc3Q7CiB9OwogCi1pbmxpbmUgRmV0Y2hSZXF1ZXN0
OjpGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFk
ZXJzLCBJbnRlcm5hbFJlcXVlc3QmJiBpbnRlcm5hbFJlcXVlc3QpCi0gICAgOiBtX2JvZHkoV1RG
TW92ZShib2R5KSkKK2lubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJz
PiYmIGhlYWRlcnMsIEludGVybmFsUmVxdWVzdCYmIGludGVybmFsUmVxdWVzdCkKKyAgICA6IEFj
dGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAg
ICwgbV9oZWFkZXJzKFdURk1vdmUoaGVhZGVycykpCiAgICAgLCBtX2ludGVybmFsUmVxdWVzdChX
VEZNb3ZlKGludGVybmFsUmVxdWVzdCkpCiB7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmlkbAppbmRleCBmNGM3NjZjY2RjYzA3MDAzYmIyZDU1YzVhYzVmNGZlNDFj
OGYxYmVmLi45NDI0NjAwNTYyNmQwNGZlMzZmNzAzM2E4NGY2ZGIzOWI0ODhjNDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCkBAIC0zNSwxMyAr
MzUsMTMgQEAgZW51bSBSZXF1ZXN0UmVkaXJlY3QgeyAiZm9sbG93IiwgImVycm9yIiwgIm1hbnVh
bCIgfTsKIGVudW0gUmVmZXJyZXJQb2xpY3kgeyAiIiwgIm5vLXJlZmVycmVyIiwgICJuby1yZWZl
cnJlci13aGVuLWRvd25ncmFkZSIsICJvcmlnaW4tb25seSIsICJvcmlnaW4td2hlbi1jcm9zcy1v
cmlnaW4iLCAidW5zYWZlLXVybCIgfTsKIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBD
b25kaXRpb25hbD1GRVRDSF9BUEksCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LAogICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAogICAgIENvbnN0
cnVjdG9yKEZldGNoUmVxdWVzdCBpbnB1dCwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBE
aWN0aW9uYXJ5IGluaXQpLAogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyBpbnB1dCwgW0RlZmF1
bHQ9VW5kZWZpbmVkXSAgb3B0aW9uYWwgRGljdGlvbmFyeSBpbml0KSwKICAgICBHbG9iYWxDb250
ZXh0PURPTVdpbmRvdyZXb3JrZXJHbG9iYWxTY29wZSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9UmVxdWVzdAogXQogaW50ZXJmYWNlIEZldGNoUmVx
dWVzdCB7CkBAIC01OSw2ICs1OSw2IEBAIGludGVyZmFjZSBGZXRjaFJlcXVlc3QgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBSZXF1ZXN0UmVkaXJlY3QgcmVkaXJlY3Q7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBpbnRlZ3JpdHk7CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uLCBO
ZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9uZSgpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gRmV0Y2hSZXF1ZXN0IGNs
b25lKCk7CiB9OwogRmV0Y2hSZXF1ZXN0IGltcGxlbWVudHMgRmV0Y2hCb2R5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggODc2MjNkZTM2
ZWYzYWI4MjAzZTNkNDQ1ZjFkMjkwNjRiZTA3ZTkzMi4uZTU5NzU4NzY1NzIyNzVlOWZkYzkwNTdl
ZGMwNTgyM2I0ZjRjMjJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc051
bGxCb2R5U3RhdHVzKGludCBzdGF0dXMpCiAgICAgcmV0dXJuIHN0YXR1cyA9PSAxMDEgfHwgc3Rh
dHVzID09IDIwNCB8fCBzdGF0dXMgPT0gMjA1IHx8IHN0YXR1cyA9PSAzMDQ7CiB9CiAKLVJlZjxG
ZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjplcnJvcigpCitSZWY8RmV0Y2hSZXNwb25zZT4g
RmV0Y2hSZXNwb25zZTo6ZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKFR5cGU6OkVycm9yLCB7IH0s
IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJl
c291cmNlUmVzcG9uc2UoKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9u
c2UoKmNvbnRleHQsIFR5cGU6OkVycm9yLCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNo
SGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOwogfQogCiBS
ZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtNjUsNyArNjUsNyBAQCBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0
Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwog
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5l
dyBGZXRjaFJlc3BvbnNlKFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUo
RmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7Cisg
ICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoKmNvbnRleHQsIFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJz
OjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25z
ZSgpKSk7CiAgICAgcmVkaXJlY3RSZXNwb25zZS0+bV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29k
ZShzdGF0dXMpOwogICAgIHJlZGlyZWN0UmVzcG9uc2UtPm1faGVhZGVycy0+ZmFzdFNldChIVFRQ
SGVhZGVyTmFtZTo6TG9jYXRpb24sIHJlcXVlc3RVUkwuc3RyaW5nKCkpOwogICAgIHJldHVybiBy
ZWRpcmVjdFJlc3BvbnNlOwpAQCAtMTA4LDIxICsxMDgsMjMgQEAgdm9pZCBGZXRjaFJlc3BvbnNl
Ojppbml0aWFsaXplV2l0aChjb25zdCBEaWN0aW9uYXJ5JiBpbml0LCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICB9CiB9CiAKLUZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoVHlwZSB0eXBlLCBG
ZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKLSAgICA6IG1fdHlwZSh0eXBlKQorRmV0Y2hSZXNwb25zZTo6RmV0
Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUsIEZl
dGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwg
bV90eXBlKHR5cGUpCiAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAgICwg
bV9ib2R5KFdURk1vdmUoYm9keSkpCiAgICAgLCBtX2hlYWRlcnMoV1RGTW92ZShoZWFkZXJzKSkK
IHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAotUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZl
dGNoUmVzcG9uc2U6OmNsb25lKEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEZldGNoUmVzcG9u
c2U+IEZldGNoUmVzcG9uc2U6OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX2JvZHkuaXNEaXN0dXJiZWQoKSB8fCBt
X2lzTG9ja2VkKSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IGNsb25lZCA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZShtX3R5cGUsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRl
cnM6OmNyZWF0ZShoZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7Cisg
ICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IGNsb25lZCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNw
b25zZSgqY29udGV4dCwgbV90eXBlLCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOwogICAgIGNs
b25lZC0+bV9pc1JlZGlyZWN0ZWQgPSBtX2lzUmVkaXJlY3RlZDsKICAgICByZXR1cm4gY2xvbmVk
OwogfQpAQCAtMTUzLDYgKzE1NSwxNiBAQCBKU0M6OkpTVmFsdWUgSlNGZXRjaFJlc3BvbnNlOjpi
b2R5KEpTQzo6RXhlY1N0YXRlJikgY29uc3QKICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIH0K
IAorY29uc3QgY2hhciogRmV0Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICJSZXNwb25zZSI7Cit9CisKK2Jvb2wgRmV0Y2hSZXNwb25zZTo6Y2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9B
UEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4
IDEwZmQ2ZTQzMmEyMGUwMWU5NWFkYWZjMGFiMzcwMmVhZTUwYWFhNTUuLmZlMzk0Y2FjM2MzMWI0
MmM4NTA1NTRmZGExZGY3OGZkN2Q1ZmNlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFCTEUoRkVU
Q0hfQVBJKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hC
b2R5LmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgpAQCAtNDUsMTAgKzQ2LDEwIEBAIGNsYXNzIERpY3Rpb25hcnk7CiAKIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEZldGNoUmVzcG9uc2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxGZXRjaFJlc3BvbnNlPiB7CitjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmV0Y2hSZXNwb25zZT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJz
OjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNl
KCkpKTsgfQotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoKTsKKyAgICBzdGF0
aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6
RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpS
ZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOyB9CisgICAgc3RhdGljIFJlZjxGZXRjaFJl
c3BvbnNlPiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIFJlZlB0
cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiwgaW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgLy8gRklYTUU6IEJpbmRpbmcgZ2Vu
ZXJhdG9yIHNob3VsZCBub3QgcmVxdWlyZSBiZWxvdyBtZXRob2QgdG8gaGFuZGxlIG9wdGlvbmFs
IHN0YXR1cyBwYXJhbWV0ZXIuCiAgICAgc3RhdGljIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRp
cmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHJlZGlyZWN0KGNvbnRleHQsIHVybCwgMzAyLCBl
Yyk7IH0KQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc3RhdHVz
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKTsgfQogCiAg
ICAgRmV0Y2hIZWFkZXJzJiBoZWFkZXJzKCkgeyByZXR1cm4gbV9oZWFkZXJzOyB9Ci0gICAgUmVm
UHRyPEZldGNoUmVzcG9uc2U+IGNsb25lKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8RmV0
Y2hSZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIC8vIEJvZHkgQVBJCiAgICAgYm9vbCBpc0Rpc3R1cmJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYm9keS5pc0Rpc3R1cmJlZCgpOyB9CkBAIC03Niw3ICs3NywxMSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBFcnJv
ciwgT3BhcXVlLCBPcGFxdWVSZWRpcmVjdCB9OwogCi0gICAgRmV0Y2hSZXNwb25zZShUeXBlLCBG
ZXRjaEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKyAg
ICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUeXBlLCBGZXRjaEJvZHkm
JiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKworICAgIC8vIEFj
dGl2ZURPTU9iamVjdCBBUEkKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmlkbAppbmRleCBlNzBmNGI5MWQwNWE1YzgzZDJmZDBmY2MwNmQzOTA0OGNlYzk3MDZm
Li5jZTliMmE2ZmE1NjA0NjA3NzRjMDgzODZkNWEyMGM3NTFmNDliMTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKQEAgLTI4LDE2ICsyOCwx
NyBAQAogZW51bSBSZXNwb25zZVR5cGUgeyAiYmFzaWMiLCAiY29ycyIsICJkZWZhdWx0IiwgImVy
cm9yIiwgIm9wYXF1ZSIsICJvcGFxdWVyZWRpcmVjdCIgfTsKIAogWworICAgIEFjdGl2ZURPTU9i
amVjdCwKICAgICBDb25kaXRpb25hbD1GRVRDSF9BUEksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIEdsb2JhbENvbnRleHQ9RE9NV2luZG93Jldv
cmtlckdsb2JhbFNjb3BlLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSW50
ZXJmYWNlTmFtZT1SZXNwb25zZSwKICAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvcgogXQogaW50ZXJm
YWNlIEZldGNoUmVzcG9uc2UgewogICAgIC8vIEZJWE1FOiBOZXdPYmplY3QgZG9lcyBub3Qgc2Vl
bSB0byBiZSBzdXBwb3J0ZWQgZm9yIHN0YXRpYyBtZXRob2RzLgotICAgIHN0YXRpYyBGZXRjaFJl
c3BvbnNlIGVycm9yKCk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbiwgQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoRE9NU3RyaW5nIHVy
bCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIEZldGNoUmVzcG9uc2UgZXJyb3IoKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0
aWMgRmV0Y2hSZXNwb25zZSByZWRpcmVjdChET01TdHJpbmcgdXJsLCBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBzdGF0dXMgPSAzMDIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlc3BvbnNl
VHlwZSB0eXBlOwogCkBAIC01MCw3ICs1MSw3IEBAIGludGVyZmFjZSBGZXRjaFJlc3BvbnNlIHsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRmV0Y2hIZWFkZXJzIGhlYWRlcnM7CiAgICAgW0N1c3Rv
bSwgUmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJv
ZHk7CiAKLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dIEZldGNoUmVzcG9uc2UgY2xv
bmUoKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBS
YWlzZXNFeGNlcHRpb25dIEZldGNoUmVzcG9uc2UgY2xvbmUoKTsKIAogICAgIFtQcml2YXRlLCBS
YWlzZXNFeGNlcHRpb25dIHZvaWQgaW5pdGlhbGl6ZVdpdGgoRGljdGlvbmFyeSBwYXJhbWV0ZXJz
KTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273279</attachid>
            <date>2016-03-08 00:12:42 -0800</date>
            <delta_ts>2016-03-08 01:09:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154729-20160308091227.patch</filename>
            <type>text/plain</type>
            <size>14634</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZmMjM2MmVjYmYzOTAz
NTJiMjFjYTY2NzU1YzBmNWZkNDc3Y2ViNy4uNzA4NGZiNjU2NDE0ZDViYzcxMzUyYjY4ZjhlNTZm
NzBlNjE1ODE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTAzLTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gTWFrZSBGZXRjaFJlcXVlc3QgYW5kIEZldGNoUmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1ha2luZyBGZXRjaFJlcXVlc3QgYW5kIEZldGNo
UmVzcG9uc2UgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICBCb3RoIG9iamVjdHMgY2FuIGFsd2F5
cyBiZSBzdXNwZW5kZWQgbm93LgorICAgICAgICBUaGlzIG1pZ2h0IGJlIHVwZGF0ZWQgd2hlbiBi
bG9iIGNvbnZlcnNpb24gaXMgYWRkZWQgb3Igd2hlbiBmZXRjaGluZyBkYXRhIHRvIGZpbGwgaW4g
RmV0Y2hSZXNwb25zZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1
ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVz
dDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6RmV0
Y2hSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OnJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkZldGNoUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmlkbDoKKwogMjAxNi0wMy0wNyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRW5oYW5jZSBsb2dnaW5nOiBVc2UgImFsd2F5cyBvbiIgbWFj
cm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5k
ZXggYjY4NjgxYWExNjMwODg2M2FkNGIxMDZiZmVkYzliNTkxZDIwNDJiNy4uMDIyM2Q2MmZhNDM0
Nzg4NTNkZWRiYTNhZDhiZDdjNzc4Zjc2OWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIFJlZlB0cjxGZXRj
aFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChXVEZNb3ZlKGJvZHkpLCBoZWFkZXJzLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBoZWFkZXJzLnJl
bGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOwogfQogCiBSZWZQdHI8
RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QqIGlucHV0LCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0LCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTI5Nyw3ICsyOTcsNyBAQCBSZWZQdHI8RmV0Y2hSZXF1ZXN0
PiBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
ZXRjaAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlcXVlc3QoV1RGTW92ZShib2R5KSwgaGVhZGVycy5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKGludGVybmFsUmVxdWVzdCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGZXRjaFJlcXVlc3QoY29udGV4dCwgV1RGTW92ZShib2R5KSwgaGVhZGVycy5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUmVxdWVzdCkpKTsKIH0KIAogU3RyaW5nIEZldGNoUmVx
dWVzdDo6dHlwZSgpIGNvbnN0CkBAIC00MzUsNyArNDM1LDcgQEAgU3RyaW5nIEZldGNoUmVxdWVz
dDo6cmVkaXJlY3QoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPEZl
dGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0
cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGlzRGlzdHVyYmVkKCkp
IHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CkBAIC00NDMsNyArNDQzLDE3IEBAIFJlZlB0cjxG
ZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y2xvbmUoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFZhbGlkYXRlIGJvZHkgdGVlaW5nLgotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZldGNoUmVxdWVzdChGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUobV9oZWFkZXJzLmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9p
bnRlcm5hbFJlcXVlc3QpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0
KCpjb250ZXh0LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFk
ZXJzLmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJlcXVl
c3QpKSk7Cit9CisKK2NvbnN0IGNoYXIqIEZldGNoUmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJSZXF1ZXN0IjsKK30KKworYm9vbCBGZXRjaFJlcXVl
c3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVy
biB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAppbmRleCA3ZmEwODMxM2NlMzYwY2VlNGEwMWZjY2U4
MDNhZDk2MWMxMjc2MWM3Li5iYTI2MWU3ZDg3ZjEwYjVmYjVlNWEzM2Y2ZDc2ODgwM2NkMzM2ZTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKKyNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKICNpbmNsdWRlICJGZXRjaEJvZHkuaCIKICNpbmNsdWRlICJGZXRjaEhlYWRl
cnMuaCIKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAot
Y2xhc3MgRmV0Y2hSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hSZXF1ZXN0PiB7Citj
bGFzcyBGZXRjaFJlcXVlc3QgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaFJlcXVlc3Q+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEZl
dGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3Qq
LCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRpYyBSZWZQdHI8
RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CkBAIC02Myw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgcmVkaXJlY3QoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcm
IGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0LmludGVncml0eTsg
fQogCi0gICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xvbmUoRXhjZXB0aW9uQ29kZSYpOworICAg
IFJlZlB0cjxGZXRjaFJlcXVlc3Q+IGNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICAvLyBCb2R5IEFQSQogICAgIGJvb2wgaXNEaXN0dXJiZWQoKSBj
b25zdCB7IHJldHVybiBtX2JvZHkuaXNEaXN0dXJiZWQoKTsgfQpAQCAtODMsMTggKzg0LDI0IEBA
IHB1YmxpYzoKICAgICBGZXRjaEJvZHkmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogcHJp
dmF0ZToKLSAgICBGZXRjaFJlcXVlc3QoRmV0Y2hCb2R5JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYs
IEludGVybmFsUmVxdWVzdCYmKTsKKyAgICBGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBJbnRlcm5hbFJlcXVlc3Qm
Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgorICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1
bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIEZldGNoQm9keSBtX2JvZHk7CiAg
ICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogICAgIEludGVybmFsUmVxdWVzdCBtX2lu
dGVybmFsUmVxdWVzdDsKIH07CiAKLWlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChG
ZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIEludGVybmFsUmVx
dWVzdCYmIGludGVybmFsUmVxdWVzdCkKLSAgICA6IG1fYm9keShXVEZNb3ZlKGJvZHkpKQoraW5s
aW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgSW50
ZXJuYWxSZXF1ZXN0JiYgaW50ZXJuYWxSZXF1ZXN0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZj
b250ZXh0KQorICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCiAgICAgLCBtX2hlYWRlcnMoV1RG
TW92ZShoZWFkZXJzKSkKICAgICAsIG1faW50ZXJuYWxSZXF1ZXN0KFdURk1vdmUoaW50ZXJuYWxS
ZXF1ZXN0KSkKIHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRs
CmluZGV4IGY0Yzc2NmNjZGNjMDcwMDNiYjJkNTVjNWFjNWY0ZmU0MWM4ZjFiZWYuLjk0MjQ2MDA1
NjI2ZDA0ZmUzNmY3MDMzYTg0ZjZkYjM5YjQ4OGM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwKQEAgLTM1LDEzICszNSwxMyBAQCBlbnVtIFJl
cXVlc3RSZWRpcmVjdCB7ICJmb2xsb3ciLCAiZXJyb3IiLCAibWFudWFsIiB9OwogZW51bSBSZWZl
cnJlclBvbGljeSB7ICIiLCAibm8tcmVmZXJyZXIiLCAgIm5vLXJlZmVycmVyLXdoZW4tZG93bmdy
YWRlIiwgIm9yaWdpbi1vbmx5IiwgIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIsICJ1bnNhZmUt
dXJsIiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPUZFVENI
X0FQSSwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAg
ICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgQ29uc3RydWN0b3IoRmV0Y2hSZXF1
ZXN0IGlucHV0LCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERpY3Rpb25hcnkgaW5pdCks
CiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIGlucHV0LCBbRGVmYXVsdD1VbmRlZmluZWRdICBv
cHRpb25hbCBEaWN0aW9uYXJ5IGluaXQpLAogICAgIEdsb2JhbENvbnRleHQ9RE9NV2luZG93Jldv
cmtlckdsb2JhbFNjb3BlLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSW50
ZXJmYWNlTmFtZT1SZXF1ZXN0CiBdCiBpbnRlcmZhY2UgRmV0Y2hSZXF1ZXN0IHsKQEAgLTU5LDYg
KzU5LDYgQEAgaW50ZXJmYWNlIEZldGNoUmVxdWVzdCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFJlcXVlc3RSZWRpcmVjdCByZWRpcmVjdDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGludGVncml0eTsKIAotICAgIFtSYWlzZXNFeGNlcHRpb24sIE5ld09iamVjdF0gRmV0Y2hS
ZXF1ZXN0IGNsb25lKCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBGZXRjaFJlcXVlc3QgY2xvbmUoKTsKIH07CiBGZXRj
aFJlcXVlc3QgaW1wbGVtZW50cyBGZXRjaEJvZHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA4NzYyM2RlMzZlZjNhYjgyMDNlM2Q0NDVm
MWQyOTA2NGJlMDdlOTMyLi5lNTk3NTg3NjU3MjI3NWU5ZmRjOTA1N2VkYzA1ODIzYjRmNGMyMmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
QEAgLTQ4LDkgKzQ4LDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzTnVsbEJvZHlTdGF0dXMoaW50
IHN0YXR1cykKICAgICByZXR1cm4gc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0
YXR1cyA9PSAyMDUgfHwgc3RhdHVzID09IDMwNDsKIH0KIAotUmVmPEZldGNoUmVzcG9uc2U+IEZl
dGNoUmVzcG9uc2U6OmVycm9yKCkKK1JlZjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpl
cnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZldGNoUmVzcG9uc2UoVHlwZTo6RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqY29udGV4dCwgVHlw
ZTo6RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6
SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CiB9CiAKIFJlZlB0cjxGZXRjaFJlc3Bv
bnNlPiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cywgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC02NSw3ICs2NSw3IEBAIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpyZWRp
cmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgICAgIGVjID0gVHlw
ZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEZldGNo
UmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2Uo
VHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1
YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICBSZWZQdHI8RmV0Y2hS
ZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgq
Y29udGV4dCwgVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhl
YWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKICAgICByZWRp
cmVjdFJlc3BvbnNlLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7CiAgICAg
cmVkaXJlY3RSZXNwb25zZS0+bV9oZWFkZXJzLT5mYXN0U2V0KEhUVFBIZWFkZXJOYW1lOjpMb2Nh
dGlvbiwgcmVxdWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgcmV0dXJuIHJlZGlyZWN0UmVzcG9uc2U7
CkBAIC0xMDgsMjEgKzEwOCwyMyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVXaXRo
KGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIH0KIAot
RmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShUeXBlIHR5cGUsIEZldGNoQm9keSYmIGJvZHks
IFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQotICAgIDogbV90eXBlKHR5cGUpCitGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwg
UmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
CisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgLCBtX2JvZHkoV1RGTW92ZShi
b2R5KSkKICAgICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRlcnMpKQogeworICAgIHN1c3BlbmRJ
Zk5lZWRlZCgpOwogfQogCi1SZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xv
bmUoRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25z
ZTo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKG1fYm9keS5pc0Rpc3R1cmJlZCgpIHx8IG1faXNMb2NrZWQpIHsKICAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmVkID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3Bv
bnNlKG1fdHlwZSwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRl
cnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsKKyAgICBSZWZQdHI8RmV0Y2hS
ZXNwb25zZT4gY2xvbmVkID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpjb250ZXh0LCBt
X3R5cGUsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFkZXJzKCkp
LCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CiAgICAgY2xvbmVkLT5tX2lzUmVkaXJl
Y3RlZCA9IG1faXNSZWRpcmVjdGVkOwogICAgIHJldHVybiBjbG9uZWQ7CiB9CkBAIC0xNTMsNiAr
MTU1LDE2IEBAIEpTQzo6SlNWYWx1ZSBKU0ZldGNoUmVzcG9uc2U6OmJvZHkoSlNDOjpFeGVjU3Rh
dGUmKSBjb25zdAogICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogfQogCitjb25zdCBjaGFyKiBG
ZXRjaFJlc3BvbnNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IlJlc3BvbnNlIjsKK30KKworYm9vbCBGZXRjaFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMTBmZDZlNDMyYTIwZTAx
ZTk1YWRhZmMwYWIzNzAyZWFlNTBhYWE1NS4uZmMzOGZjMzJmNzg2MDU4YTQwNGM1YjU5NjZmOGY2
NDg5N2ViOGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKKyNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJGZXRjaEJvZHkuaCIKICNpbmNsdWRl
ICJGZXRjaEhlYWRlcnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC00NSwx
MCArNDYsMTAgQEAgY2xhc3MgRGljdGlvbmFyeTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKIAotY2xhc3MgRmV0Y2hSZXNwb25zZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoUmVzcG9u
c2U+IHsKK2NsYXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRj
aFJlc3BvbnNlPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNo
UmVzcG9uc2UoVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhl
YWRlcnM6Okd1YXJkOjpSZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcigpOworICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNw
b25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0LCB7IH0sIEZl
dGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3Vy
Y2VSZXNwb25zZSgpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVzcG9uc2U+
IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBpbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICAvLyBGSVhNRTogQmluZGluZyBnZW5lcmF0b3Igc2hvdWxkIG5v
dCByZXF1aXJlIGJlbG93IG1ldGhvZCB0byBoYW5kbGUgb3B0aW9uYWwgc3RhdHVzIHBhcmFtZXRl
ci4KICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gcmVkaXJlY3QoY29udGV4dCwgdXJsLCAzMDIsIGVjKTsgfQpAQCAtNjMsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpOyB9CiAKICAgICBGZXRjaEhlYWRlcnMm
IGhlYWRlcnMoKSB7IHJldHVybiBtX2hlYWRlcnM7IH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25z
ZT4gY2xvbmUoRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBjbG9u
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gQm9k
eSBBUEkKICAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5LmlzRGlz
dHVyYmVkKCk7IH0KQEAgLTc2LDcgKzc3LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZW51
bSBjbGFzcyBUeXBlIHsgQmFzaWMsIENvcnMsIERlZmF1bHQsIEVycm9yLCBPcGFxdWUsIE9wYXF1
ZVJlZGlyZWN0IH07CiAKLSAgICBGZXRjaFJlc3BvbnNlKFR5cGUsIEZldGNoQm9keSYmLCBSZWY8
RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOworICAgIEZldGNoUmVzcG9uc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFR5cGUsIEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFk
ZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQ
SQorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAog
ICAgIFR5cGUgbV90eXBlOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCmluZGV4IGU3MGY0
YjkxZDA1YTVjODNkMmZkMGZjYzA2ZDM5MDQ4Y2VjOTcwNmYuLmNlOWIyYTZmYTU2MDQ2MDc3NGMw
ODM4NmQ1YTIwYzc1MWY0OWIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmlkbApAQCAtMjgsMTYgKzI4LDE3IEBACiBlbnVtIFJlc3BvbnNlVHlw
ZSB7ICJiYXNpYyIsICJjb3JzIiwgImRlZmF1bHQiLCAiZXJyb3IiLCAib3BhcXVlIiwgIm9wYXF1
ZXJlZGlyZWN0IiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFs
PUZFVENIX0FQSSwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsCiAgICAgR2xvYmFsQ29udGV4dD1ET01XaW5kb3cmV29ya2VyR2xvYmFsU2NvcGUsCi0gICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVJlc3BvbnNlLAog
ICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yCiBdCiBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZSB7CiAg
ICAgLy8gRklYTUU6IE5ld09iamVjdCBkb2VzIG5vdCBzZWVtIHRvIGJlIHN1cHBvcnRlZCBmb3Ig
c3RhdGljIG1ldGhvZHMuCi0gICAgc3RhdGljIEZldGNoUmVzcG9uc2UgZXJyb3IoKTsKLSAgICBb
UmFpc2VzRXhjZXB0aW9uLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0aWMg
RmV0Y2hSZXNwb25zZSByZWRpcmVjdChET01TdHJpbmcgdXJsLCBvcHRpb25hbCB1bnNpZ25lZCBz
aG9ydCBzdGF0dXMgPSAzMDIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBzdGF0aWMgRmV0Y2hSZXNwb25zZSBlcnJvcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBGZXRjaFJlc3BvbnNlIHJlZGly
ZWN0KERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IDMwMik7
CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUmVzcG9uc2VUeXBlIHR5cGU7CiAKQEAgLTUwLDcg
KzUxLDcgQEAgaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBGZXRjaEhlYWRlcnMgaGVhZGVyczsKICAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbT8gYm9keTsKIAotICAgIFtOZXdPYmplY3Qs
IFJhaXNlc0V4Y2VwdGlvbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gRmV0Y2hS
ZXNwb25zZSBjbG9uZSgpOwogCiAgICAgW1ByaXZhdGUsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBp
bml0aWFsaXplV2l0aChEaWN0aW9uYXJ5IHBhcmFtZXRlcnMpOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>