<?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>147092</bug_id>
          
          <creation_ts>2015-07-19 12:01:28 -0700</creation_ts>
          <short_desc>Migrate streams API to JS Builtins</short_desc>
          <delta_ts>2015-10-05 23:21:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147556</dependson>
    
    <dependson>149497</dependson>
    
    <dependson>149518</dependson>
    
    <dependson>149554</dependson>
          <blocked>138967</blocked>
    
    <blocked>146315</blocked>
    
    <blocked>148075</blocked>
    
    <blocked>149670</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1110507</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-19 12:01:28 -0700</bug_when>
    <thetext>Streams API is currently being implemented  in WebCore.
It might be worth investigating moving it to JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110576</commentid>
    <comment_count>1</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-07-20 00:35:06 -0700</bug_when>
    <thetext>Some history: The implementation of Streams API began in WebCore. It is true that the border could be fuzzy but given that it is a Web spec, not JS and that we need to add much more code to implement it in JS than in WebCore, I think the proper place would be WebCore.

You can have bug 146594 as a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113386</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-30 09:35:07 -0700</bug_when>
    <thetext>Some interesting point of discussions:

Sam mentioned that streams should be implemented similarly to promise.
Implementing that with the help of JSC builtins would be probably nice indeed.

Geoff mentioned that the streams API should not be visible from JS environments but only from DOM environments.
Reason is that there is no plan to have streams in ES6 or ES7.
That would lead me to think we should stick for a moment with WebCore.

Using JSC builtins is nevertheless tempting for some features like ReadableStream::tee, maybe pipeTo as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113403</commentid>
    <comment_count>3</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-07-30 10:43:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Geoff mentioned that the streams API should not be visible from JS
&gt; environments but only from DOM environments.
&gt; Reason is that there is no plan to have streams in ES6 or ES7.
&gt; That would lead me to think we should stick for a moment with WebCore.

Agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113479</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-30 13:55:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Geoff mentioned that the streams API should not be visible from JS
&gt; &gt; environments but only from DOM environments.
&gt; &gt; Reason is that there is no plan to have streams in ES6 or ES7.
&gt; &gt; That would lead me to think we should stick for a moment with WebCore.
&gt; 
&gt; Agree.

I don&apos;t 100% agree, but I also see no reason to block you. If we decide later it should have been in JSC, we can move it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113713</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-31 07:19:56 -0700</bug_when>
    <thetext>&gt; I don&apos;t 100% agree, but I also see no reason to block you. If we decide
&gt; later it should have been in JSC, we can move it.

Can you elaborate?
Would you think we could implement it in JSC but only surface public APIs in WebCore through JSDOMGlobalObject?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115705</commentid>
    <comment_count>6</comment_count>
      <attachid>258476</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-07 02:54:44 -0700</bug_when>
    <thetext>Created attachment 258476
Gauging migration to JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115724</commentid>
    <comment_count>7</comment_count>
      <attachid>258483</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-07 05:06:48 -0700</bug_when>
    <thetext>Created attachment 258483
Gauging migration to JSC (+some comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115812</commentid>
    <comment_count>8</comment_count>
      <attachid>258483</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-08-07 11:13:36 -0700</bug_when>
    <thetext>Comment on attachment 258483
Gauging migration to JSC (+some comments)

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

I didn&apos;t do a thorough review of the JS code and if it is compliant with the spec, which I suspect it is because tests seem to be passing silky smooth. Just commented a couple of things of style and stuff.
I think the code should live in WebCore and not only the code, but the instantiated objects as well as I&apos;ll explain later.
Other concern that I have is efficiency, cause my lack of knowledge doesn&apos;t allow me to guess when the JS builtin code is compiled and how it affects performance.
About the buffers and chunks movement, I guess we can figure out something as we can link with native C++ code.
Other than that, the solution looks good overall because it can help us to get closer to the spec and it would be more maintainable.

&gt; Source/JavaScriptCore/CMakeLists.txt:534
&gt; +    runtime/JSReadableStream.cpp
&gt; +    runtime/JSReadableStreamController.cpp
&gt; +    runtime/JSReadableStreamReader.cpp

If it is going to be enabled only in DOM environments, code should live in WebCore.

&gt; Source/JavaScriptCore/CMakeLists.txt:653
&gt; +    runtime/JSReadableStream.cpp
&gt; +    runtime/JSReadableStreamController.cpp
&gt; +    runtime/JSReadableStreamReader.cpp

It is true that moving it to WebCore can make some things more difficult and maybe the lut files generation can be one of them.

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:80
&gt; +        throw new TypeError();

Provide error string.

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:82
&gt; +        throw new RangeError();

Ditto.

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:102
&gt; +       throw new @TypeError(&quot;&quot;);

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:104
&gt; +       throw new @TypeError(&quot;&quot;);

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:137
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:139
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:309
&gt; +    }
&gt; +    catch(error) {

Same line?

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:367
&gt; +    }
&gt; +    catch(error) {

Ditto.

&gt; Source/JavaScriptCore/builtins/ReadableStream.prototype.js:46
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStream.prototype.js:49
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStream.prototype.js:68
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:33
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:40
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:50
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:54
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:64
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:68
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:71
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamController.prototype.js:81
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamReader.prototype.js:33
&gt; +        return Promise.reject(new @TypeError());

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamReader.prototype.js:51
&gt; +        return Promise.reject(new @TypeError());

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamReader.prototype.js:61
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/builtins/ReadableStreamReader.prototype.js:67
&gt; +        throw new @TypeError();

Ditto

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:156
&gt; +#if ENABLE(STREAMS_API)
&gt; +#include &quot;JSReadableStream.h&quot;
&gt; +#include &quot;JSReadableStreamController.h&quot;
&gt; +#include &quot;JSReadableStreamReader.h&quot;
&gt; +#endif

So from what I see you are adding all these objects and initializing them already in the runtime and the only thing that is going to be done later is adding the constructor to the DOMWindow. Am I right. If we do so we are bloating the memory in the runtime with something that is not going to be available in the end. That&apos;s why I think all these objects and specially their initializations should be moved to WebCore. I don&apos;t know if DOMWindow or JSDOMGlobalObject is the right place and even which is the best way of putting it there, but it should be definitely out of here, IMHO. Btw, I quote these includes because it is too much to quote the whole file :)

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:453
&gt; -    
&gt; -    
&gt; +

I wouldn&apos;t touch this part even if it removes a trailing space because it does not have to do with the patch. In the other parts of the code it is ok, but I&apos;d leave this out of the way because it &quot;pollutes&quot; the diff.

&gt; Source/JavaScriptCore/runtime/JSReadableStream.cpp:38
&gt; +namespace JSC {

Of course we would change the namespace if we lived in WebCore

&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj:22743
&gt; -&lt;/Project&gt;
&gt;  \ No newline at end of file
&gt; +&lt;/Project&gt;

Careful here, no need to touch this.

&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters:15418
&gt; -&lt;/Project&gt;
&gt;  \ No newline at end of file
&gt; +&lt;/Project&gt;

Ditto.

&gt; LayoutTests/js/dom/global-constructors-attributes-expected.txt:-945
&gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).value is ReadableStream
&gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).hasOwnProperty(&apos;get&apos;) is false
&gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).hasOwnProperty(&apos;set&apos;) is false
&gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).enumerable is false
&gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).configurable is true

I wonder if all these things should change or not. I don&apos;t think they should, should they?

&gt; LayoutTests/streams/reference-implementation/brand-checks-expected.txt:4
&gt; -FAIL ReadableStream.prototype.pipeThrough works generically on its this and its arguments Can only call ReadableStream.pipeThrough on instances of ReadableStream
&gt; +PASS ReadableStream.prototype.pipeThrough works generically on its this and its arguments 

Nice to see these passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116947</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-12 05:48:32 -0700</bug_when>
    <thetext>Thanks for the feedback.

This patch is a first try at moving streams to JSC.
Overall, I like the way it simplifies the architecture and code, it is just so much easier to implement...
I felt like there was some limited slowdown when running the tests but i did no actual measurement.

It also opens some potential better handling of native sources.
Next step is precisely to evaluate the link with WebCore native sources.
I think this should give us enough data to make an informed choice.

&gt; Other concern that I have is efficiency, cause my lack of knowledge doesn&apos;t
&gt; allow me to guess when the JS builtin code is compiled and how it affects
&gt; performance.

That is a fair concern. 
I may be wrong but I think it is compiled when the builtin function is called.
This seems ok to me.

The other efficiency concern might be memory copies between consumer and producer.
Dedicated piping might be used in the places we want to optimize things like HTTP -&gt; MediaStream.

&gt; If it is going to be enabled only in DOM environments, code should live in
&gt; WebCore.

I tend to agree, but we must weight pros and cons.
Can you be more specific?

FWIW, a V8 implementation is/was under consideration (see https://code.google.com/p/chromium/issues/detail?id=240603#c36).
Streams might be useful for JS-only environments at some point.

&gt; &gt; Source/JavaScriptCore/builtins/ReadableStream.js:80
&gt; &gt; +        throw new TypeError();
&gt; 
&gt; Provide error string.

There is a TODO in the js file.
Plan to do that if/when finalizing this patch.

&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:156
&gt; &gt; +#if ENABLE(STREAMS_API)
&gt; &gt; +#include &quot;JSReadableStream.h&quot;
&gt; &gt; +#include &quot;JSReadableStreamController.h&quot;
&gt; &gt; +#include &quot;JSReadableStreamReader.h&quot;
&gt; &gt; +#endif
&gt; 
&gt; So from what I see you are adding all these objects and initializing them
&gt; already in the runtime and the only thing that is going to be done later is
&gt; adding the constructor to the DOMWindow. Am I right.

Yes.

&gt; If we do so we are
&gt; bloating the memory in the runtime with something that is not going to be
&gt; available in the end. That&apos;s why I think all these objects and specially
&gt; their initializations should be moved to WebCore. I don&apos;t know if DOMWindow
&gt; or JSDOMGlobalObject is the right place and even which is the best way of
&gt; putting it there, but it should be definitely out of here, IMHO. Btw, I
&gt; quote these includes because it is too much to quote the whole file :)

When JSC is used on its own, it might bloat things a bit, especially if we remove the compilation flag.
I do not think we are bloating the memory in WebKit case.

We could try to leave as much code as possible in WebCore, but I do not think we could directly have it all there.
It might be just better to have it all in JSC, except some small bits, native source and (temporarily?) constructor insertion.

Anyway, this is a good discussion to have.
Any additional feedback welcome.

&gt; &gt; LayoutTests/js/dom/global-constructors-attributes-expected.txt:-945
&gt; &gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).value is ReadableStream
&gt; &gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).hasOwnProperty(&apos;get&apos;) is false
&gt; &gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).hasOwnProperty(&apos;set&apos;) is false
&gt; &gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).enumerable is false
&gt; &gt; -PASS Object.getOwnPropertyDescriptor(global, &apos;ReadableStream&apos;).configurable is true
&gt; 
&gt; I wonder if all these things should change or not. I don&apos;t think they
&gt; should, should they?

I did not have yet time to study this precisely.
Plan to do when/if finalizing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116955</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-08-12 09:28:51 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; &gt; If it is going to be enabled only in DOM environments, code should live in
&gt; &gt; WebCore.
&gt; 
&gt; I tend to agree, but we must weight pros and cons.
&gt; Can you be more specific?
&gt; 
&gt; FWIW, a V8 implementation is/was under consideration (see
&gt; https://code.google.com/p/chromium/issues/detail?id=240603#c36).

IMHO, if it is enable only for the DOM environments the code should live in WebCore and have that namespace instead of JSC.

&gt; Streams might be useful for JS-only environments at some point.

It could be, but it is a too long shot, IMHO.

&gt; When JSC is used on its own, it might bloat things a bit, especially if we
&gt; remove the compilation flag.
&gt; I do not think we are bloating the memory in WebKit case.

We wouldn&apos;t be bloating the memory for the DOM case, of course, we would be adding unnecessary objects for JS only environments if we don&apos;t force the compilation to remove it.

&gt; We could try to leave as much code as possible in WebCore, but I do not
&gt; think we could directly have it all there.
&gt; It might be just better to have it all in JSC, except some small bits,
&gt; native source and (temporarily?) constructor insertion.

If we have it in WebCore, this part of the code has to go to WebCore too so we won&apos;t have having this issue anymore.

About the rest, I&apos;m ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119705</commentid>
    <comment_count>11</comment_count>
      <attachid>259597</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-21 03:37:56 -0700</bug_when>
    <thetext>Created attachment 259597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119706</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 03:40:02 -0700</bug_when>
    <thetext>Attachment 259597 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSReadableStream.h:52:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStream.h:66:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStream.h:80:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamController.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamController.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamController.h:74:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:668:  Alphabetical sorting problem. &quot;runtime/JSReadableStream.cpp&quot; should be before &quot;runtime/ModuleLoaderObject.cpp&quot;.  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamReader.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamReader.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamReader.h:74:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 10 in 27 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>1119708</commentid>
    <comment_count>13</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-08-21 04:09:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created attachment 259597 [details]
&gt; Patch

You didn&apos;t fix some of the things I suggested, it makes no sense to me to discuss them again, it was just my opinion :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119733</commentid>
    <comment_count>14</comment_count>
      <attachid>259611</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-21 06:19:29 -0700</bug_when>
    <thetext>Created attachment 259611
Trying to fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119734</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 06:22:36 -0700</bug_when>
    <thetext>Attachment 259611 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSReadableStream.h:52:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStream.h:66:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStream.h:80:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamController.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamController.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamController.h:74:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:668:  Alphabetical sorting problem. &quot;runtime/JSReadableStream.cpp&quot; should be before &quot;runtime/ModuleLoaderObject.cpp&quot;.  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamReader.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamReader.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSReadableStreamReader.h:74:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 10 in 27 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>1119737</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-21 07:27:03 -0700</bug_when>
    <thetext>I did a quick mock-up version of native sources (see bug 138968) based on JSC ReadableStream. In most respects, moving to JSC builtins and JSXX structures are real improvements to me.

The JSXX classes could be located in WebCore.
I put them in JSC since builtins are currently only available in JSC.
If we envision adding WebCore JS builtins at some point, we could try keeping ReadableStream in WebCore. But, even for pure JS environments, streams may be useful in the future. The same applies to WritableStream of course.

If that is not too much effort, I would try to clean WebCore ReadableStream go with pending patches (bug 148075 and bug 146278) before removing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119738</commentid>
    <comment_count>17</comment_count>
      <attachid>259611</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-08-21 07:31:47 -0700</bug_when>
    <thetext>Comment on attachment 259611
Trying to fix mac build

I know the patch is a bit big but it allows keeping the same level of functionality.
Let me know if that would ease things to split it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123145</commentid>
    <comment_count>18</comment_count>
      <attachid>259611</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-03 13:47:34 -0700</bug_when>
    <thetext>Comment on attachment 259611
Trying to fix mac build

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

I’m not qualified to review the whole thing, but looks good to me.

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:59
&gt; +    if (strategy !== undefined &amp;&amp; !@isObject(strategy))

How can strategy === undefined given the typeof strategy === &quot;undefined&quot; check above?

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:72
&gt; +    this.@reader = undefined;
&gt; +    this.@storedError = undefined;

Is this better than just not setting the property? Is it undefined we want, rather than, say, null? I suppose setting the property is better for performance than leaving it not set.

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:75
&gt; +    this.@highWaterMark = Number(strategy.highWaterMark);

Is this really the right thing to do for the number? Does this unnecessarily box the number? Maybe we should be using &quot;+ 0&quot; or some other idiom instead.

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:218
&gt; +    reader.@ownerReadableStream.@reader = undefined;

Can this function be called when @ownerReadableStream is already null?

Do we have test coverage for the fact that this sets reader to undefined specifically rather than, say, null?

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:334
&gt; +    macro(state) \
&gt; +    macro(underlyingSource) \
&gt; +    macro(queue) \
&gt; +    macro(queueSize) \
&gt; +    macro(started) \
&gt; +    macro(closeRequested) \
&gt; +    macro(pullAgain) \
&gt; +    macro(pulling) \
&gt; +    macro(reader) \
&gt; +    macro(storedError) \
&gt; +    macro(controller) \
&gt; +    macro(strategySize) \
&gt; +    macro(highWaterMark) \
&gt; +    macro(readRequests) \
&gt; +    macro(ownerReadableStream) \
&gt; +    macro(closedPromise) \
&gt; +    macro(closedPromiseResolve) \
&gt; +    macro(closedPromiseReject) \
&gt; +    macro(controlledReadableStream) \
&gt; +    macro(readableStreamClosed) \
&gt; +    macro(readableStreamReadable) \
&gt; +    macro(readableStreamErrored) \
&gt; +    macro(ReadableStreamReader) \
&gt; +    macro(ReadableStreamController) \

I think we should be keeping this list sorted instead of in order things were added. I know not everything was already done that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123411</commentid>
    <comment_count>19</comment_count>
      <attachid>259611</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-04 05:25:57 -0700</bug_when>
    <thetext>Comment on attachment 259611
Trying to fix mac build

Thanks for the review.

Your feedback might lead to some changes in the patch.
I think these changes can be done at cq time or as a next patch if more changes are required.

Please see inline for additional comments/answers.

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

&gt;&gt; Source/JavaScriptCore/builtins/ReadableStream.js:59
&gt;&gt; +    if (strategy !== undefined &amp;&amp; !@isObject(strategy))
&gt; 
&gt; How can strategy === undefined given the typeof strategy === &quot;undefined&quot; check above?

Right, I will change this in a next patch or at cq time.

&gt;&gt; Source/JavaScriptCore/builtins/ReadableStream.js:72
&gt;&gt; +    this.@storedError = undefined;
&gt; 
&gt; Is this better than just not setting the property? Is it undefined we want, rather than, say, null? I suppose setting the property is better for performance than leaving it not set.

This is mostly to follow step-by-step the spec.
Although this might not be necessary now, I would prefer keeping it at the moment.

&gt;&gt; Source/JavaScriptCore/builtins/ReadableStream.js:75
&gt;&gt; +    this.@highWaterMark = Number(strategy.highWaterMark);
&gt; 
&gt; Is this really the right thing to do for the number? Does this unnecessarily box the number? Maybe we should be using &quot;+ 0&quot; or some other idiom instead.

The spec mandates it.
We would probably loose the case of HWM set to &quot;Infinity&quot;.

&gt;&gt; Source/JavaScriptCore/builtins/ReadableStream.js:218
&gt;&gt; +    reader.@ownerReadableStream.@reader = undefined;
&gt; 
&gt; Can this function be called when @ownerReadableStream is already null?
&gt; 
&gt; Do we have test coverage for the fact that this sets reader to undefined specifically rather than, say, null?

This is fully covered in the test suite (close, error and releasing).

The behaviour in the spec has changed a bit here since I authored these lines.
This implementation is synced with https://streams.spec.whatwg.org/commit-snapshots/0e56ed49dc66fd1b29cd08acaafad24a7c06f058/
Plan would be to upstream support for that particular revision, then update to the latest snapshot.

I will mention https://streams.spec.whatwg.org/commit-snapshots/0e56ed49dc66fd1b29cd08acaafad24a7c06f058/ as a comment within the Readabestream*.js files in a next patch or at cq time.

&gt;&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:334
&gt;&gt; +    macro(ReadableStreamController) \
&gt; 
&gt; I think we should be keeping this list sorted instead of in order things were added. I know not everything was already done that way.

OK, let&apos;s do that as a follow-up patch then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123416</commentid>
    <comment_count>20</comment_count>
      <attachid>259611</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-09-04 06:11:30 -0700</bug_when>
    <thetext>Comment on attachment 259611
Trying to fix mac build

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

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:332
&gt; +function invokeOrNoop(object, key, args)

About this I wonder two things:
Should we prefix or postfix these more general functions to avoid any collision in naming? In these cases I don&apos;t think they can collide, but in my implementation of WritableStreams I created some functions to resolve and reject promises more easily and they collide with the Promises ones.
Should we move these functions (all or only the general ones) to a Streams.js file that could be used by both implementations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123418</commentid>
    <comment_count>21</comment_count>
      <attachid>259611</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-09-04 06:19:48 -0700</bug_when>
    <thetext>Comment on attachment 259611
Trying to fix mac build

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

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:65
&gt; +    this.@queue = [];
&gt; +    this.@queueSize = 0;

For Writable I created an object here with &quot;content&quot; being the queue and size being the obvious. That way it is easier to create the functions the spec requires with the same parameters and still keep some general implementation that could be used for both readable and writable (peek, dequeue, etc)

&gt; Source/JavaScriptCore/builtins/ReadableStream.js:113
&gt; +        this.@closedPromise = new Promise(function(resolve, reject) {
&gt; +            stream.@reader.@closedPromiseResolve = resolve;
&gt; +            stream.@reader.@closedPromiseReject = reject;
&gt; +        });

As I said before, I created three functions newStreamsPromise, revolveStreamsPromise and rejectStreams promise that use only one slot and keep the resolve and reject functions as attributes inside the promise object. Then the resolve and reject functions check that the promise is not undefined and the corresponding method exist, invoke then and unset them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123420</commentid>
    <comment_count>22</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-04 06:35:26 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Comment on attachment 259611 [details]
&gt; Trying to fix mac build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259611&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ReadableStream.js:65
&gt; &gt; +    this.@queue = [];
&gt; &gt; +    this.@queueSize = 0;
&gt; 
&gt; For Writable I created an object here with &quot;content&quot; being the queue and
&gt; size being the obvious. That way it is easier to create the functions the
&gt; spec requires with the same parameters and still keep some general
&gt; implementation that could be used for both readable and writable (peek,
&gt; dequeue, etc)
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ReadableStream.js:113
&gt; &gt; +        this.@closedPromise = new Promise(function(resolve, reject) {
&gt; &gt; +            stream.@reader.@closedPromiseResolve = resolve;
&gt; &gt; +            stream.@reader.@closedPromiseReject = reject;
&gt; &gt; +        });
&gt; 
&gt; As I said before, I created three functions newStreamsPromise,
&gt; revolveStreamsPromise and rejectStreams promise that use only one slot and
&gt; keep the resolve and reject functions as attributes inside the promise
&gt; object. Then the resolve and reject functions check that the promise is not
&gt; undefined and the corresponding method exist, invoke then and unset them.

This refactoring might be interesting.

I would tend to introduce the refactored routines at the time we saw a potential redundancy in the upstreamed code. That would allow us easy evaluation of the refactoring benefits and the best way to achieve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123423</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-04 06:51:32 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 259611 [details]
&gt; Trying to fix mac build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259611&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ReadableStream.js:332
&gt; &gt; +function invokeOrNoop(object, key, args)
&gt; 
&gt; About this I wonder two things:
&gt; Should we prefix or postfix these more general functions to avoid any
&gt; collision in naming? In these cases I don&apos;t think they can collide, but in
&gt; my implementation of WritableStreams I created some functions to resolve and
&gt; reject promises more easily and they collide with the Promises ones.
&gt; Should we move these functions (all or only the general ones) to a
&gt; Streams.js file that could be used by both implementations?

I am not quite sure. It would be good to have opinion from others.
Here is my take on it.
Prefixing/Postfixing such routines seems good to me.
invokeOrNoop is defined in the streams API spec. Though it is generic, I would leave it into streams scope.
For the promise routines, streams scope might make less sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123426</commentid>
    <comment_count>24</comment_count>
      <attachid>259611</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-04 07:21:17 -0700</bug_when>
    <thetext>Comment on attachment 259611
Trying to fix mac build

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

&gt;&gt;&gt; Source/JavaScriptCore/builtins/ReadableStream.js:75
&gt;&gt;&gt; +    this.@highWaterMark = Number(strategy.highWaterMark);
&gt;&gt; 
&gt;&gt; Is this really the right thing to do for the number? Does this unnecessarily box the number? Maybe we should be using &quot;+ 0&quot; or some other idiom instead.
&gt; 
&gt; The spec mandates it.
&gt; We would probably loose the case of HWM set to &quot;Infinity&quot;.

No, we wouldn’t lose infinity. You can add zero to infinity and you will get infinity. To get this right it would be better to understand clearly what the spec mandates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123427</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-04 07:22:13 -0700</bug_when>
    <thetext>Who’s going to be the primary reviewer for this. Geoff, can it be you? Is there someone else who has the necessary JavaScript runtime expertise that should look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123431</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-04 07:30:06 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Comment on attachment 259611 [details]
&gt; Trying to fix mac build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259611&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/builtins/ReadableStream.js:75
&gt; &gt;&gt;&gt; +    this.@highWaterMark = Number(strategy.highWaterMark);
&gt; &gt;&gt; 
&gt; &gt;&gt; Is this really the right thing to do for the number? Does this unnecessarily box the number? Maybe we should be using &quot;+ 0&quot; or some other idiom instead.
&gt; &gt; 
&gt; &gt; The spec mandates it.
&gt; &gt; We would probably loose the case of HWM set to &quot;Infinity&quot;.

I was meaning &quot;Infinity&quot; as a string, not as a number.

&gt; No, we wouldn’t lose infinity. You can add zero to infinity and you will get
&gt; infinity. To get this right it would be better to understand clearly what
&gt; the spec mandates.

Spec says &quot;Set highWaterMark to ToNumber(highWaterMark)&quot;, ToNumber being defined as http://www.ecma-international.org/ecma-262/6.0/index.html#sec-tonumber</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123440</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-04 08:50:12 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Spec says &quot;Set highWaterMark to ToNumber(highWaterMark)&quot;, ToNumber being
&gt; defined as
&gt; http://www.ecma-international.org/ecma-262/6.0/index.html#sec-tonumber

After looking over some ECMAScript documentation, I’m pretty sure that a good efficient way to write ToNumber(x) in JavaScript is +x. I am pretty sure that Number(x) does something different and likely considerably less efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123567</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-04 13:07:52 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; Spec says &quot;Set highWaterMark to ToNumber(highWaterMark)&quot;, ToNumber being
&gt; &gt; defined as
&gt; &gt; http://www.ecma-international.org/ecma-262/6.0/index.html#sec-tonumber
&gt; 
&gt; After looking over some ECMAScript documentation, I’m pretty sure that a
&gt; good efficient way to write ToNumber(x) in JavaScript is +x. I am pretty
&gt; sure that Number(x) does something different and likely considerably less
&gt; efficient.

I may be missing something but calling Number() as a function should be functionally equivalent.
+x is shorter though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123569</commentid>
    <comment_count>29</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-04 13:09:44 -0700</bug_when>
    <thetext>&gt; I may be missing something but calling Number() as a function should be
&gt; functionally equivalent.

Meaning that it does only a call to ToNumber.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123586</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-04 13:39:58 -0700</bug_when>
    <thetext>After discussing with Geoff, we think implementing DOM objects in JSC side is not good approach. Streams should be implemented in WebCore.

Implementing Streams in JS itself looks quite reasonable to me. Streams involve callbacks and it makes managing reference counts harder.
I think we need some way to implement DOM object in JS outside JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124017</commentid>
    <comment_count>31</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-06 10:25:40 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; After discussing with Geoff, we think implementing DOM objects in JSC side
&gt; is not good approach. Streams should be implemented in WebCore.

OK.
I still think streams should go to JSC in the long term.

&gt; Implementing Streams in JS itself looks quite reasonable to me. Streams
&gt; involve callbacks and it makes managing reference counts harder.
&gt; I think we need some way to implement DOM object in JS outside JSC.

I thought about it a while ago and agree it would be nice to have it, not only for streams. The deprecated webkitGetUserMedia for instance could be implemented in JS for instance.

I will have a look at it, as part of bug 147556 (ReadableStream::pipeThrough implementation).
Any advice appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129929</commentid>
    <comment_count>32</comment_count>
      <attachid>262255</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-01 08:52:27 -0700</bug_when>
    <thetext>Created attachment 262255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130199</commentid>
    <comment_count>33</comment_count>
      <attachid>262325</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-02 03:08:38 -0700</bug_when>
    <thetext>Created attachment 262325
Minor refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130200</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-02 03:10:15 -0700</bug_when>
    <thetext>Attachment 262325 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp:73:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 25 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>1130594</commentid>
    <comment_count>35</comment_count>
      <attachid>262428</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-05 05:56:21 -0700</bug_when>
    <thetext>Created attachment 262428
Refactoring constructor for future reuse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130595</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-05 05:58:10 -0700</bug_when>
    <thetext>Attachment 262428 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMConstructor.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 26 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>1130900</commentid>
    <comment_count>37</comment_count>
      <attachid>262428</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-05 23:21:29 -0700</bug_when>
    <thetext>Comment on attachment 262428
Refactoring constructor for future reuse

Clearing flags on attachment: 262428

Committed r190608: &lt;http://trac.webkit.org/changeset/190608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130901</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-05 23:21:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258476</attachid>
            <date>2015-08-07 02:54:44 -0700</date>
            <delta_ts>2015-08-07 05:06:41 -0700</delta_ts>
            <desc>Gauging migration to JSC</desc>
            <filename>bug-147092-20150807065432.patch</filename>
            <type>text/plain</type>
            <size>229480</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDIzNTc0ODhkZTYwM2ZiMDdlODRiMzAyZTNmYjNhZWZjMjBjZGJiLi41ZTQ2ZTAxYjRhM2FjZjQ2
OWEyNTZhZDlmOTYwNDI1NGZlZDYzYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjcgQEAKKzIwMTUtMDgtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KKworICAgICAgICBTaG91bGQgc3RyZWFtcyBBUEkgYmUgbW92ZWQgdG8gSlND
PworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0
aW5zL1JlYWRhYmxlU3RyZWFtLmpzOiBBZGRlZC4KKyAgICAgICAgKGlzUmVhZGFibGVTdHJlYW0p
OgorICAgICAgICAoaXNSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChpc1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgICguc3RyYXRlZ3kuc2l6ZSk6CisgICAgICAgIChp
bml0aWFsaXplUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoaW5pdGlhbGl6ZVJlYWRhYmxlU3Ry
ZWFtUmVhZGVyKToKKyAgICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIp
OgorICAgICAgICAoZXJyb3JSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChyZXF1ZXN0UmVhZGFi
bGVTdHJlYW1QdWxsLnNob3VsZFJlYWRhYmxlU3RyZWFtUHVsbCk6CisgICAgICAgIChyZXF1ZXN0
UmVhZGFibGVTdHJlYW1QdWxsKToKKyAgICAgICAgKGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNp
emUpOgorICAgICAgICAocmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKGNh
bmNlbFJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVh
bSk6CisgICAgICAgIChjbG9zZVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFi
bGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0pOgorICAg
ICAgICAocmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChpbnZva2VPck5v
b3ApOgorICAgICAgICAocHJvbWlzZUludm9rZU9yTm9vcCk6CisgICAgICAgICogYnVpbHRpbnMv
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKGNhbmNlbCk6Cisg
ICAgICAgIChnZXRSZWFkZXIpOgorICAgICAgICAocGlwZVRocm91Z2gpOgorICAgICAgICAocGlw
ZVRvKToKKyAgICAgICAgKHRlZSk6CisgICAgICAgIChsb2NrZWQpOgorICAgICAgICAqIGJ1aWx0
aW5zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAg
ICAoZW5xdWV1ZSk6CisgICAgICAgIChlcnJvcik6CisgICAgICAgIChjbG9zZSk6CisgICAgICAg
IChkZXNpcmVkU2l6ZSk6CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
cHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKGNhbmNlbCk6CisgICAgICAgIChyZWFkKToK
KyAgICAgICAgKHJlbGVhc2VMb2NrKToKKyAgICAgICAgKGNsb3NlZCk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWFkYWJsZVN0
cmVhbUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlYWRhYmxl
U3RyZWFtUmVhZGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZVJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJl
YWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2VkR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlQ2xvc2VkR2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZURlc2lyZWRTaXplR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJl
YWRhYmxlU3RyZWFtU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJl
YWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1JlYWRhYmxlU3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUmVhZGFibGVT
dHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW06OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW06OkpTUmVhZGFibGVTdHJl
YW0pOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OkpTUmVhZGFibGVTdHJlYW1Qcm90
b3R5cGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0
b3I6OkpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW1Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJl
YW1Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpqc1JlYWRhYmxlU3Ry
ZWFtUHJvdG90eXBlR2V0dGVyTG9ja2VkKToKKyAgICAgICAgKiBydW50aW1lL0pTUmVhZGFibGVT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
OjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OkpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyQ29uc3RydWN0b3I6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OmpzUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0Rlc2lyZWRTaXplKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKEpTQzo6SlNS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UmVh
ZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6anNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNDbG9zZWQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOiBBZGRlZC4KKwogMjAxNS0wOC0wNiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgZ2V0
X2J5X2lkIGxpa2UgSUMgaW50byBnZXRfYnlfdmFsIHdoZW4gdGhlIGdpdmVuIG5hbWUgaXMgU3Ry
aW5nIG9yIFN5bWJvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUxZWQ0MDVmNzcwYTMxNWRmOTczZmI1ODRiOWZj
NDI0YjNiMzg1YjAuLjkwY2M3ODBmMDE1ZWRjM2Y2YTNjNTk4NjE2ZTBkYTMyOGJiMDlhNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNS0wOC0wNyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFNob3VsZCBzdHJlYW1zIEFQSSBi
ZSBtb3ZlZCB0byBKU0M/CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDcwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2lu
ZG93UmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1DdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaDogUmVtb3ZlZC4KKwogMjAxNS0wOC0wNiAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgU291cmNlL1dlYkNvcmUvY3J5
cHRvIGNvZGUgc2hvdWxkIHBhc3Mgc3RkOjpmdW5jdGlvbjw+IG9iamVjdHMgdGhyb3VnaCBydmFs
dWUgcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwNDEz
YjNmODYyNzVkNTM4NmU3YjRhYTA2MGM0MzkzMDA1YWM0NTQuLjFjNGUwZmRhZmJkNzQwODA4NmY1
NTRmYTNiYjZhZWY4OGE5NjBmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTUyOSw2ICs1MjksOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCiAgICAgcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAKKyAgICBydW50
aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwCisgICAgcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5jcHAKKyAgICBydW50aW1lL0pTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCiAgICAg
cnVudGltZS9KU1Njb3BlLmNwcAogICAgIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5jcHAKICAgICBydW50aW1lL0pTU2V0LmNwcApAQCAtNjQ1LDYgKzY0OCw5IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCiAgICAgcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0pTUHJvbWlzZVByb3Rv
dHlwZS5jcHAKKyAgICBydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwCisgICAgcnVudGltZS9K
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAKKyAgICBydW50aW1lL0pTUmVhZGFibGVTdHJl
YW1SZWFkZXIuY3BwCiAgICAgcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL051bWJlclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMDcxMjY1
MmEwOWIxYzhhZjUxZGEyZTY2ZDlhMTg0YjMwNTlhZTU3Li4xZjE3NDM1NWU5NTViYjViZjgwNzQy
MzA3ZTg2NTg1YmJkNGEzNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtNTIsNiArNTIsOSBAQCBhbGwgOiBcCiAgICAgSlNHbG9iYWxPYmplY3QubHV0
LmggXAogICAgIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggXAorICAgIEpTUmVhZGFibGVTdHJlYW0ubHV0LmggXAorICAgIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXIubHV0LmggXAorICAgIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmx1
dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBOdW1i
ZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCBhYTRhNTBhMWNiNGQ4NjBhODE1ZjI4YWI1ZTIzYmZkNTgxMjdmZGQ0Li5lN2E5YzZm
YmU1NTYxNDY1ZDg2N2IzODZhOTNiZmE3YjM2MTI4OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKQEAgLTc4MCw2ICs3ODAsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm94eS5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUmVhZGFibGVTdHJlYW0uY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU1Njb3BlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTU2V0LmNwcCIgLz4KQEAgLTkxMSw2ICs5MTQsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTT05PYmplY3QubHV0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQ
cm9taXNlQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJl
YW0ubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xLZXl3b3JkTG9va3VwLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExleGVyLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIiAv
PgpAQCAtMTYxNyw2ICsxNjIzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm94eS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU1JlYWRhYmxlU3RyZWFtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTY29wZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdiNjk5OGRhNzBkOTUyNTg1YzJkYmFhNzg5NjU4
YTBlYzZlMDk0NGEuLmIyNzQ4ZDU2YWIwNjFlNjIzNDQwMDlkMjQ2NzZlMjk5MTFkNDZhN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDgsNiArOTQ4LDEyIEBACiAJCTJBRjcz
ODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMx
N0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQw
MDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmggKi87IH07CisJCTQxQzhDRkY2MUI3MEY3MzAwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QzhDRkY0MUI3MEY1NEUwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmNwcCAqLzsgfTsKKwkJ
NDFDOENGRjcxQjcwRjczNjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhDRkY1MUI3MEY1NEUwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDOENGRkMxQjcxMDdBNDAwQzM3QUE3IC8qIEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQzhDRkY4MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5jcHAgKi87IH07CisJCTQxQzhDRkZEMUI3MTA3QTgwMEMzN0FBNyAvKiBKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFDOENGRjkxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDFDOENGRkUxQjcxMDdBQjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFD
OENGRkExQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICovOyB9
OworCQk0MUM4Q0ZGRjFCNzEwN0FFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDOENGRkIx
QjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MzQwQTQ4NDFBOTA1MUFGMDBE
NzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MzQwQTQ4MjFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAg
Ki87IH07CiAJCTQzNDBBNDg1MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQwQTQ4MzFBOTA1MUFG
MDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovOyB9OwogCQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYx
MTAgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlv
bi5mcmFtZXdvcmsgKi87IH07CkBAIC0yNjk3LDYgKzI3MDMsMTIgQEAKIAkJMkFGNzM4MkExOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8q
IGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSB1
c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk0MUM4Q0ZGNDFC
NzBGNTRFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFDOENGRjUxQjcwRjU0RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJl
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUM4Q0ZGODFCNzEwNzlGMDBDMzdBQTcg
LyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUM4Q0ZGOTFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDOENGRkExQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzhDRkZCMUI3MTA3OUYwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDM0MEE0ODIxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aENvbW1vbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgzMUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29t
bW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhDb21tb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZl
YXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0
Miw2ICs0NDU0LDEyIEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUM4Q0ZGODFC
NzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovLAorCQkJ
CTQxQzhDRkY5MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5o
ICovLAorCQkJCTQxQzhDRkZBMUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmNwcCAqLywKKwkJCQk0MUM4Q0ZGQjFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oICovLAorCQkJCTQxQzhDRkY0MUI3MEY1NEUwMEMzN0FBNyAvKiBKU1JlYWRh
YmxlU3RyZWFtLmNwcCAqLywKKwkJCQk0MUM4Q0ZGNTFCNzBGNTRFMDBDMzdBQTcgLyogSlNSZWFk
YWJsZVN0cmVhbS5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAog
CQkJCTBGRTA1MDBDMUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVudHNNb2RlLmggKi8sCkBAIC01
OTc2LDYgKzU5OTQsNyBAQAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBERkdEaXNh
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAv
KiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzRTQwRTFCNjE4QjY2MDBD
ODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzhDRkY3
MUI3MEY3MzYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRDNDODI4MTQxMTVENEYwMEZEODFDQiAvKiBERkdEcml2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTYwMzAsNiArNjA0OSw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1
NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2MkYyQUEzODFCMEJFREUzMDA2MTBDN0EgLyogREZHTGF6eU5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUM4Q0ZGRDFCNzEwN0E4MDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5
MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNjY3Myw2ICs2NjkzLDcgQEAKIAkJCQk4NjY3MzlEMzEzQkZERTcx
MDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUY0MjE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUM4Q0ZGRjFCNzEwN0FFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xh
bXBlZEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkg
LyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNjAxODIx
NjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKQEAg
LTcyNTEsNiArNzI3Miw3IEBACiAJCQkJQTVGRDAwNzkxODlCMDUxMDAwNjMzMjMxIC8qIENvbnNv
bGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBODM2Mzg1MThEN0QwRUUwMDAwRUJD
QyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Mjgw
ODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQxQzhDRkZDMUI3MTA3QTQwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNGMTE4OTFCNUI0MDAzMUM3RkEgLyogQ29u
dGVudFNlYXJjaFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjQwMzA1NTE0QjQw
NEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFBQ0U2
M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTc2NjksNiArNzY5MSw3IEBACiAJCQkJMTQ0NjlERTAxMDdFQzdFNzAwNjUwNDQ2IC8q
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTEx
MDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0OEYyMUI3MTA3RUM1NDcwMDQyRUMyQyAvKiBOb2Rlcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MUM4Q0ZGRTFCNzEwN0FCMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9k
ZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMwMDZGMDdE
NSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MjVGQzUx
QTZERDgwMTAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTc3NTEsNiArNzc3NCw3IEBACiAJCQkJQTU0Q0YyRjUxODRFQUIyNDAwMjM3RjE5IC8qIFNj
cmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mjk5REE1MTdEMTI4NTgwMDVGNUZG
OSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQxMjAyRjFBOEFF
RDEyMDAwRjUyODAgLyogRlRMSlNDYWxsQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUM4
Q0ZGNjFCNzBGNzMwMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjk1MkFCQzFCNDg3QTc3MDBDMzY3QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc5MERENkQxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mjk5REExMTdEMTI4NDgwMDVG
NUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5MTll
NjY1MjEyNDMwYzZjYWMzMjY0NmRiYzg3OTBhMGVlMWUxOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJsZVN0cmVhbS5qcwpAQCAtMCwwICsx
LDM3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRPRE86IEFkZCBleGNlcHRpb24g
bWVzc2FnZXMuCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3Qoc3RyZWFtKSAmJiAhIXN0cmVhbS5A
dW5kZXJseWluZ1NvdXJjZTsKK30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbVJlYWRlcihy
ZWFkZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBpc09iamVjdChyZWFk
ZXIpICYmIHR5cGVvZiByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0gIT09ICJ1bmRlZmluZWQi
OworfQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihjb250cm9sbGVyKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3QoY29udHJvbGxlcikg
JiYgISFjb250cm9sbGVyLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07Cit9CisKK2Z1bmN0aW9u
IGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVneSkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU291cmNlID09
PSAidW5kZWZpbmVkIikKKyAgICAgICAgIHVuZGVybHlpbmdTb3VyY2UgPSB7IH07CisgICAgIGlm
ICh0eXBlb2Ygc3RyYXRlZ3kgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgc3RyYXRlZ3kgPSB7
IGhpZ2hXYXRlck1hcms6IDEsIHNpemU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfSB9OworCisg
ICAgaWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NvdXJjZSkpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvYmplY3QgYXMg
Zmlyc3QgYXJndW1lbnQiKTsKKworICAgIGlmIChzdHJhdGVneSAhPT0gdW5kZWZpbmVkICYmICFA
aXNPYmplY3Qoc3RyYXRlZ3kpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIHNlY29uZCBhcmd1bWVudCwg
aWYgYW55Iik7CisKKyAgICB0aGlzLkB1bmRlcmx5aW5nU291cmNlID0gdW5kZXJseWluZ1NvdXJj
ZTsKKworICAgIHRoaXMuQHF1ZXVlID0gW107CisgICAgdGhpcy5AcXVldWVTaXplID0gMDsKKyAg
ICB0aGlzLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlOyAKKyAgICB0aGlzLkBzdGFy
dGVkID0gZmFsc2U7CisgICAgdGhpcy5AY2xvc2VSZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICB0aGlz
LkBwdWxsQWdhaW4gPSBmYWxzZTsKKyAgICB0aGlzLkBwdWxsaW5nID0gZmFsc2U7IAorICAgIHRo
aXMuQHJlYWRlciA9IHVuZGVmaW5lZDsKKyAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHVuZGVmaW5l
ZDsKKyAgICB0aGlzLkBjb250cm9sbGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIo
dGhpcyk7CisgICAgdGhpcy5Ac3RyYXRlZ3lTaXplID0gc3RyYXRlZ3kuc2l6ZTsgCisgICAgdGhp
cy5AaGlnaFdhdGVyTWFyayA9IE51bWJlcihzdHJhdGVneS5oaWdoV2F0ZXJNYXJrKTsKKworICAg
IGlmIChOdW1iZXIuaXNOYU4odGhpcy5AaGlnaFdhdGVyTWFyaykpCisgICAgICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoKTsKKyAgICBpZiAodGhpcy5AaGlnaFdhdGVyTWFyayA8IDApCisgICAgICAg
IHRocm93IG5ldyBSYW5nZUVycm9yKCk7CisKKyAgICB2YXIgcmVzdWx0ID0gQGludm9rZU9yTm9v
cCh1bmRlcmx5aW5nU291cmNlLCAic3RhcnQiLCBbdGhpcy5AY29udHJvbGxlcl0pOworICAgIHZh
ciBfdGhpcyA9IHRoaXM7CisgICAgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgICAgX3RoaXMuQHN0YXJ0ZWQgPSB0cnVlOworICAgICAgICBAcmVxdWVzdFJl
YWRhYmxlU3RyZWFtUHVsbChfdGhpcyk7CisgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAg
ICAgaWYgKF90aGlzLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpCisgICAgICAg
ICAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShfdGhpcywgZXJyb3IpOworICAgIH0pOworCisgICAg
cmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRl
cihzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0
cmVhbShzdHJlYW0pKQorICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCIiKTsKKyAgICBpZiAo
QGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSkKKyAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiIik7CisKKyAgICB0aGlzLkBzdGF0ZSA9IHN0cmVhbS5Ac3RhdGU7CisgICAgdGhpcy5A
cmVhZFJlcXVlc3RzID0gW107CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0
cmVhbVJlYWRhYmxlKSB7CisgICAgICAgIHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBzdHJl
YW07CisgICAgICAgIHRoaXMuQHN0b3JlZEVycm9yID0gdW5kZWZpbmVkOworICAgICAgICBzdHJl
YW0uQHJlYWRlciA9IHRoaXM7CisgICAgICAgIHRoaXMuQGNsb3NlZFByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIHN0cmVhbS5AcmVh
ZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7CisgICAgICAgICAgICBzdHJlYW0u
QHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlamVjdCA9IHJlamVjdDsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRh
YmxlU3RyZWFtQ2xvc2VkKSB7CisgICAgICAgIHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBu
dWxsOworICAgICAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhp
cy5AY2xvc2VkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gdGhp
czsKKyAgICB9CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUVycm9yZWQpOworICAgIHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOwor
ICAgIHRoaXMuQHN0b3JlZEVycm9yID0gc3RyZWFtLkBzdG9yZWRFcnJvcjsKKyAgICB0aGlzLkBj
bG9zZWRQcm9taXNlID0gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7IAorCisg
ICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVh
ZGFibGVTdHJlYW0oc3RyZWFtKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKyAg
ICBpZiAodHlwZW9mIHN0cmVhbS5AY29udHJvbGxlciAhPT0gInVuZGVmaW5lZCIpCisgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisgICAgdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3Ry
ZWFtID0gc3RyZWFtOworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGVycm9yUmVh
ZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJvcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAv
LyBUT0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUp
OworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBzdHJlYW0uQHN0b3JlZEVycm9yID0gZXJy
b3I7CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUVycm9yZWQ7CisKKyAgICBp
ZiAoIXN0cmVhbS5AcmVhZGVyKQorICAgICAgICByZXR1cm47CisgICAgdmFyIHJlYWRlciA9IHN0
cmVhbS5AcmVhZGVyOworCisgICAgLy8gVE9ETzogcmVqZWN0IHJlYWQgcHJvbWlzZXMgYmVmcmUg
Y2xvc2VkIG9uZT8gCisgICAgcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVqZWN0KGVycm9yKTsKKwor
ICAgIHZhciByZXF1ZXN0cyA9IHJlYWRlci5AcmVhZFJlcXVlc3RzOworICAgIGZvciAodmFyIGlu
ZGV4ID0gMCwgbGVuZ3RoID0gcmVxdWVzdHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgKytpbmRl
eCkKKyAgICAgICAgcmVxdWVzdHNbaW5kZXhdLnJlamVjdChlcnJvcik7CisgICAgcmVhZGVyLkBy
ZWFkUmVxdWVzdHMgPSBbXTsKKworICAgIEByZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVh
ZGVyKTsKKyAgICByZWFkZXIuQHN0b3JlZEVycm9yID0gZXJyb3I7CisgICAgcmVhZGVyLkBzdGF0
ZSA9IEByZWFkYWJsZVN0cmVhbUVycm9yZWQ7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RSZWFkYWJs
ZVN0cmVhbVB1bGwoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRPRE86
IE1vdmUgdGhpcyBmdW5jdGlvbiBvdXRzaWRlIHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwuCisg
ICAgZnVuY3Rpb24gc2hvdWxkUmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSkKKyAgICB7CisgICAg
ICAgIGlmIChzdHJlYW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFzdHJlYW0uQHN0YXJ0ZWQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0cmVh
bUxvY2tlZChzdHJlYW0pICYmIHN0cmVhbS5AcmVhZGVyLkByZWFkUmVxdWVzdHMubGVuZ3RoKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChAZ2V0UmVhZGFibGVTdHJlYW1E
ZXNpcmVkU2l6ZShzdHJlYW0pID4gMCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghc2hvdWxkUmVhZGFibGVTdHJlYW1QdWxs
KHN0cmVhbSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdHJlYW0uQHB1bGxpbmcpIHsK
KyAgICAgICAgc3RyZWFtLkBwdWxsQWdhaW4gPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc3RyZWFtLkBwdWxsaW5nID0gdHJ1ZTsKKworICAgIHZhciBwcm9taXNlID0gQHBy
b21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAicHVsbCIsIFtzdHJl
YW0uQGNvbnRyb2xsZXJdKTsKKyAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAg
IHN0cmVhbS5AcHVsbGluZyA9IGZhbHNlOworICAgICAgICBpZiAoc3RyZWFtLkBwdWxsQWdhaW4p
IHsKKyAgICAgICAgICAgIHN0cmVhbS5AcHVsbEFnYWluID0gZmFsc2U7CisgICAgICAgICAgICBA
cmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworICAgICAgICB9CisgICAgfSwgZnVu
Y3Rpb24oZXJyb3IpIHsKKyAgICAgICAgQGVycm9yUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJv
cik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFt
KQoreworICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9
CisKK2Z1bmN0aW9uIGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNpemUoc3RyZWFtKQoreworICAg
InVzZSBzdHJpY3QiOworCisgICByZXR1cm4gc3RyZWFtLkBoaWdoV2F0ZXJNYXJrIC0gc3RyZWFt
LkBxdWV1ZVNpemU7Cit9CisKK2Z1bmN0aW9uIHJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihy
ZWFkZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmVhZGVyLkBvd25lclJlYWRhYmxl
U3RyZWFtLkByZWFkZXIgPSB1bmRlZmluZWQ7CisgICAgcmVhZGVyLkBvd25lclJlYWRhYmxlU3Ry
ZWFtID0gbnVsbDsKK30KKworZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBy
ZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
OworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3Ry
ZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFt
KTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291
cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCitmdW5j
dGlvbiBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIC8vIFRPRE86IEFTU0VSVChzdHJlYW0uQHN0YXRlID09PSAgQHJlYWRhYmxl
U3RyZWFtUmVhZGFibGUpOworICAgIHN0cmVhbS5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1DbG9z
ZWQ7CisgICAgdmFyIHJlYWRlciA9IHN0cmVhbS5AcmVhZGVyOworICAgIGlmIChyZWFkZXIpCisg
ICAgICAgIEBjbG9zZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcik7Cit9CisKK2Z1bmN0aW9u
IGNsb3NlUmVhZGFibGVTdHJlYW0oc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IC8vIFRPRE8uIEFTU0VSVCghc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCk7CisgICAgLy8gVE9ETzog
QVNTRVJUKHN0cmVhbS5Ac3RhdGUgIT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIGlm
IChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVy
bjsgCisgICAgc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCA9IHRydWU7CisgICAgaWYgKCFzdHJlYW0u
QHF1ZXVlLmxlbmd0aCkKKyAgICAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJl
YW0pOworfQorCitmdW5jdGlvbiBjbG9zZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBUT0RPOiBjbG9zZWQgcHJvbWlzZSBzaG91bGQg
cHJvYmFibHkgYmUgcmVzb2x2ZWQgYWZ0ZXIgcmVhZCBvbmVzLgorICAgIHJlYWRlci5AY2xvc2Vk
UHJvbWlzZVJlc29sdmUoKTsKKworICAgIHZhciByZXF1ZXN0cyA9IHJlYWRlci5AcmVhZFJlcXVl
c3RzOworICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcmVxdWVzdHMubGVuZ3RoOyBp
bmRleCA8IGxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgcmVxdWVzdHNbaW5kZXhdLnJlc29sdmUo
e3ZhbHVlOnVuZGVmaW5lZCwgZG9uZTogdHJ1ZX0pOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3Rz
ID0gW107CisgICAgQHJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJl
YWRlci5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1DbG9zZWQ7Cit9CisKK2Z1bmN0aW9uIGVucXVl
dWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1bmspCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgLy8gVE9ETzogQVNTRVJUKCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKTsKKyAgICAvLyBU
T0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7Cisg
ICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFt
KSAmJiBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLmxlbmd0aCkgeworICAgICAgICBzdHJl
YW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6IGNodW5rLCBk
b25lOiBmYWxzZX0pOworICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhciBzaXplID0g
MTsKKyAgICAgICAgaWYgKHN0cmVhbS5Ac3RyYXRlZ3lTaXplKSB7CisgICAgICAgICAgICBzaXpl
ID0gTnVtYmVyKHN0cmVhbS5Ac3RyYXRlZ3lTaXplKGNodW5rKSk7CisgICAgICAgICAgICBpZiAo
TnVtYmVyLmlzTmFOKHNpemUpIHx8IHNpemUgPT09ICtJbmZpbml0eSB8fCBzaXplIDwgMCkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQ2h1bmsgc2l6ZSBpcyBub3QgdmFs
aWQnKTsKKyAgICAgICAgfQorICAgICAgICBzdHJlYW0uQHF1ZXVlLnB1c2goeyB2YWx1ZTogY2h1
bmssIHNpemU6IHNpemUgfSk7CisgICAgICAgIHN0cmVhbS5AcXVldWVTaXplICs9IHNpemU7Cisg
ICAgfQorICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKHN0
cmVhbSwgZXJyb3IpOworICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgICAgQHJlcXVlc3RS
ZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKK30KKworZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJs
ZVN0cmVhbVJlYWRlcihyZWFkZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHJl
YWRlci5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSh7dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZX0pOworICAgIGlmIChy
ZWFkZXIuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QocmVhZGVyLkBzdG9yZWRFcnJvcik7CisgICAgLy8gVE9ETzogQVNTRVJU
KCEhcmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQocmVh
ZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFi
bGUpOworICAgIHZhciBzdHJlYW0gPSByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW07CisgICAg
aWYgKHN0cmVhbS5AcXVldWUubGVuZ3RoKSB7CisgICAgICAgIHZhciBjaHVuayA9IHN0cmVhbS5A
cXVldWUuc2hpZnQoKTsKKyAgICAgICAgc3RyZWFtLkBxdWV1ZVNpemUgLT0gY2h1bmsuc2l6ZTsK
KyAgICAgICAgaWYgKCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICAgICAgQHJlcXVl
c3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmVhbS5A
cXVldWUubGVuZ3RoKQorICAgICAgICAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShz
dHJlYW0pOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTogY2h1bmsudmFs
dWUsIGRvbmU6IGZhbHNlfSk7CisgICAgfQorICAgIHZhciByZWFkUmVxdWVzdCA9IHt9OworICAg
IHZhciByZWFkUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
eworICAgICAgICByZWFkUmVxdWVzdC5yZXNvbHZlID0gcmVzb2x2ZTsKKyAgICAgICAgcmVhZFJl
cXVlc3QucmVqZWN0ID0gcmVqZWN0OworICAgIH0pOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3Rz
LnB1c2gocmVhZFJlcXVlc3QpOworICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVh
bSk7CisgICAgcmV0dXJuIHJlYWRQcm9taXNlOworfQorCitmdW5jdGlvbiBpbnZva2VPck5vb3Ao
b2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIG1ldGhv
ZCA9IG9iamVjdFtrZXldOworICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikK
KyAgICAgICAgcmV0dXJuOworICAgIHJldHVybiBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7
Cit9CisKK2Z1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9i
amVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQg
PSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjkwYzEzN2E4MGFiNWNiZDRiYjkyMTUyMTdkODAyMGRkY2FhYTBkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IENhbm9uIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVE9ETzogQWRkIGV4Y2VwdGlvbiBtZXNzYWdlcy4KKworZnVuY3Rpb24gY2FuY2VsKHJlYXNv
bikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHRo
aXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoKSk7CisK
KyAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQodGhpcykpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigpKTsKKworICAgIHJldHVybiBAY2FuY2VsUmVh
ZGFibGVTdHJlYW0odGhpcywgcmVhc29uKTsKK30KKworZnVuY3Rpb24gZ2V0UmVhZGVyKCkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHRoaXMpKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworIAorICAgIGlmIChAaXNSZWFkYWJsZVN0
cmVhbUxvY2tlZCh0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAg
IHJldHVybiBuZXcgQFJlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpOworfQorCitmdW5jdGlvbiBw
aXBlVGhyb3VnaChzdHJlYW1zLCBvcHRpb25zKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHRoaXMucGlwZVRvKHN0cmVhbXMud3JpdGFibGUsIG9wdGlvbnMpOworCisgICAgcmV0dXJuIHN0
cmVhbXMucmVhZGFibGU7Cit9CisKK2Z1bmN0aW9uIHBpcGVUbyhkZXN0KQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigicGlwZVRv
IGlzIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCitmdW5jdGlvbiB0ZWUoKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICByZXR1cm4gbmV3IEBUeXBlRXJyb3IoInRlZSBp
cyBub3QgaW1wbGVtZW50ZWQiKTsKK30KKworZnVuY3Rpb24gbG9ja2VkKCkKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHRoaXMpKQorICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgcmV0dXJuIEBpc1JlYWRhYmxlU3RyZWFtTG9j
a2VkKHRoaXMpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNjdlMTMzZmE4NjE0NDE4MzcxZmRhNjY3MGUwZjM5ZTYyNjAxZWNiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8vIFRPRE86IEFkZCBleGNlcHRpb24gbWVzc2FnZXMuCisKK2Z1bmN0aW9uIGVu
cXVldWUoY2h1bmspCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7
CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworICAg
IGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICB0
aHJvdyBzdHJlYW0uQHN0b3JlZEVycm9yOworCisgICAgaWYgKHN0cmVhbS5AY2xvc2VSZXF1ZXN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICByZXR1cm4gQGVucXVl
dWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1bmspCit9CisKK2Z1bmN0aW9uIGVycm9yKGVy
cm9yKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAg
dmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3Ry
ZWFtLkBzdGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCk7CisKKyAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9y
KTsKK30KKworZnVuY3Rpb24gY2xvc2UoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigpOworCisgICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJs
ZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoKTsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVT
dHJlYW1FcnJvcmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgQGNs
b3NlUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKK30KKworZnVuY3Rpb24gZGVzaXJlZFNpemUoKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgcmV0dXJu
IEBnZXRSZWFkYWJsZVN0cmVhbURlc2lyZWRTaXplKHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0
cmVhbSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2Yx
YWI5Y2EzZDIxYzJjYTNkMzUwOTIzYjQyOWZhZTQ3ZDhjMmY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3Rv
dHlwZS5qcwpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVE9E
TzogQWRkIGV4Y2VwdGlvbiBtZXNzYWdlcy4KKworZnVuY3Rpb24gY2FuY2VsKHJlYXNvbikKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRo
aXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoKSk7CisK
KyAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCisgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5A
c3RvcmVkRXJyb3IpOworCisgICAgLy8gVE9ETyBBU1NFUlQoQGlzUmVhZGFibGVTdHJlYW0odGhp
cy5Ab3duZXJSZWFkYWJsZVN0cmVhbSkpOworICAgIC8vIFRPRE8gQVNTRVJUKHRoaXMuQG93bmVy
UmVhZGFibGVTdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSk7CisgICAg
cmV0dXJuIEBjYW5jZWxSZWFkYWJsZVN0cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtLCBy
ZWFzb24pOworfQorCitmdW5jdGlvbiByZWFkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoKSk7CisKKyAgICByZXR1cm4gQHJlYWRGcm9tUmVh
ZGFibGVTdHJlYW1SZWFkZXIodGhpcyk7Cit9CisKK2Z1bmN0aW9uIHJlbGVhc2VMb2NrKCkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRo
aXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgaWYgKCF0aGlzLkBv
d25lclJlYWRhYmxlU3RyZWFtKQorICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRoaXMuQHJl
YWRSZXF1ZXN0cy5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAg
ICBAY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKK30KKworZnVuY3Rpb24gY2xvc2Vk
KCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVh
ZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3Io
IkNhbGxlZSBvZiBjbG9zZWQgaXMgbm90IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisKKyAg
ICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlzZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDY0NTFmZjM0NDkwZmJiNjZi
ZDJhZjIxZGI3NjBmYTVlN2QyYjViMTQuLjc2NzNhYzFiYzYxMzhhNmYzZmM3MjEyNmM1Zjk2YWI5
ZGQwYjkzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtNTEsNiArNTEsNyBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAg
IG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSYW5nZUVycm9yKSBcCisgICAgbWFjcm8oUmVh
ZGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhSZWZlcmVuY2VFcnJvcikgXAogICAgIG1hY3JvKFJl
ZmxlY3QpIFwKICAgICBtYWNybyhSZWdFeHApIFwKQEAgLTMwMSw3ICszMDIsMzAgQEAKICAgICBt
YWNybyhwcm9taXNlUmVqZWN0UmVhY3Rpb25zKSBcCiAgICAgbWFjcm8ocHJvbWlzZVJlc3VsdCkg
XAogICAgIG1hY3JvKGNhcGFiaWxpdGllcykgXAotCisgICAgbWFjcm8oc3RhdGUpIFwKKyAgICBt
YWNybyh1bmRlcmx5aW5nU291cmNlKSBcCisgICAgbWFjcm8ocXVldWUpIFwKKyAgICBtYWNybyhx
dWV1ZVNpemUpIFwKKyAgICBtYWNybyhzdGFydGVkKSBcCisgICAgbWFjcm8oY2xvc2VSZXF1ZXN0
ZWQpIFwKKyAgICBtYWNybyhwdWxsQWdhaW4pIFwKKyAgICBtYWNybyhwdWxsaW5nKSBcCisgICAg
bWFjcm8ocmVhZGVyKSBcCisgICAgbWFjcm8oc3RvcmVkRXJyb3IpIFwKKyAgICBtYWNybyhjb250
cm9sbGVyKSBcCisgICAgbWFjcm8oc3RyYXRlZ3lTaXplKSBcCisgICAgbWFjcm8oaGlnaFdhdGVy
TWFyaykgXAorICAgIG1hY3JvKHJlYWRSZXF1ZXN0cykgXAorICAgIG1hY3JvKG93bmVyUmVhZGFi
bGVTdHJlYW0pIFwKKyAgICBtYWNybyhjbG9zZWRQcm9taXNlKSBcCisgICAgbWFjcm8oY2xvc2Vk
UHJvbWlzZVJlc29sdmUpIFwKKyAgICBtYWNybyhjbG9zZWRQcm9taXNlUmVqZWN0KSBcCisgICAg
bWFjcm8oY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8ocmVhZGFibGVTdHJl
YW1DbG9zZWQpIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0cmVhbVJlYWRhYmxlKSBcCisgICAgbWFj
cm8ocmVhZGFibGVTdHJlYW1FcnJvcmVkKSBcCisgICAgbWFjcm8oUmVhZGFibGVTdHJlYW1SZWFk
ZXIpIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpIFwKIAogbmFtZXNwYWNl
IEpTQyB7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQy
My4uMDA4MjJmOTc5MmRjZWRkYmQ4MWZmNDkyYjY4YTk1ZDM2ZTgwOThhMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTQ5LDYg
KzE0OSwxMiBAQAogI2luY2x1ZGUgIkpTUmVwbGF5SW5wdXRzLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCisjaW5jbHVk
ZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmx1dC5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI3OCw3ICsyODQsMTYgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKHZtLCB0aGlzLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jUHJvdG9T
ZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29yLCBB
Y2Nlc3NvciB8IERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24odm0sIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKTsKLSAgICAKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBtX2luaXRpYWxpemVS
ZWFkYWJsZVN0cmVhbUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAgbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1S
ZWFkZXJGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgcmVhZGFibGVTdHJlYW1Jbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJDb2Rl
R2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1
bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fcmVhZGFibGVTdHJlYW1Qcm90b3R5
cGVMb2NrZWRHZXR0ZXIuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2VkQ29kZUdlbmVyYXRvcih2bSks
IHRoaXMpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlQ2xvc2VkR2V0dGVy
LnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFk
YWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUNsb3NlZENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVEZXNpcmVkU2l6ZUdldHRl
ci5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVDb2RlR2VuZXJhdG9yKHZt
KSwgdGhpcykpOworI2VuZGlmCisKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDgp
XS5wcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU0ludDhBcnJheVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBKU0ludDhBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlw
ZUludDE2KV0ucHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNJbnQxNkFycmF5UHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIEpTSW50MTZBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3R5cGVkQXJyYXlzW3Rv
SW5kZXgoVHlwZUludDMyKV0ucHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNJbnQzMkFycmF5UHJv
dG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTSW50MzJBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKQEAgLTMzOSw2ICsz
NTQsMTUgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9wcm9taXNl
UHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGUoZXhlYywg
dGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fcHJvbWlzZVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTUHJvbWlzZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5
cGUuZ2V0KCkpKTsKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBtX3JlYWRhYmxlU3Ry
ZWFtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9yZWFkYWJsZVN0
cmVhbVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUmVhZGFibGVTdHJlYW06OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZS5nZXQoKSkpOworICAgIG1f
cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9yZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7
CiAjZW5kaWYKQEAgLTM5NywxMyArNDIxLDI0IEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAg
ICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9y
UHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9V
UklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5
cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOwogICAgIG1fcHJvbWlzZUNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
SlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSkpOwotICAgIAorCisj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIG1fcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1Jl
YWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVhZGFibGVTdHJlYW1Qcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNSZWFkYWJsZVN0cmVh
bVJlYWRlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLmdldCgpKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQ
cm90b3R5cGUuZ2V0KCkpKTsKKyNlbmRpZgorCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2FycmF5UHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX3JlZ0V4cFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgbV9wcm9t
aXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
Ci0gICAgCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgbV9yZWFkYWJsZVN0cmVhbVBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBtX3JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIG1fcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyNlbmRpZgogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkFycmF5
LCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00MTUsOCArNDUwLDcgQEAgbV8gIyMg
bG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmMKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+VHlwZUVycm9yLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UHJv
bWlzZSwgbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICAKLSAgICAK
KwogI2RlZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yLCBEb250RW51bSk7IFwKIApAQCAtNTA2LDYgKzU0MCwzMCBAQCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93
ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJv
bWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlYWN0aW9uSm9iUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRp
b25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJs
ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwg
b3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2
bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisKKyNpZiBFTkFC
TEUoU1RSRUFNU19BUEkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5yZWFkYWJsZVN0cmVhbVJlYWRhYmxlUHJpdmF0ZU5hbWUsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU1JlYWRhYmxlU3RyZWFtOjpTdGF0ZTo6UmVhZGFibGUpKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+cmVhZGFibGVTdHJlYW1DbG9zZWRQcml2YXRlTmFtZSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUmVhZGFibGVTdHJlYW06OlN0YXRlOjpDbG9zZWQp
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVhZGFibGVTdHJlYW1FcnJvcmVkUHJpdmF0ZU5h
bWUsIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1JlYWRhYmxlU3RyZWFtOjpTdGF0
ZTo6RXJyb3JlZCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1Jl
YWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0
aW9uKHZtLCByZWFkYWJsZVN0cmVhbUlzUmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9yKHZtKSwg
dGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzUmVhZGFibGVT
dHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rp
b24odm0sIHJlYWRhYmxlU3RyZWFtSXNSZWFkYWJsZVN0cmVhbVJlYWRlckNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtSXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmlzUmVhZGFibGVTdHJlYW1Mb2NrZWRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtSXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbFByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1SZXF1ZXN0UmVh
ZGFibGVTdHJlYW1QdWxsQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lcnJvclJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUVycm9y
UmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludm9rZU9yTm9vcFByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1JbnZva2VPck5vb3BD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnByb21pc2VJbnZva2VPck5vb3BQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtUHJvbWlzZUludm9rZU9yTm9vcENv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1HZXRSZWFkYWJsZVN0
cmVhbURlc2lyZWRTaXplQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYW5jZWxSZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0
cmVhbUZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2xvc2VSZWFkYWJsZVN0cmVh
bVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVh
ZGFibGVTdHJlYW1DbG9zZVJlYWRhYmxlU3RyZWFtQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jbG9zZVJlYWRhYmxlU3RyZWFt
UmVhZGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCByZWFkYWJsZVN0cmVhbUNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXJDb2RlR2VuZXJhdG9yKHZt
KSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlbGVhc2VS
ZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1SZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXJD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtUmVhZEZyb21SZWFk
YWJsZVN0cmVhbVJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUluUmVhZGFibGVTdHJlYW1Qcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFt
RW5xdWV1ZUluUmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0
ZU5hbWUoKSwgbV9yZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQ
cml2YXRlTmFtZSgpLCBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisjZW5kaWYKICAgICB9OwogICAg
IGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNH
bG9iYWxzKSk7CiAgICAgCkBAIC03NTAsNiArODA4LDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAorI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWFk
YWJsZVN0cmVhbUNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9yZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik7CisjZW5k
aWYKKwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlv
bik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVsbFNldHRlckZ1bmN0aW9u
KTsKIApAQCAtNzYzLDYgKzgyNywxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb24pOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKTsKIAor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVuY3Rpb24pOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaXRpYWxpemVSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0ZXIpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlQ2xvc2VkR2V0dGVy
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGVEZXNpcmVkU2l6ZUdldHRlcik7CisjZW5kaWYKKwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKQEAgLTc3MCw2ICs4NDMsMTIgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJv
dG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlUHJvdG90
eXBlKTsKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlw
ZSk7CisjZW5kaWYKKwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhT
Y29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0
RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtODAzLDYgKzg4MiwxMSBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1
cmUpOworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9yZWFkYWJsZVN0cmVhbVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1SZWFkZXJTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclN0cnVjdHVyZSk7
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fd2FzbU1vZHVsZVN0cnVjdHVyZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDk5ODZiY2Y2MjQ1ZTJj
YzQ2ODIwYjEzMTAyYjIzNDI5MDBlYzNkN2IuLjFiYjk0MDQ0OTJkZTg2NmI5Y2VmNTQ5MmE0ZjQz
ZWUxZTFjZmNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtNzIsNiArNzIsMTQgQEAgY2xhc3MgSW5wdXRDdXJzb3I7CiBjbGFzcyBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvcjsKIGNs
YXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCitjbGFzcyBK
U1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I7CitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtUHJvdG90
eXBlOworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOworY2xhc3MgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZTsKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyQ29uc3RydWN0b3I7CitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZTsKKyNlbmRpZgogY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIE1pY3JvdGFzazsKQEAgLTE4NSw3ICsxOTMsMTEgQEAgcHJvdGVjdGVkOgogICAg
IFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0
b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25z
dHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29u
c3RydWN0b3I7Ci0KKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgV3JpdGVCYXJyaWVyPEpT
UmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcj4gbV9yZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOwor
ICAgIFdyaXRlQmFycmllcjxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I+IG1fcmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcj4gbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3RvcjsKKyNlbmRpZgogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVyRnVuY3Rpb24+
IG1fbnVsbEdldHRlckZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxOdWxsU2V0dGVyRnVuY3Rp
b24+IG1fbnVsbFNldHRlckZ1bmN0aW9uOwogCkBAIC0yMDAsMTMgKzIxMiwyNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZURlZmVycmVkRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdl
dHRlclNldHRlcjsKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbjsKKyAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5j
dGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
cmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0ZXI7CisgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXI7Cisg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJv
dG90eXBlRGVzaXJlZFNpemVHZXR0ZXI7CisjZW5kaWYKKwogICAgIFdyaXRlQmFycmllcjxPYmpl
Y3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlv
blByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQ
cm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3Rv
dHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90
eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQcm90
b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKLQorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAg
ICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZT4gbV9yZWFkYWJsZVN0cmVh
bVByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3Rv
dHlwZT4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU+IG1fcmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlOworI2VuZGlmCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9k
ZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0
aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmU7CkBAIC0yNDIsNiArMjY3LDExIEBAIHByb3RlY3RlZDoKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVN0cnVjdHVyZTsKKyNpZiBFTkFC
TEUoU1RSRUFNU19BUEkpCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWFkYWJsZVN0
cmVhbVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlYWRhYmxlU3Ry
ZWFtUmVhZGVyU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsK
ICNlbmRpZgpAQCAtMzg4LDYgKzQxOCwxMSBAQCBwdWJsaWM6CiAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fVVJJRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBwcm9taXNlQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
CisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rv
ciogcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZGFibGVT
dHJlYW1Db25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25z
dHJ1Y3RvciogcmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IqIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25z
dHJ1Y3Rvci5nZXQoKTsgfQorI2VuZGlmCiAgICAgTnVsbEdldHRlckZ1bmN0aW9uKiBudWxsR2V0
dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxHZXR0ZXJGdW5jdGlvbi5nZXQoKTsg
fQogICAgIE51bGxTZXR0ZXJGdW5jdGlvbiogbnVsbFNldHRlckZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9udWxsU2V0dGVyRnVuY3Rpb24uZ2V0KCk7IH0KIApAQCAtNDA3LDYgKzQ0MiwxNSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmdl
dCgpOwogICAgIH0KIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBKU0Z1bmN0aW9uKiBp
bml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlh
bGl6ZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBpbml0
aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0
aW9uKiBpbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbi5nZXQo
KTsgfQorICAgIEpTRnVuY3Rpb24qIHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2VkR2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZUxvY2tlZEdldHRlci5n
ZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlQ2xv
c2VkR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZUNsb3NlZEdldHRlci5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlclByb3RvdHlwZURlc2lyZWRTaXplR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVEZXNpcmVkU2l6ZUdldHRlci5nZXQoKTsgfQor
I2VuZGlmCisKICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOyB9CiAgICAgRnVuY3Rpb25Qcm90b3R5cGUq
IGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0KQEAgLTQ3Niw2ICs1MjAsMTEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRT
dHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlz
ZVN0cnVjdHVyZS5nZXQoKTsgfQorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBTdHJ1Y3R1
cmUqIHJlYWRhYmxlU3RyZWFtU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0
cmVhbVN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogcmVhZGFibGVTdHJlYW1SZWFk
ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0
dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclN0cnVjdHVy
ZS5nZXQoKTsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVy
ZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVj
dHVyZS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMTBiMDMwMzNkMTZjYWE4ZmI5
NGZmYzM0ODJmYzMzNzgyZjI2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDE4OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFt
LmgiCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkpTUmVhZGFi
bGVTdHJlYW0ubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKTsKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1JlYWRhYmxlU3RyZWFtUHJvdG90
eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVTdHJlYW06OnNfaW5mbyA9IHsgIlJl
YWRhYmxlU3RyZWFtIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Jl
YWRhYmxlU3RyZWFtKSB9OworCitKU1JlYWRhYmxlU3RyZWFtKiBKU1JlYWRhYmxlU3RyZWFtOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTUmVh
ZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSZWFkYWJsZVN0cmVhbT4odm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW0odm0sIGdsb2JhbE9i
amVjdC0+cmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUoKSk7CisgICAgcmVhZGFibGVTdHJlYW0tPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW07Cit9CisKK1N0cnVj
dHVyZSogSlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1JlYWRhYmxlU3RyZWFt
OjpKU1JlYWRhYmxlU3RyZWFtKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNSZWFkYWJsZVN0
cmVhbTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKK30KKworYXV0byBKU1JlYWRhYmxlU3RyZWFtOjpzdGF0dXMoVk0mIHZtKSBjb25zdCAt
PiBTdGF0ZQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnN0YXRlUHJpdmF0ZU5hbWUpOworICAgIEFTU0VSVCh2YWx1ZS5pc1VJbnQzMigpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdGU+KHZhbHVlLmFzVUludDMyKCkpOworfQorCitj
b25zdCBDbGFzc0luZm8gSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6c19pbmZvID0geyAiUmVh
ZGFibGVTdHJlYW1Qcm90b3R5cGUiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmcmVhZGFi
bGVTdHJlYW1Qcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1JlYWRhYmxlU3Ry
ZWFtUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEpTUmVhZGFibGVTdHJlYW0ubHV0LmgK
K0BiZWdpbiByZWFkYWJsZVN0cmVhbVByb3RvdHlwZVRhYmxlCisgIGNhbmNlbCAgICAgICBKU1Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY0NhbmNlbCAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIGdldFJlYWRlciAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY0dldFJlYWRlciAg
ICBEb250RW51bXxGdW5jdGlvbiAwCisgIHBpcGVUaHJvdWdoICBKU1JlYWRhYmxlU3RyZWFtUHJv
dG90eXBlRnVuY1BpcGVUaHJvdWdoICBEb250RW51bXxGdW5jdGlvbiAyCisgIHBpcGVUbyAgICAg
ICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1BpcGVUbyAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHRlZSAgICAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1RlZSAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisKKyAgbG9ja2VkICAgICAgIGpzUmVhZGFibGVT
dHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQgICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisq
LworCitKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKiBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBl
OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNSZWFkYWJsZVN0cmVh
bVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJs
ZVN0cmVhbVByb3RvdHlwZT4odm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUoZXhl
Yywgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUp
OworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSlNSZWFkYWJsZVN0cmVhbVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpKU1Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKK3sKK30K
Kwordm9pZCBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29s
IEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2Jq
ZWN0PihleGVjLCByZWFkYWJsZVN0cmVhbVByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNSZWFkYWJs
ZVN0cmVhbVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IpIH07CisKK0pTUmVhZGFibGVTdHJlYW1Db25z
dHJ1Y3RvciogSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSogcmVhZGFibGVTdHJl
YW1Qcm90b3R5cGUpCit7CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJl
KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHJlYWRhYmxlU3RyZWFtUHJv
dG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNSZWFk
YWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTUmVhZGFibGVTdHJlYW1D
b25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9
CisKK3ZvaWQgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3Ry
ZWFtIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0UmVhZGFibGVTdHJlYW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTUmVhZGFibGVTdHJlYW0qIHJlYWRhYmxl
U3RyZWFtID0gSlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOworCisg
ICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtID0gZ2xvYmFsT2JqZWN0LT5p
bml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbigpOworICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7
CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFw
cGVuZChleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT5hcmd1
bWVudCgxKSk7CisgICAgY2FsbChleGVjLCBpbml0aWFsaXplUmVhZGFibGVTdHJlYW0sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgcmVhZGFibGVTdHJlYW0sIGFyZ3VtZW50cyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlYWRhYmxlU3RyZWFtKTsKK30KKworQ29uc3RydWN0VHlwZSBKU1Jl
YWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
SG9zdDsKK30KKworQ2FsbFR5cGUgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0UmVhZGFibGVTdHJlYW07CisgICAgcmV0dXJuIENhbGxUeXBl
SG9zdDsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZGFibGVT
dHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAg
IEpTRnVuY3Rpb24qIGdldHRlciA9IHN0YXRlLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnJl
YWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2VkR2V0dGVyKCk7CisgICAgQ2FsbERhdGEgY2FsbERh
dGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRh
KTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoc3RhdGUs
IGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGFyZ3VtZW50
cyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEz
ZGJjMGRlMTEwOGI1M2YzMzgwMzBmMTY0YTUzZWM3MjRiZWNlNDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmgKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUmVhZGFibGVTdHJlYW1faAorI2Rl
ZmluZSBKU1JlYWRhYmxlU3RyZWFtX2gKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKwor
ICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFtKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgZW51bSBj
bGFzcyBTdGF0ZSA6IHVuc2lnbmVkIHsKKyAgICAgICAgUmVhZGFibGUgPSAxLAorICAgICAgICBD
bG9zZWQsCisgICAgICAgIEVycm9yZWQKKyAgICB9OworCisgICAgU3RhdGUgc3RhdHVzKFZNJikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbShWTSYsIFN0cnVjdHVyZSop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK2NsYXNzIEpTUmVhZGFibGVT
dHJlYW1Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSogY3Jl
YXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFt
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Cit9OworCitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKik7
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKik7CisKK3By
aXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7Cit9OworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFk
YWJsZVN0cmVhbVByb3RvdHlwZUdldHRlckxvY2tlZChKU0M6OkV4ZWNTdGF0ZSopOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2VuZGlm
IC8vIEpTUmVhZGFibGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiNGM5YTcyMDBmMzAwNjA3ZDJhNGRmMjE2ODIyZGJhZjYwY2FhNDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5jcHAKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik7CitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJQcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXI6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIp
IH07CisKK0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KHZt
LmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih2bSwgZ2xvYmFsT2JqZWN0LT5yZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1cmUoKSk7CisgICAgcmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcjsKK30KKworU3RydWN0dXJlKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6SlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUi
LCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJv
dG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIubHV0LmgKK0BiZWdpbiByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVUYWJsZQor
ICBjbG9zZSAgICAgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jQ2xv
c2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgZW5xdWV1ZSAgICAgIEpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0VucXVldWUgICAgICBEb250RW51bXxGdW5jdGlv
biAwCisgIGVycm9yICAgICAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZUZ1
bmNFcnJvciAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBkZXNpcmVkU2l6ZSAganNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRGVzaXJlZFNpemUgIERvbnRFbnVtfEFj
Y2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSog
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0
cnVjdHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlclByb3RvdHlwZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5
cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmlu
YWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVy
ZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlVGFibGUsIGpzQ2Fz
dDxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDb25zdHJ1Y3RvcikgfTsKKworSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rv
ciogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBl
KiByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpCit7CisgICAgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yPih2bS5oZWFw
KSkgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
KyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUq
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclBy
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVhZGFibGVTdHJlYW1Db250cm9s
bGVyUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250
cm9sbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciogcmVhZGFibGVTdHJlYW1D
b250cm9sbGVyID0gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KTsKKworICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIgPSBnbG9iYWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJG
dW5jdGlvbigpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciwgY2FsbERh
dGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIGNhbGwoZXhlYywgaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsIGFyZ3Vt
ZW50cyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsK
K30KKworQ2FsbFR5cGUgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjsKKyAgICBy
ZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRGVzaXJlZFNpemUoSlND
OjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTRnVuY3Rpb24qIGdldHRlciA9IHN0YXRlLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlw
ZURlc2lyZWRTaXplR2V0dGVyKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoc3RhdGUsIGdldHRlciwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGFyZ3VtZW50cyk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWM4NzVkZjUyYzhkOGE4MzQ3MmI1YTAyYmNmOThmMjAwN2FjYzIzMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJfaAorI2RlZmluZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcl9o
CisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCitwcml2YXRlOgorICAg
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0
aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKik7CisKK3By
aXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0Rlc2lyZWRTaXplKEpT
Qzo6RXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KFNUUkVBTVNfQVBJKQorCisjZW5kaWYgLy8gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzVjYWVmZDFhMWZhZGNiOGNkYjA5Y2VmYzE0YTk0
Yzc0NmJlMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oIgorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VS
VF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1
Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlclByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRlcikgfTsKKwor
SlNSZWFkYWJsZVN0cmVhbVJlYWRlciogSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyKiByZWFkYWJsZVN0cmVhbVJlYWRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyKHZtLCBnbG9iYWxPYmplY3QtPnJlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0dXJlKCkpOwor
ICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IHJlYWRhYmxlU3RyZWFtUmVhZGVyOworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6SlNSZWFkYWJs
ZVN0cmVhbVJlYWRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25G
aW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSIsICZKU05vbkZp
bmFsT2JqZWN0OjpzX2luZm8sICZyZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZVRhYmxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpIH07CisK
Ky8qIFNvdXJjZSBmb3IgSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5sdXQuaAorQGJlZ2luIHJlYWRh
YmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlVGFibGUKKyAgY2FuY2VsICAgICAgIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGVGdW5jQ2FuY2VsICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIHJlYWQgICAgICAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY1JlYWQg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICByZWxlYXNlTG9jayAgSlNSZWFkYWJsZVN0
cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNSZWxlYXNlTG9jayAgIERvbnRFbnVtfEZ1bmN0aW9uIDAK
KyAgY2xvc2VkICAgICAgIGpzUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVGdW5jQ2xvc2Vk
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorQGVuZAorKi8KKworSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByb3RvdHlwZSogSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZTo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90
b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90
eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3Ry
dWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByb3RvdHlwZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdChleGVj
LT52bSgpLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNSZWFkYWJsZVN0cmVhbVJlYWRlclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgcmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGVUYWJsZSwganNDYXN0PEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQ
cm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitjb25zdCBDbGFz
c0luZm8gSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKSB9OworCitKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ29uc3RydWN0b3IqIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQ
cm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKQoreworICAgIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCByZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ29uc3RydWN0b3I6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKiBy
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWFk
YWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFJlYWRh
YmxlU3RyZWFtUmVhZGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkYWJsZVN0
cmVhbVJlYWRlciA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsKKworICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlciA9
IGdsb2JhbE9iamVjdC0+aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVuY3Rpb24oKTsK
KyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlciwgY2FsbERhdGEpOworICAgIEFTU0VS
VChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoMCkpOworICAg
IGNhbGwoZXhlYywgaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHJlYWRhYmxlU3RyZWFtUmVhZGVyLCBhcmd1bWVudHMpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZWFkYWJsZVN0cmVhbVJlYWRlcik7Cit9CisKK0NvbnN0cnVjdFR5cGUg
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcjsKKyAgICByZXR1
cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQor
eworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFJlYWRhYmxlU3RyZWFt
UmVhZGVyOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3Nl
ZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiogZ2V0dGVyID0gc3Rh
dGUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5
cGVDbG9zZWRHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk0MDBhOWM4
OWE3NDliMjFhNWE5MWU1ZTUwOTM4MWE3YjU0ODhkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyX2gK
KyNkZWZpbmUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcl9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworY2xhc3MgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgor
ICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAg
IHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUqKTsKKworcHJpdmF0ZToK
KyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKK307CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRh
YmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3NlZChKU0M6OkV4ZWNTdGF0ZSopOworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2Vu
ZGlmIC8vIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJfaCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NTc3MzA4NzI2NzllMzRhNDFjMjk3MDEyNjNmYzUzZGUwODFmNGQ2OS4uYzY5ODBiYmFkYjc3ZWYy
NDgwNjUyNGE4ODViOWQ0ODYzOTcwNjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4LDcg
KzE4LDYgQEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVf
RElSfS9Nb2R1bGVzL3Byb3hpbWl0eSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9xdW90
YSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zcGVlY2giCi0gICAgIiR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvc3RyZWFtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJyYXRp
b24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViYXVkaW8iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCkBAIC0xNjIsNyArMTYxLDYgQEAgc2V0KFdlYkNv
cmVfSURMX0lOQ0xVREVTCiAgICAgTW9kdWxlcy9wcm94aW1pdHkKICAgICBNb2R1bGVzL3F1b3Rh
CiAgICAgTW9kdWxlcy9zcGVlY2gKLSAgICBNb2R1bGVzL3N0cmVhbXMKICAgICBNb2R1bGVzL3Zp
YnJhdGlvbgogICAgIE1vZHVsZXMvd2ViYXVkaW8KICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlCkBA
IC0yODksMTAgKzI4Nyw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmlkbAogICAgIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbAogCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmlkbAotICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaWRsCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbAotCiAg
ICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbAogCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCkBAIC05NDgsOSArOTQyLDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAKICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKIAotICAgIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKLSAgICBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuY3BwCi0KICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JW
aWJyYXRpb24uY3BwCiAgICAgTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcAogCkBAIC0x
MTgxLDkgKzExNzIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNS
VENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1Nlc3Npb25E
ZXNjcmlwdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VD
dXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0
b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKLSAgICBi
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCkBAIC0xMjE0LDcgKzEyMDIsNiBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFt
LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9q
cy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA0YmYxMTk0MzIzZWZlZjdl
MWUyMTNjZWI3MmVmNjk1ZmRjZTIwYzhlLi40Y2EwMjgxZGNiNWU3YTkxNTZhOWQ4NzgyYTFhNTdk
ZWM4MGJkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zMDMsMTEgKzMwMyw2
IEBACiAjaW5jbHVkZSAiSlNSYWRpb05vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU1JhbmdlLmNw
cCIKICNpbmNsdWRlICJKU1JhbmdlRXhjZXB0aW9uLmNwcCIKLSNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5jcHAiCi0jaW5jbHVkZSAiSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuY3BwIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1SZWFkZXIu
Y3BwIgotI2VuZGlmCiAjaW5jbHVkZSAiSlNSZWN0LmNwcCIKICNpbmNsdWRlICJKU1JlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU1JHQkNvbG9yLmNwcCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDAwZTc4ODA4Nzc4MTZkZjQ3YmEzM2M4OTQy
ODlmNjJiMWRjNzZlYTQuLjFiNDZlYTcxODU1NjViNTg1ZmI1YzgwYmEwY2IzM2FiMmNmODA1YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTc0LDkgKzE3NCw2IEBAIE5PTl9T
VkdfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFlOWUyZjQ5N2MyOGMzZmJmNTUyNmJmYWE3MmMwMWRmMGEyMzQ1YzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNSZWFk
YWJsZVN0cmVhbV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTUmVhZGFibGVTdHJlYW1faAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmVhZGFibGVTdHJlYW0uaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YWY1YTFiMDBiZTFhMTgyMzBiMTZhODUyYmMzODc4
OTgwNGE3ZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDI4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0g
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLQotI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJSZWFkYWJs
ZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1ERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3Vu
dGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291bnRlciwgKCJSZWFkYWJsZVN0cmVhbSIp
KTsKLQotUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCBEaWN0aW9uYXJ5JiBz
dHJhdGVneSkKLXsKLSAgICByZXR1cm4gUmVmUHRyPFJlYWRhYmxlU3RyZWFtPihSZWFkYWJsZUpT
U3RyZWFtOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCBzdHJhdGVneSkpOwotfQotCi1SZWFkYWJsZVN0
cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVhZGFibGVTdHJlYW1Db3VudGVyLmluY3JlbWVu
dCgpOwotI2VuZGlmCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci19Ci0KLVJlYWRhYmxlU3RyZWFt
Ojp+UmVhZGFibGVTdHJlYW0oKQotewotI2lmbmRlZiBOREVCVUcKLSAgICByZWFkYWJsZVN0cmVh
bUNvdW50ZXIuZGVjcmVtZW50KCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6
Y2xlYXJDYWxsYmFja3MoKQotewotICAgIG1fY2xvc2VkUHJvbWlzZSA9IE51bGxvcHQ7Ci0gICAg
bV9yZWFkUmVxdWVzdHMuY2xlYXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdl
U3RhdGVUb0Nsb3NlZCgpCi17Ci0gICAgQVNTRVJUKCFtX2Nsb3NlUmVxdWVzdGVkKTsKLSAgICBB
U1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6RXJyb3JlZCk7Ci0KLSAgICBtX2Nsb3NlUmVxdWVzdGVk
ID0gdHJ1ZTsKLQotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkYWJsZSB8fCBoYXNWYWx1
ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgY2xvc2UoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0
cmVhbTo6Y2xvc2UoKQotewotICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOwotICAgIHJlbGVh
c2VSZWFkZXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVsZWFzZVJlYWRlcigpCi17
Ci0gICAgaWYgKG1fY2xvc2VkUHJvbWlzZSkKLSAgICAgICAgbV9jbG9zZWRQcm9taXNlLnZhbHVl
KCkucmVzb2x2ZShudWxscHRyKTsKLQotICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVhZFJl
cXVlc3RzKQotICAgICAgICByZXF1ZXN0LnJlc29sdmVFbmQoKTsKLQotICAgIGNsZWFyQ2FsbGJh
Y2tzKCk7Ci0gICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBl
bmQoV1RGOjptb3ZlKG1fcmVhZGVyKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5n
ZVN0YXRlVG9FcnJvcmVkKCkKLXsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZGFibGUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNsZWFyVmFsdWVzKCk7Ci0gICAgbV9zdGF0ZSA9IFN0
YXRlOjpFcnJvcmVkOwotCi0gICAgSlNDOjpKU1ZhbHVlIGVycm9yID0gdGhpcy0+ZXJyb3IoKTsK
LSAgICBpZiAobV9jbG9zZWRQcm9taXNlKQotICAgICAgICBtX2Nsb3NlZFByb21pc2UudmFsdWUo
KS5yZWplY3QoZXJyb3IpOwotCi0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZWFkUmVxdWVz
dHMpCi0gICAgICAgIHJlcXVlc3QucmVqZWN0KGVycm9yKTsKLQotICAgIGNsZWFyQ2FsbGJhY2tz
KCk7Ci0gICAgaWYgKG1fcmVhZGVyKQotICAgICAgICByZWxlYXNlUmVhZGVyKCk7Ci19Ci0KLXZv
aWQgUmVhZGFibGVTdHJlYW06OnN0YXJ0KCkKLXsKLSAgICBtX2lzU3RhcnRlZCA9IHRydWU7Ci0g
ICAgcHVsbCgpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpwdWxsKCkKLXsKLSAgICBpZiAo
IW1faXNTdGFydGVkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0
YXRlOjpFcnJvcmVkIHx8IG1fY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX3JlYWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgaGFzRW5vdWdoVmFsdWVzKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzUHVsbGluZykgewotICAgICAgICBtX3Nob3VsZFB1
bGxBZ2FpbiA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2lzUHVsbGlu
ZyA9IHRydWU7Ci0gICAgaWYgKGRvUHVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWFkYWJsZVN0
cmVhbT4gcHJvdGVjdGVkU3RyZWFtKHRoaXMpOwotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnBvc3RUYXNrKFtwcm90ZWN0ZWRTdHJlYW1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPmZpbmlzaFB1bGxpbmcoKTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpmaW5pc2hQdWxsaW5nKCkK
LXsKLSAgICBtX2lzUHVsbGluZyA9IGZhbHNlOwotICAgIGlmIChtX3Nob3VsZFB1bGxBZ2Fpbikg
ewotICAgICAgICBtX3Nob3VsZFB1bGxBZ2FpbiA9IGZhbHNlOwotICAgICAgICBwdWxsKCk7Ci0g
ICAgfQotfQotCi1SZWFkYWJsZVN0cmVhbVJlYWRlciogUmVhZGFibGVTdHJlYW06OmdldFJlYWRl
cihFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobG9ja2VkKCkpIHsKLSAgICAgICAgZWMg
PSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBBU1NFUlQo
IW1fcmVhZGVyKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4g
bmV3UmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbVJlYWRlcj4oKnRoaXMp
OwotICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyJiByZWFkZXIgPSAqbmV3UmVhZGVyLmdldCgpOwot
Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKSB7Ci0gICAgICAgIG1fcmVhZGVy
ID0gV1RGOjptb3ZlKG5ld1JlYWRlcik7Ci0gICAgICAgIHJldHVybiAmcmVhZGVyOwotICAgIH0K
LQotICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobmV3UmVhZGVyKSk7Ci0g
ICAgcmV0dXJuICZyZWFkZXI7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNhbmNlbChKU0M6
OkpTVmFsdWUgcmVhc29uLCBDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgaWYgKGxvY2tlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhbmNlbE5vQ2hlY2socmVhc29uLCBXVEY6Om1vdmUo
cHJvbWlzZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjYW5jZWxOb0NoZWNrKEpTQzo6
SlNWYWx1ZSByZWFzb24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlKQotewotICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJv
cmVkKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KGVycm9yKCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJsZSk7Ci0KLSAgICBj
bGVhclZhbHVlcygpOwotCi0gICAgbV9jYW5jZWxQcm9taXNlID0gV1RGOjptb3ZlKHByb21pc2Up
OwotCi0gICAgY2xvc2UoKTsKLQotICAgIGlmIChkb0NhbmNlbChyZWFzb24pKQotICAgICAgICBl
cnJvcigpID8gbm90aWZ5Q2FuY2VsRmFpbGVkKCkgOiBub3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsK
LX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6bm90aWZ5Q2FuY2VsU3VjY2VlZGVkKCkKLXsKLSAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKTsKLSAgICBBU1NFUlQobV9jYW5jZWxQ
cm9taXNlKTsKLQotICAgIG1fY2FuY2VsUHJvbWlzZS52YWx1ZSgpLnJlc29sdmUobnVsbHB0cik7
Ci0gICAgbV9jYW5jZWxQcm9taXNlID0gTnVsbG9wdDsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVh
bTo6bm90aWZ5Q2FuY2VsRmFpbGVkKCkKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
Q2xvc2VkKTsKLSAgICBBU1NFUlQobV9jYW5jZWxQcm9taXNlKTsKLQotICAgIG1fY2FuY2VsUHJv
bWlzZS52YWx1ZSgpLnJlamVjdChlcnJvcigpKTsKLSAgICBtX2NhbmNlbFByb21pc2UgPSBOdWxs
b3B0OwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZWQoQ2xvc2VkUHJvbWlzZSYmIHBy
b21pc2UpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewotICAgICAgICBw
cm9taXNlLnJlc29sdmUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJy
b3IoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9jbG9zZWRQcm9taXNlID0gV1RG
Ojptb3ZlKHByb21pc2UpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWFkKFJlYWRQcm9t
aXNlJiYgcmVhZFByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkg
ewotICAgICAgICByZWFkUHJvbWlzZS5yZXNvbHZlRW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcmVhZFBy
b21pc2UucmVqZWN0KGVycm9yKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICho
YXNWYWx1ZSgpKSB7Ci0gICAgICAgIHJlYWRQcm9taXNlLnJlc29sdmUocmVhZCgpKTsKLSAgICAg
ICAgaWYgKCFtX2Nsb3NlUmVxdWVzdGVkKQotICAgICAgICAgICAgcHVsbCgpOwotICAgICAgICBl
bHNlIGlmICghaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9yZWFkUmVxdWVzdHMuYXBwZW5kKFdURjo6bW92ZShyZWFkUHJvbWlz
ZSkpOwotICAgIHB1bGwoKTsKLX0KLQotYm9vbCBSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZVJlYWRD
YWxsYmFjayhKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZWFkUmVxdWVzdHMudGFr
ZUZpcnN0KCkucmVzb2x2ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNo
YXIqIFJlYWRhYmxlU3RyZWFtOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gIlJlYWRhYmxlU3RyZWFtIjsKLX0KLQotYm9vbCBSZWFkYWJsZVN0cmVhbTo6Y2FuU3Vz
cGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
YW5kIGRvIGJldHRlciBoZXJlLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNzdiYTU4OWVlMDIxMDU3MTE5NWQ5YTNhNWE3
Y2JhMzUwZDE2NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMu
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBS
ZWFkYWJsZVN0cmVhbV9oCi0jZGVmaW5lIFJlYWRhYmxlU3RyZWFtX2gKLQotI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRP
TVJlcXVlc3RTdGF0ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIERpY3Rpb25hcnk7Ci1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlcjsKLWNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0K
LS8vIFJlYWRhYmxlU3RyZWFtIGltcGxlbWVudHMgdGhlIGNvcmUgb2YgdGhlIHN0cmVhbXMgQVBJ
IFJlYWRhYmxlU3RyZWFtIGZ1bmN0aW9uYWxpdHkuCi0vLyBJdCBoYW5kbGVzIGluIHBhcnRpY3Vs
YXIgdGhlIGJhY2twcmVzc3VyZSBhY2NvcmRpbmcgdGhlIHF1ZXVlIHNpemUuCi0vLyBSZWFkYWJs
ZVN0cmVhbSBpcyB1c2luZyBhIFJlYWRhYmxlU3RyZWFtU291cmNlIHRvIGdldCBkYXRhIGluIGl0
cyBxdWV1ZS4KLS8vIFNlZSBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNycwotY2xh
c3MgUmVhZGFibGVTdHJlYW0gOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbT4gewotcHVibGljOgot
ICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICBSZWFkYWJsZSwKLSAgICAgICAgQ2xvc2Vk
LAotICAgICAgICBFcnJvcmVkCi0gICAgfTsKLQotICAgIHN0YXRpYyBSZWZQdHI8UmVhZGFibGVT
dHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgRGljdGlv
bmFyeSYpOwotICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICBSZWFkYWJsZVN0
cmVhbVJlYWRlciogZ2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBjb25zdCBSZWFkYWJs
ZVN0cmVhbVJlYWRlciogcmVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkZXIuZ2V0KCk7IH0K
LQotICAgIGJvb2wgbG9ja2VkKCkgY29uc3QgeyByZXR1cm4gISFtX3JlYWRlcjsgfQotCi0gICAg
dm9pZCByZWxlYXNlUmVhZGVyKCk7Ci0gICAgYm9vbCBoYXNSZWFkUGVuZGluZ1JlcXVlc3RzKCkg
eyByZXR1cm4gIW1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKTsgfQotCi0gICAgYm9vbCBpc0Vycm9y
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkOyB9Ci0gICAgYm9v
bCBpc1JlYWRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGU7
IH0KLSAgICBib29sIGlzQ2xvc2VSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlUmVx
dWVzdGVkOyB9Ci0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBlcnJvcigpID0gMDsKLQotICAg
IHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKLSAgICB2b2lk
IGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7Ci0gICAgdm9pZCBmaW5pc2hQdWxsaW5nKCk7Ci0gICAg
dm9pZCBub3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsKLSAgICB2b2lkIG5vdGlmeUNhbmNlbEZhaWxl
ZCgpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBKU0M6OkpTVmFs
dWU+IENhbmNlbFByb21pc2U7Ci0gICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlLCBDYW5jZWxQ
cm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNhbmNlbE5vQ2hlY2soSlNDOjpK
U1ZhbHVlLCBDYW5jZWxQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6
bnVsbHB0cl90LCBKU0M6OkpTVmFsdWU+IENsb3NlZFByb21pc2U7Ci0gICAgdm9pZCBjbG9zZWQo
Q2xvc2VkUHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZUl0ZXJhdG9yV2l0aENh
bGxiYWNrPEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlPiBSZWFkUHJvbWlzZTsKLSAgICB2b2lk
IHJlYWQoUmVhZFByb21pc2UmJik7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBSZWFkYWJs
ZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0KLSAgICBib29sIHJlc29sdmVSZWFk
Q2FsbGJhY2soSlNDOjpKU1ZhbHVlKTsKLSAgICB2b2lkIHB1bGwoKTsKLQotcHJpdmF0ZToKLSAg
ICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhblN1c3BlbmRGb3JQYWdlQ2FjaGUo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgY2xlYXJDYWxsYmFja3MoKTsKLSAgICB2b2lk
IGNsb3NlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIGhhc0Vub3VnaFZhbHVlcygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgZG9QdWxsKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkb0Nh
bmNlbChKU0M6OkpTVmFsdWUpID0gMDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0
cmVhbVJlYWRlcj4gbV9yZWFkZXI7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJs
ZVN0cmVhbVJlYWRlcj4+IG1fcmVsZWFzZWRSZWFkZXJzOwotCi0gICAgT3B0aW9uYWw8Q2FuY2Vs
UHJvbWlzZT4gbV9jYW5jZWxQcm9taXNlOwotICAgIE9wdGlvbmFsPENsb3NlZFByb21pc2U+IG1f
Y2xvc2VkUHJvbWlzZTsKLQotICAgIERlcXVlPFJlYWRQcm9taXNlPiBtX3JlYWRSZXF1ZXN0czsK
LQotICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1B1bGxpbmcg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9zaG91bGRQdWxsQWdhaW4geyBmYWxzZSB9OwotICAgIGJv
b2wgbV9jbG9zZVJlcXVlc3RlZCB7IGZhbHNlIH07Ci0gICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpSZWFkYWJsZSB9OwotfTsKLQotLy8gVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBxdWV1ZSBhbmQg
a25vd3Mgd2hldGhlciB0aGVyZSBpcyBzdWZmaWNpZW50IGRhdGEgaW4gaXQuCi0vLyAgIFN1YmNs
YXNzZXMgc2hvdWxkIGltcGxlbWVudCBlcnJvciBzdG9yYWdlLCBwdWxsaW5nIGFuZCBjYW5jZWxs
aW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2h1bmtUeXBlPgotY2xhc3MgUmVhZGFibGVFbnF1ZXVp
bmdTdHJlYW0gZmluYWwgOiBwdWJsaWMgUmVhZGFibGVTdHJlYW0gewotcHJvdGVjdGVkOgotICAg
IGV4cGxpY2l0IFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIDogUmVhZGFibGVTdHJlYW0oY29udGV4dCkgeyB9Ci0KLSAgICB2b2lkIGVucXVl
dWVDaHVuayhDaHVua1R5cGUmJiBjaHVuaykgeyBtX3F1ZXVlLmFwcGVuZChzdGQ6OmZvcndhcmQo
Y2h1bmspKTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZhbHVlcygpIG92
ZXJyaWRlIHsgbV9xdWV1ZS5jbGVhcigpOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0Vub3VnaFZh
bHVlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOyB9Ci0gICAgdmly
dHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1ZS5zaXpl
KCk7IH0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7Ci0KLSAgICBE
ZXF1ZTxDaHVua1R5cGU+IG1fcXVldWU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaHVua1R5
cGU+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPENodW5rVHlw
ZT46OnJlYWQoKQotewotICAgIERPTVJlcXVlc3RTdGF0ZSBzdGF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIHJldHVybiB0b0pTKHN0YXRlLmV4ZWMoKSwgdG9KU0RPTUdsb2JhbE9i
amVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXRlLmV4ZWMoKSksIG1fcXVldWUucmVh
ZCgpKTsKLX0KLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJlYWRhYmxlU3RyZWFtX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjNjMjY0MzE4YzU0MTIwYTcwODg5MWExY2Rh
YzUzZjA2OGNiMGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENh
bm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAg
Q29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRTdGF0ZSwKLSAgICBDb25zdHJ1Y3RvcihbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBzb3VyY2UsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgRGljdGlvbmFyeSBzdHJhdGVneSksCi0gICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEks
Ci0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KLV0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtIHsK
LSAgICBbUmFpc2VzRXhjZXB0aW9uXSBQcm9taXNlIGNhbmNlbChbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIGFueSByZWFzb24pOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGdldFJlYWRlcigpOwotICAgIFtDdXN0b21dIFByb21pc2UgcGlwZVRvKGFueSBz
dHJlYW1zLCBhbnkgb3B0aW9ucyk7Ci0gICAgW0N1c3RvbV0gT2JqZWN0IHBpcGVUaHJvdWdoKGFu
eSBkZXN0LCBhbnkgb3B0aW9ucyk7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBs
b2NrZWQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhNGMzYmVjYmIxZDc3ZDM4YzhlOTNjODRmNDg2MzM5ZWY3NGUzZTZmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyX2gKLQotI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0vLyBUaGlzIGNs
YXNzIGlzIG9ubHkgdXNlZCBmb3IgSlMgc291cmNlIHJlYWRhYmxlIHN0cmVhbXMgdG8gYWxsb3cg
ZW5xdWV1aW5nLCBjbG9zaW5nIG9yIGVycm9yaW5nIGEgcmVhZGFibGUgc3RyZWFtLgotLy8gSXRz
IGRlZmluaXRpb24gaXMgYXQgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcnMtY29u
dHJvbGxlci1jbGFzcy4KLS8vIE5vdGUgdGhhdCBpdHMgY29uc3RydWN0b3IgaXMgdGFraW5nIGEg
UmVhZGFibGVKU1N0cmVhbSBhcyBpdCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBKUyBzb3VyY2Vz
LgotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKQotICAg
ICAgICA6IG1fc3RyZWFtKHN0cmVhbSkgeyB9Ci0KLSAgICBSZWFkYWJsZUpTU3RyZWFtJiBzdHJl
YW0oKSB7IHJldHVybiBtX3N0cmVhbTsgfQotCi0gICAgdm9pZCBlcnJvcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgbV9zdHJl
YW0uZXJyb3IoKnN0YXRlLCB2YWx1ZSwgZWMpOyB9Ci0KLSAgICB2b2lkIGVucXVldWUoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpIHsgbV9zdHJlYW0uZW5xdWV1ZSgq
c3RhdGUsIHZhbHVlKTsgfQotCi0gICAgdm9pZCByZWYoKSB7IG1fc3RyZWFtLnJlZigpOyB9Ci0g
ICAgdm9pZCBkZXJlZigpIHsgbV9zdHJlYW0uZGVyZWYoKTsgfQotCi0gICAgdm9pZCBjbG9zZShF
eGNlcHRpb25Db2RlJiBlYykgeyBtX3N0cmVhbS5jbG9zZShlYyk7IH0KLSAgICBkb3VibGUgZGVz
aXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbS5kZXNpcmVkU2l6ZSgpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbSYgbV9zdHJlYW07Ci19OwotCi19Ci0KLSNlbmRp
ZgotCi0jZW5kaWYgLy8gUmVhZGFibGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBiOGM4YjVlOTc3MThhMTRmZGJiZGNlOWM2MzVh
NmY2NzRlODU1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
Q2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVsKLSAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKLSAgICBDdXN0b21Db25zdHJ1Y3RvciwK
LSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0Ci1d
IGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgewotICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gdm9pZCBlbnF1ZXVlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IGNo
dW5rKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNsb3NlKCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgZXJyb3IoW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBhbnkgZXJyb3IpOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJs
ZSBkZXNpcmVkU2l6ZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2YzN2Q5OWMwMWQ5YzFhYWFlOWRjOGVjMjhjZjc3YzVlNmVmMGRiOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
ODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotCi0jaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUmVhZGFibGVTdHJl
YW1SZWFkZXI6OmNhbmNlbChKU0M6OkpTVmFsdWUgcmVhc29uLCBSZWFkYWJsZVN0cmVhbTo6Q2Fu
Y2VsUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAm
JiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShu
dWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3N0cmVhbS5jYW5jZWxOb0No
ZWNrKHJlYXNvbiwgV1RGOjptb3ZlKHByb21pc2UpKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRQcm9taXNlJiYgcHJvbWlzZSkK
LXsKLSAgICBpZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9
IHRoaXMpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLmNsb3NlZChXVEY6Om1vdmUocHJvbWlzZSkpOwotfQot
Ci12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkUHJv
bWlzZSYmIHByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0
cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZUVuZCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLnJlYWQoV1RGOjptb3ZlKHByb21p
c2UpKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVsZWFzZUxvY2soRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAobV9zdHJlYW0uaGFzUmVhZFBlbmRpbmdSZXF1ZXN0cygpKSB7
Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1f
c3RyZWFtLnJlbGVhc2VSZWFkZXIoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZDJmYjUzZDUxMTBiMmQxMTZhNTM3NWVkYzYyODM1
ZjMxMDQ5YjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENh
bm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFJlYWRhYmxlU3RyZWFtUmVhZGVyX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1SZWFkZXJfaAot
Ci0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7Ci0KLS8vIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGltcGxlbWVudHMgYWNj
ZXNzIHRvIFJlYWRhYmxlU3RyZWFtIGZyb20gSmF2YVNjcmlwdC4KLS8vIEl0IGJhc2ljYWxseSBh
bGxvd3MgYWNjZXNzIHRvIHRoZSBSZWFkYWJsZVN0cmVhbSBpZmYgdGhlIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGluc3RhbmNlIGlzIHRoZSBhY3RpdmUgcmVhZGVyCi0vLyBvZiB0aGUgUmVhZGFibGVT
dHJlYW0uCi0vLyBNb3N0IG9mIHRoaXMgaGFuZGxpbmcgaXMgaGFwcGVuaW5nIGluIHRoZSBjdXN0
b20gSlMgYmluZGluZyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlci4KLS8vIFNlZSBodHRwczovL3N0
cmVhbXMuc3BlYy53aGF0d2cub3JnLyNyZWFkZXItY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24u
Ci1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7Ci1wdWJsaWM6Ci0gICAgUmVhZGFibGVTdHJl
YW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKLSAgICAgICAgOiBtX3N0cmVhbShzdHJl
YW0pIHsgfQotCi0gICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlLCBSZWFkYWJsZVN0cmVhbTo6
Q2FuY2VsUHJvbWlzZSYmKTsKLSAgICB2b2lkIGNsb3NlZChSZWFkYWJsZVN0cmVhbTo6Q2xvc2Vk
UHJvbWlzZSYmKTsKLSAgICB2b2lkIHJlYWQoUmVhZGFibGVTdHJlYW06OlJlYWRQcm9taXNlJiYp
OwotICAgIHZvaWQgcmVsZWFzZUxvY2soRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgdm9pZCByZWYo
KSB7IG1fc3RyZWFtLnJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9zdHJlYW0uZGVyZWYo
KTsgfQotCi1wcml2YXRlOgotICAgIFJlYWRhYmxlU3RyZWFtJiBtX3N0cmVhbTsKLX07Ci0KLX0K
LQotI2VuZGlmCi0KLSNlbmRpZiAvLyBSZWFkYWJsZVN0cmVhbV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5Y2U5MzEyMTRhODM4NzdlZWZmMWQyOTgzNjQ2
NGE0ZDE1NDFmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5v
biBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwot
ICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAotICAgIEN1c3RvbUNvbnN0cnVjdG9yKGFueSBw
cm9wZXJ0aWVzKSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbgotXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW1SZWFkZXIgewotICAgIFByb21pc2UgcmVh
ZCgpOwotICAgIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55
IHJlYXNvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZWxlYXNlTG9jaygpOwotCi0g
ICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgY2xvc2VkOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODYxZTdlOTRlZDIyOWU5OGNjMTI3NzY2ZTk4
ZmYxNjA4YjZmY2MzMy4uNDdkYWZmNGYzY2E0NDk4ZTc0Y2I2NjdjNDkwNDBlNGY2NmM1ODQ0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTYxNiw4ICs2MTYsNiBAQCBsaXN0KFJFTU9W
RV9JVEVNIFdlYkNvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9ET01QYW5uZXJOb2RlLm1tCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RP
TVBvcFN0YXRlRXZlbnQubW0KICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9N
UmFkaW9Ob2RlTGlzdC5tbQotICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01S
ZWFkYWJsZVN0cmVhbS5tbQotICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01S
ZWFkYWJsZVN0cmVhbVJlYWRlci5tbQogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9ET01TY3JpcHRQcm9jZXNzb3JOb2RlLm1tCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0RPTVNjcmlwdFByb2ZpbGUubW0KICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vRE9NU2NyaXB0UHJvZmlsZU5vZGUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGQ0NDk4NGM3NGVlZGEwOTZmZTYwYjMwNWY3
OGRkOWEyOTUzZGRlZGIuLjRlNzM1YTdhMWEwN2IwMzc4OTY5ZDM4ZWQ2YjkzZDVjNzYzNmIzZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpA
QCAtMzkzMSw0OCArMzkzMSw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW0uY3BwIj4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1JlY3QuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KQEAgLTY4MDMsOCArNjc2MSw2IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRp
b25DZW50ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3Rp
ZmljYXRpb25zXFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW0uY3BwIiAv
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0aG9yaXplci5j
cHAiIC8+CkBAIC0xODQ5MSw2MiArMTg0NDcsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
Ij4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3Vz
dG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xSZWFkYWJsZUpTU3RyZWFtLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrQ3Vz
dG9tLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBA
IC0yMDAxNSw5ICsxOTkxNSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNSYWRpb05vZGVMaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYW5nZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmFuZ2VFeGNlcHRpb24uaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Jl
YWRhYmxlU3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNSZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUkdCQ29sb3IuaCIgLz4K
QEAgLTIwNTM3LDkgKzIwNDM0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9iYWxTY29wZU5vdGlm
aWNhdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccGx1Z2lu
c1xQbHVnaW5SZXBsYWNlbWVudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
QWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uRGF0YS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5o
IiAvPgpAQCAtMjI4NDUsNCArMjI3MzksNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVu
c2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxCdWls
ZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggNGFjZGRlMWI1ZWIxMmFiYmY2NTRlZTExNGNmOTlhNmE2ZmZjNmVlZS4uYWEzMDExMDY2
YTE3OTFkZjBkOTMxMmFjZTI1NWJhMTVlMzc0MGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzQsOSAr
MzQsNiBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1xub3RpZmljYXRpb25zIj4KICAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPnthNTk1ZmZjZi1mYTIyLTQ4YTktOTFhZC1jNTI4YTc1YTYy
ZTV9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iTW9kdWxlc1xzdHJlYW1zIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntkNjdiYTViZC02
NTc0LTQyZjMtOWRhMy01NWY1NTA3NDc4NjN9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgIDwvRmls
dGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1x3ZWJkYXRhYmFzZSI+CiAgICAgICA8
VW5pcXVlSWRlbnRpZmllcj57NWUwZTk1ODItYjRiNC00NTJkLWE2ZGUtN2M2YjMxZjYxNGU3fTwv
VW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTQ2OCwxMiArNDY1LDYgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9i
YWxTY29wZU5vdGlmaWNhdGlvbnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xub3RpZmlj
YXRpb25zPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW0uY3BwIj4KLSAgICAgIDxGaWx0ZXI+
TW9kdWxlc1xzdHJlYW1zPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1zPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXENoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ0MTAsMTggKzQ0MDEsNiBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFt
Q3VzdG9tLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xq
czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAiPgotICAgICAgPEZp
bHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcUmVhZGFibGVKU1N0cmVhbS5jcHAiPgotICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFja0N1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNTY5MiwxNSArNTY3MSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYW5nZUV4Y2VwdGlvbi5jcHAiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVT
dHJlYW0uY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJp
dmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
Ij4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Jl
Y3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzNjI3LDE1ICsxMzU5Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2Vi
Q29yZVxEZXJpdmVkU291cmNlc1xKU1dvcmtlck5hdmlnYXRvci5oIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtLmgiPgot
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCI+Ci0gICAgICA8RmlsdGVy
PkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNYTUxIdHRwUmVxdWVzdC5oIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
QEAgLTE1MjA1LDE1ICsxNTE2Niw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xGb250Q2FzY2FkZUZvbnRzLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9y
bVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiPgotICAgICAgPEZpbHRl
cj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
aCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcc3RyZWFtczwvRmlsdGVyPgotICAgIDwvQ2xJbmNs
dWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxl
U3RyZWFtUmVhZGVyLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkBAIC0xNTQ2Miw0ICsxNTQxNCw0IEBACiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XHdpbjwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1NDBkOGE0OTNiMDQ1
MDNkYmE4MGIyM2ExYmQyZjBiOWVjYjljNWUuLmE4NjA5ZjViZGE2MWMwZWYxMTU1Nzc5NjQzNmRh
NGJlZGM3ZGZkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0NjksNyArMTQ2OSw2IEBACiAJCTQwRUNBRTdFMTZCOEI2NzIw
MEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICov
OyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU4MDE2QjhCNjhB
MDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4
MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwotCQk0MTE4OUVGOTFBRDgyNzM3MDBCOTBBMEQgLyog
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExODlFRjgxQUQ4MjMzQzAwQjkwQTBEIC8qIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDEyMzA4MUIxMzhD
NDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdl
YkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07CkBAIC0xNTAx
LDE2ICsxNTAwLDggQEAKIAkJNDE4QTA2RDExMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJ
NDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAw
ODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FG
MDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuaCAqLzsgfTsKLQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1IC8qIFJlYWRhYmxl
SlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwICovOyB9
OwotCQk0MTk4QkRGMTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5OEJERUYxQTgxMTIz
NjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLzsgfTsKIAkJNDE5QkMyREUxNjg1MzI5
OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0
ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlz
aXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsg
fTsKLQkJNDE5RkFGQUUxQUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkFC
MUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi87IH07Ci0JCTQx
OUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFGQUMxQUJBQkNENTAw
NUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IH07Ci0JCTQxOUZBRkIxMUFCQUJE
RUQwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkIwMUFCQUJEN0IwMDVC
ODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLzsgfTsKLQkJNDFBMDIz
RUYxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0VCMUEzOURCNzkwMEY3MjJDRiAv
KiBSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTQxQTAyM0YwMUEzOURCN0EwMEY3MjJDRiAv
KiBSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFBMDIzRUMxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi87
IH07Ci0JCTQxQTAyM0Y2MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAy
M0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEw
MUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJNDFB
M0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAw
MzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0MUJGNzAwQzBGRTg2
RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVz
c2FnZVBvcnRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTIzMzQsOCArMjMyNSw2IEBACiAJCTY1RkQ0NjY2MTlCNTk2RjYwMDFFMkI0
RCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODZGRTNEMTlCNTQ4QkQwMDVDM0M4
MiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSAqLzsgfTsKIAkJNjVG
RUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2Uu
Y3BwICovOyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4MDky
MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZDNEM5NkRFMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0
NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8q
IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyog
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CiAJCTZDRERFOEQwMTc3MEJC
MjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdp
b25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjU1MiwxMCArMjU0MSw2IEBACiAJCTdDNDhBNkQwMTkxQzlENjUwMDAyNjY3
NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFj
ZS5jcHAgKi87IH07CiAJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3Bh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhB
NkNGMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLzsgfTsKIAkJN0M0OTAy
QTIxOEI4MjVGODAwN0Q5Mjk4IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5ODlE
Q0EwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oICovOyB9OwotCQk3
QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEODFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTdDNEM5NkREMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJs
ZVN0cmVhbS5oICovOyB9OwotCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5jcHAgKi87IH07Ci0JCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oICov
OyB9OwogCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkUyMUFE
NDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNEVERDc0MUE3QjYwNzgwMDE5OEM0RCAv
KiBGb250Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1tICovOyB9OwogCQk3
QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5
QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CkBAIC04NjU3LDkgKzg2NDIsNiBA
QAogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTE4OUVGNjFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQg
LyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MTE4OUVGODFBRDgyMzNDMDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjkzLDE4ICs4Njc1
LDggQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUg
LyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZUpT
U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5OEJERUYxQTgxMTIz
NjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVhZGFibGVKU1N0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZp
c2l0ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaXRl
ZExpbmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZBQjFBQkFC
Q0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5RkFGQUQxQUJB
QkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUEwMjNFQzFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVT
dHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkNG
IC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0
cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTAyM0YzMUEzOURCQ0Iw
MEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
ZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNz
YWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NjMyLDggKzk2
MDQsNiBAQAogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0
aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUlt
YWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRBMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9y
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZD
NzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uT3ZlcnNldFN0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05ODgzLDEwICs5ODUzLDYgQEAKIAkJN0M0OEE2Q0UxOTFDOUQ2
NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZEMjE5MUM5RDhFMDAwMjY2NzQgLyogV2ViS2l0
TmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVh
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3Ry
ZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2RDkxQUQ0NDgzNTAw
MzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2REIxQUQ0NDgzNTAwMzY1
QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0RURENzMxQTdCNjA3ODAwMTk4QzREIC8qIEZv
bnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAw
OUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTI5MCw3ICsxNTI1Niw2IEBACiAJCQkJQkM5ODU0NDYwQ0QzREE1RjAwMDY5QkMx
IC8qIFJhbmdlcyAqLywKIAkJCQlBQTdGRUU5QjE2QTQ5MUExMDA0QzBDMzMgLyogU3BlZWNoICov
LAogCQkJCUE4M0I3OTE1MENDQjAwNzgwMDBCMDgyNSAvKiBTdG9yYWdlICovLAotCQkJCTQxQTAy
M0ZBMUEzOUYxM0EwMEY3MjJDRiAvKiBTdHJlYW1zICovLAogCQkJCUE4M0I3OTBBMENDQUZGNDcw
MDBCMDgyNSAvKiBTVkcgKi8sCiAJCQkJNDE3REE3MTIxMzczNUQ5MDAwN0M1N0ZCIC8qIFRlc3Rp
bmcgKi8sCiAJCQkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdEIC8qIFRocmVhZHMgKi8sCkBAIC0x
NjA3NCwzNCArMTYwMzksNiBAQAogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKLQkJNDFBMDIzRUExQTM5REI3OTAwRjcyMkNGIC8qIHN0cmVhbXMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTQxQTAyM0VCMUEzOURC
NzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCi0JCQkJNDFBMDIzRUMxQTM5REI3
OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCi0JCQkJNDFBMDIzRUQxQTM5REI3OTAw
RjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLywKLQkJCQk0MTE4OUVGNjFBRDgyMzI4MDBC
OTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCi0JCQkJNDExODlFRjcxQUQ4
MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8sCi0JCQkJNDE5
RkFGQUIxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLywKLQkJ
CQk0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywK
LQkJCQk0MTlGQUZBRDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRs
ICovLAotCQkJKTsKLQkJCXBhdGggPSBzdHJlYW1zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJNDFBMDIzRkExQTM5RjEzQTAwRjcyMkNGIC8qIFN0cmVhbXMgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTdDNEM5NkQ4MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmNwcCAqLywKLQkJCQk3QzRDOTZEOTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5oICovLAotCQkJCTZDNEM5NkRBMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8sCi0JCQkJNkM0Qzk2
REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCi0J
CQkJN0M0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
ICovLAotCQkJCTdDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmggKi8sCi0JCQkpOwotCQkJbmFtZSA9IFN0cmVhbXM7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQk0MzkwNDZDMjEyREEyNUNFMDBBRjgwQTIgLyogbWF0aG1sICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE4NTU0LDcgKzE4NDkx
LDYgQEAKIAkJCQkwNzJBRTFERTE4M0MwNTEzMDAwQTU5ODggLyogcGx1Z2lucyAqLywKIAkJCQk4
OUY2MEIwODE1N0Y2ODM1MDA3NUUxNTcgLyogcXVvdGEgKi8sCiAJCQkJQUEyQTVBQjcxNkE0ODVB
NDAwOTc1QTI1IC8qIHNwZWVjaCAqLywKLQkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyog
c3RyZWFtcyAqLywKIAkJCQlGRDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVkaW8gKi8s
CiAJCQkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICovLAogCQkJCTk3
QUFCQ0Y3MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJzb2NrZXRzICovLApAQCAtMjEzMzcsMTEgKzIx
MjczLDggQEAKIAkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxi
YWNrLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAotCQkJCTQxMTg5RUY4MUFEODIzM0MwMEI5MEEwRCAv
KiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAgKi8sCiAJCQkJRTFDMzZEMzIw
RUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKIAkJCQlF
MUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCAqLywK
LQkJCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5jcHAgKi8s
Ci0JCQkJNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLywK
IAkJCQlCQ0EzNzhCQTBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCAqLywK
IAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi8sCiAJ
CQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAg
Ki8sCkBAIC0yMTUxMSw4ICsyMTQ0NCw2IEBACiAJCQkJRkRCRDFERkIxNjdGRTI3RDAwNTFBMTFF
IC8qIEpTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwICovLAogCQkJCUZEOEFBNjNEMTY5NTE0QTcw
MEQyRUE2OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwICovLAogCQkJCUE4NUYyMjA4MTQzMDM3
N0QwMDdDQzg4NCAvKiBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwICovLAotCQkJCTQxQTAyM0Yz
MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLywKLQkJCQk0
MTlGQUZCMDFBQkFCRDdCMDA1QjgyOEIgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5j
cHAgKi8sCiAJCQkJNDk5OEFFRDMxM0ZDNDE3RjAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwICovLAogCQkJCTRBRTBCRjg4MTgzNjA4MzEwMEYzODUy
RCAvKiBKU1JUQ0ljZUNhbmRpZGF0ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdDQTEyMEQxODJENjdE
ODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovLApAQCAtMjU2MTIs
OSArMjU1NDMsNiBAQAogCQkJCUI2NThGRkEyMTUyMkVGM0EwMERENTU5NSAvKiBKU1JhZGlvTm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjAyMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMjNDQTU1RDBBQjBFQUFFMDA1MTA4QTUgLyog
SlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M0Qzk2REQxQUQ0NDgzNTAw
MzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTZDNEM5NkRG
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJN0M0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkUyRjEyMEMxQjU4MzgwMDIwMjM1RiAvKiBK
U1JlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUNFMTNGOUQ2QzkwMDkwQjFBQSAvKiBK
U1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc0
REE0OTEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjMxMSw5ICsyNjIzOSw2IEBACiAJCQkJRjU1QjNEQ0UxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdl
SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjgg
LyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3
Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOThC
REYxMUE4MTE0MzEwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MUEwMjNGMDFBMzlEQjdBMDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJl
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJl
YWx0aW1lQW5hbHlzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUz
OENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3
MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yOTIwMSwxMiArMjkxMjYsNiBAQAogCQkJCUI2NThGRkExMTUyMkVG
M0EwMERENTU5NSAvKiBKU1JhZGlvTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVE
RjMyMDEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkM0Qzk2REUxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMTg5RUY5MUFE
ODI3MzcwMEI5MEEwRCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk0MUEwMjNGNjFBMzlEQkNCMDBGNzIyQ0YgLyogSlNSZWFkYWJsZVN0
cmVhbUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTlG
QUZCMTFBQkFCREVEMDA1QjgyOEIgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0ZFMkYxMTBDMUI1ODM3MDAyMDIzNUYgLyogSlNSZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OThBRUNEMTNGOUQ2QzkwMDkwQjFBQSAvKiBKU1JlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OThBRUQ0
MTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4MzksOSArMjk3NTgsNiBAQAogCQkJCTk3OEQwN0JB
MTQ1QTBGM0MwMDk2OTA4RCAvKiBSYW5nZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNTVCM0RDRDEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTQxOThCREYwMUE4MTE0MjIwMEIyMkZCNSAvKiBSZWFkYWJsZUpT
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxQTAyM0VGMUEzOURCN0EwMEY3MjJDRiAv
KiBSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTlGQUZBRTFBQkFCRDA4
MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEE0RjY1NzAxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVGQ0M5RkMxQjRERjdGMjAwRTcyMzI2IC8qIERP
TVVSTE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNDc2YjZiMGNlMmJlNzFm
ZDQ4MWJiODQzOWJmMDMzNTcxNmVmYzY2Zi4uMmEzNDNiOTg0MmU5ZjY0NTI1YjIzNzlkMDE1MzY1
MTI0NWVkMDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCkBAIC0xMTcsMTIgKzExNyw2IEBACiAjaW5jbHVkZSAiSlNOb2RlT3JT
dHJpbmcuY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiCiAjaW5j
bHVkZSAiSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCIKLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
Ci0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIgotI2luY2x1
ZGUgIkpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJl
YW1SZWFkZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uY3BwIgotI2Vu
ZGlmCiAjaW5jbHVkZSAiSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDlhYjBhOGYwZDBmYmQ3OGU1ZTU3ZDU4MDQ3N2U2
NTVjYjg5NTk1ZDEuLjkwYTg1MjczOTY3OGE3ZjM3NThkNDI1NDAyYjBmZjk2ZTY2M2RjM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9KU1JlYWRhYmxlU3RyZWFtLmg+CiAjaW5jbHVkZSA8cnVudGltZS9NaWNyb3Rhc2suaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOTdkMWYzOGE0YzZkYTVkNDRlYjEw
MzNjZTJmOGMyZTY4ODVlYjAyNS4uMWVlM2U1Mzc1NWM3NzFlZDdmN2RmZmQ0NjhhYWE4YjVmMmZm
ZDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtNTYsNiArNTYsOCBAQAogI2luY2x1ZGUgIkpTV2ViS2l0TmFtZXNwYWNlLmgi
CiAjZW5kaWYKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oPgorCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTksNiArMTIxLDE0
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0luZGV4ZWREQihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKIH0KICNlbmRpZgogCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUganNET01XaW5kb3dSZWFkYWJsZVN0cmVhbShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IHRvSlNET01XaW5kb3coSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4
ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5y
ZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKCkpOworfQorCiBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5k
b3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwpAQCAtMjAwLDYg
KzIxMCwxMSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIH0KICNlbmRpZgogCisgICAg
aWYgKChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLlJlYWRhYmxlU3RyZWFt
KSkgeworICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBhbGxvd3NBY2Nlc3MgPyBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciA6IFJlYWRPbmx5IHwgRG9udERl
bGV0ZSB8IERvbnRFbnVtLCBqc0RPTVdpbmRvd1JlYWRhYmxlU3RyZWFtKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNE
T01XaW5kb3c6OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhp
c09iamVjdCwgYWxsb3dzQWNjZXNzID8gZW50cnktPmF0dHJpYnV0ZXMoKSA6IFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MTdl
MzNjN2NmYmZiZDhmNzAyMjM3NTU4ZDczMGY4MDMyYjgwYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCi0KLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3Ry
ZWFtLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotCi11c2luZyBuYW1lc3BhY2UgSlND
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3Qg
YmUgY2FsbGVkIGRpcmVjdGx5IikpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbUN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0OGQxNmIyZmVi
ZTc5ODdkMmRkNjZmNWNjODY2NWY1YTdjMGVlNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVk
IHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5P
TiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRlICJSZWFk
YWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNs
dWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFs
dWUgSlNSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1Zh
bHVlIGVycm9yID0gY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJwaXBlVG8gaXMgbm90
IGltcGxlbWVudGVkIikpOwotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKTsKLX0KLQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtOjpwaXBlVGhyb3VnaChF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNWYWx1ZSBlcnJvciA9IGNyZWF0ZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgicGlwZVRocm91Z2ggaXMgbm90IGltcGxlbWVudGVkIikpOwotICAgIHJl
dHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZTJlMWNiMjQ0NTAyMzE4MmQ3ZjEzZjkwZWViNzQyODRi
YWU4NzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9u
IEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLSNp
bmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAotewotICAgIGlmIChtX2Nsb3NlZFByb21pc2VEZWZlcnJlZCkKLSAgICAg
ICAgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci0KLSAgICBjb25z
dF9jYXN0PEpTUmVhZGFibGVTdHJlYW1SZWFkZXIqPih0aGlzKS0+bV9jbG9zZWRQcm9taXNlRGVm
ZXJyZWQuc2V0KGV4ZWMtPnZtKCksIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KCkpKTsKLSAgICBpbXBsKCkuY2xvc2VkKERlZmVycmVkV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QoKSwgbV9jbG9zZWRQcm9taXNlRGVmZXJyZWQuZ2V0KCkpKTsKLQotICAgIHJl
dHVybiBtX2Nsb3NlZFByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOwotfQotCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1SZWFkZXIoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHRha2VzIGEgUmVhZGFibGVTdHJl
YW0gYXMgcGFyYW1ldGVyIikpKTsKLQotICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpz
RHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBp
ZiAoIXN0cmVhbSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0iKSkpOwotCi0gICAgaWYgKHN0cmVh
bS0+aW1wbCgpLmxvY2tlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNv
bnN0cnVjdG9yIHBhcmFtZXRlciBpcyBhIGxvY2tlZCBSZWFkYWJsZVN0cmVhbSIpKSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmVuY29kZSh0b0pTKGV4ZWMsIHN0cmVhbS0+Z2xvYmFsT2JqZWN0KCksIHN0cmVhbS0+aW1w
bCgpLmdldFJlYWRlcihlYykpKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICByZXR1cm4gdmFsdWU7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3OWI2NjZjMWQyYTEzYTUyN2Q3YmM3OGE2MTk5OTU1NTY0ZGNlNDFkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzc1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCi0jaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1
ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50
aW1lL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJp
bmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUgZ2V0UHJvcGVydHlGcm9tT2JqZWN0KEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIG9iamVj
dCwgY29uc3QgY2hhciogaWRlbnRpZmllcikKLXsKLSAgICByZXR1cm4gb2JqZWN0LmdldCgmZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgaWRlbnRpZmllcikpOwotfQotCi1zdGF0
aWMgaW5saW5lIEpTVmFsdWUgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBq
c0Z1bmN0aW9uLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJndW1lbnRzKQot
ewotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIHJldHVybiBjYWxsKCZleGVjLCBqc0Z1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKLX0KLQot
SlNQcm9taXNlKiBSZWFkYWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcikKLXsKLSAgICBKU1ZhbHVl
IGZ1bmN0aW9uID0gZ2V0UHJvcGVydHlGcm9tT2JqZWN0KHN0YXRlLCAqbV9zb3VyY2UuZ2V0KCks
IHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7Ci0gICAg
ICAgIGlmICghZnVuY3Rpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRocm93Vk1FcnJv
cigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVT
dHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKSk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHBhcmFtZXRlcik7Ci0KLSAgICBK
U1Byb21pc2UqIHByb21pc2UgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGNhbGxGdW5jdGlv
bihzdGF0ZSwgZnVuY3Rpb24sIG1fc291cmNlLmdldCgpLCBhcmd1bWVudHMpKTsKLQotICAgIEFT
U0VSVCghKHByb21pc2UgJiYgc3RhdGUuaGFkRXhjZXB0aW9uKCkpKTsKLSAgICByZXR1cm4gcHJv
bWlzZTsKLX0KLQotc3RhdGljIHZvaWQgdGhlblByb21pc2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNQ
cm9taXNlKiBkZWZlcnJlZFByb21pc2UsIEpTVmFsdWUgZnVsbGZpbEZ1bmN0aW9uLCBKU1ZhbHVl
IHJlamVjdEZ1bmN0aW9uKQotewotICAgIEpTVmFsdWUgdGhlblZhbHVlID0gZGVmZXJyZWRQcm9t
aXNlLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPnRoZW4pOwotICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsbGZpbEZ1bmN0
aW9uKTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdEZ1bmN0aW9uKTsKLQotICAgIGNhbGxG
dW5jdGlvbihzdGF0ZSwgdGhlblZhbHVlLCBkZWZlcnJlZFByb21pc2UsIGFyZ3VtZW50cyk7Ci19
Ci0KLUpTRE9NR2xvYmFsT2JqZWN0KiBSZWFkYWJsZUpTU3RyZWFtOjpnbG9iYWxPYmplY3QoKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9zb3VyY2Ut
Pmdsb2JhbE9iamVjdCgpKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVT
dGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlYWRhYmxlU3Ry
ZWFtJiByZWFkYWJsZVN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVh
bSA9ICZyZWFkYWJsZVN0cmVhbTsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHN0YXRl
LnZtKCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtzdHJl
YW1dKEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgc3RyZWFtLT5zdGFydCgpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0pOwotfQotCi1zdGF0aWMg
aW5saW5lIHZvaWQgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiBzdHJl
YW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAmc3Ry
ZWFtOwotICAgIHN0cmVhbS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtwcm90
ZWN0ZWRTdHJlYW1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIHByb3RlY3Rl
ZFN0cmVhbS0+c3RhcnQoKTsKLSAgICB9KTsKLX0KLQotSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5x
dWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQoKQotewotICAgIFJlYWRh
YmxlSlNTdHJlYW1WYWx1ZSBjaHVuayA9IG1fcXVldWUudGFrZUZpcnN0KCk7Ci0gICAgbV90b3Rh
bFF1ZXVlU2l6ZSAtPSBjaHVuay5zaXplOwotICAgIHJldHVybiBjaHVuay52YWx1ZS5nZXQoKTsK
LX0KLQotdm9pZCBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+
OjplbnF1ZXVlQ2h1bmsoUmVhZGFibGVKU1N0cmVhbVZhbHVlJiYgY2h1bmspCi17Ci0gICAgbV90
b3RhbFF1ZXVlU2l6ZSArPSBjaHVuay5zaXplOwotICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92
ZShjaHVuaykpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRl
JiBleGVjKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKCZleGVjKTsKLQotICAgIEpTUHJvbWlz
ZSogcHJvbWlzZSA9IGludm9rZShleGVjLCAic3RhcnQiLCBqc0NvbnRyb2xsZXIoZXhlYywgZ2xv
YmFsT2JqZWN0KCkpKTsKLQotICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIXByb21pc2UpIHsKLSAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVh
bUFzeW5jKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRoZW5Qcm9taXNl
KGV4ZWMsIHByb21pc2UsIGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oZXhlYywg
KnRoaXMpLCBtX2Vycm9yRnVuY3Rpb24uZ2V0KCkpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTRnVu
Y3Rpb24qIGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMs
IFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBw
cm90ZWN0ZWRTdHJlYW0gPSAmc3RyZWFtOwotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYy52bSgpLCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksIFtw
cm90ZWN0ZWRTdHJlYW1dKEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5m
aW5pc2hQdWxsaW5nKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9QdWxsKCkKLXsK
LSAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0g
ICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0YXRlKTsKLQotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IGludm9rZShzdGF0ZSwgInB1bGwiLCBqc0NvbnRyb2xsZXIoc3RhdGUsIGdsb2JhbE9iamVjdCgp
KSk7Ci0KLSAgICBpZiAocHJvbWlzZSkKLSAgICAgICAgdGhlblByb21pc2Uoc3RhdGUsIHByb21p
c2UsIGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihzdGF0ZSwgKnRoaXMpLCBtX2Vy
cm9yRnVuY3Rpb24uZ2V0KCkpOwotCi0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSB7Ci0g
ICAgICAgIHN0b3JlRXhjZXB0aW9uKHN0YXRlKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0ZS5oYWRF
eGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiAh
cHJvbWlzZTsKLX0KLQotc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUNhbmNlbFJlc3VsdEZ1bGZp
bGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKLXsK
LSAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSA9ICZzdHJlYW07Ci0g
ICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2FsbGVlKCktPmds
b2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhlY1N0YXRlKikg
ewotICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPm5vdGlmeUNhbmNlbFN1Y2NlZWRlZCgpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0pOwotfQot
Ci1zdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRGdW5jdGlvbihF
eGVjU3RhdGUmIGV4ZWMsIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBSZWZQdHI8
UmVhZGFibGVKU1N0cmVhbT4gcHJvdGVjdGVkU3RyZWFtID0gJnN0cmVhbTsKLSAgICByZXR1cm4g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0
KCksIDEsIFN0cmluZygpLCBbcHJvdGVjdGVkU3RyZWFtXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAg
ICAgICAgcHJvdGVjdGVkU3RyZWFtLT5zdG9yZUVycm9yKCpleGVjLCBleGVjLT5hcmd1bWVudCgw
KSk7Ci0gICAgICAgIHByb3RlY3RlZFN0cmVhbS0+bm90aWZ5Q2FuY2VsRmFpbGVkKCk7Ci0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfSk7Ci19Ci0K
LWJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9DYW5jZWwoSlNWYWx1ZSByZWFzb24pCi17Ci0gICAg
RXhlY1N0YXRlJiBleGVjID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2soJmV4ZWMpOwotCi0gICAgSlNQcm9taXNlKiBwcm9taXNlID0gaW52b2tl
KGV4ZWMsICJjYW5jZWwiLCByZWFzb24pOwotCi0gICAgaWYgKHByb21pc2UpCi0gICAgICAgIHRo
ZW5Qcm9taXNlKGV4ZWMsIHByb21pc2UsIGNyZWF0ZUNhbmNlbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0
aW9uKGV4ZWMsICp0aGlzKSwgY3JlYXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRGdW5jdGlvbihleGVj
LCAqdGhpcykpOwotCi0gICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgc3Rv
cmVFeGNlcHRpb24oZXhlYyk7Ci0gICAgICAgIEFTU0VSVCghZXhlYy5oYWRFeGNlcHRpb24oKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gIXByb21pc2U7Ci19Ci0K
LVJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBz
dHJhdGVneSkKLXsKLSAgICBKU09iamVjdCoganNTb3VyY2U7Ci0gICAgaWYgKHNvdXJjZS5pc09i
amVjdCgpKQotICAgICAgICBqc1NvdXJjZSA9IHNvdXJjZS5nZXRPYmplY3QoKTsKLSAgICBlbHNl
IGlmICghc291cmNlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigm
c3RhdGUsICJBcmd1bWVudCAxIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIG11c3QgYmUg
YW4gb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0gZWxzZQotICAgICAg
ICBqc1NvdXJjZSA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShzdGF0ZS52bSgpLCBKU0ZpbmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLCBqc051bGwoKSwgMSkpOwotCi0gICAgZG91YmxlIGhpZ2hXYXRlck1hcmsgPSAxOwot
ICAgIEpTRnVuY3Rpb24qIHNpemVGdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKCFzdHJhdGVn
eS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIGlmIChzdHJhdGVneS5nZXQoImhpZ2hX
YXRlck1hcmsiLCBoaWdoV2F0ZXJNYXJrKSkgewotICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4o
aGlnaFdhdGVyTWFyaykpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0
ZSwgIidoaWdoV2F0ZXJNYXJrJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0
cnVjdG9yIGNhbm5vdCBiZSBOYU4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwgMCkgewotICAg
ICAgICAgICAgICAgIHRocm93Vk1SYW5nZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBv
ZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBuZWdh
dGl2ZSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpZiAoc3RyYXRlZ3kuZ2V0KCJzaXplIiwgc2l6ZUZ1
bmN0aW9uKSkgewotICAgICAgICAgICAgaWYgKCFzaXplRnVuY3Rpb24pIHsKLSAgICAgICAgICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIidzaXplJyBvZiBBcmd1bWVudCAyIG9mIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRS
ZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtKHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywg
c2l6ZUZ1bmN0aW9uKSk7Ci0gICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3RhdGUpOwotCi0g
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHJldHVybiByZWFkYWJsZVN0cmVhbTsKLX0KLQotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFi
bGVKU1N0cmVhbShFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlLCBkb3VibGUgaGln
aFdhdGVyTWFyaywgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVhZGFibGVFbnF1
ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0cmVhbVZhbHVlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUoJnN0YXRlKSwgaGlnaFdhdGVyTWFyaykKLXsKLSAgICBtX3NvdXJjZS5z
ZXQoc3RhdGUudm0oKSwgc291cmNlKTsKLSAgICAvLyBXZSBkbyBub3QgdGFrZSBhIFJlZiB0byB0
aGUgc3RyZWFtIGFzIHRoaXMgd291bGQgY2F1c2UgYSBSZWYgY3ljbGUuCi0gICAgLy8gVGhlIHJl
c29sdXRpb24gY2FsbGJhY2sgdXNlZCBqb2ludGx5IHdpdGggbV9lcnJvckZ1bmN0aW9uIGFzIHBy
b21pc2UgY2FsbGJhY2tzIHNob3VsZCBwcm90ZWN0IHRoZSBzdHJlYW0gaW5zdGVhZC4KLSAgICBt
X2Vycm9yRnVuY3Rpb24uc2V0KHN0YXRlLnZtKCksIEpTRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52
bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbdGhpc10o
RXhlY1N0YXRlKiBzdGF0ZSkgewotICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICB9KSk7Ci0gICAgaWYgKHNpemVGdW5jdGlvbikKLSAgICAgICAgbV9zaXplRnVuY3Rp
b24uc2V0KHN0YXRlLnZtKCksIHNpemVGdW5jdGlvbik7Ci19Ci0KLUpTVmFsdWUgUmVhZGFibGVK
U1N0cmVhbTo6anNDb250cm9sbGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KCp0aGlz
KTsKLSAgICByZXR1cm4gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0LCBtX2NvbnRyb2xsZXIuZ2V0
KCkpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVj
KQotewotICAgIGlmIChpc0Nsb3NlUmVxdWVzdGVkKCkgfHwgaXNFcnJvcmVkKCkpIHsKLSAgICAg
ICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2hhbmdlU3Rh
dGVUb0Nsb3NlZCgpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBpZiAoIWlzUmVhZGFibGUoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBzdG9yZUVycm9yKHN0YXRlLCB2YWx1ZSk7Ci19Ci0KLXZv
aWQgUmVhZGFibGVKU1N0cmVhbTo6c3RvcmVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRl
KQotewotICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gc3RhdGUuZXhjZXB0aW9uKCktPnZhbHVlKCk7
Ci0gICAgc3RhdGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICBzdG9yZUVycm9yKHN0YXRlLCBleGNl
cHRpb24pOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCi17Ci0gICAgaWYgKG1fZXJyb3IpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX2Vycm9yLnNldChleGVjLnZtKCksIGVycm9yKTsKLQotICAgIGNoYW5n
ZVN0YXRlVG9FcnJvcmVkKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6ZW5xdWV1ZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBjaHVuaykKLXsKLSAgICBpZiAoaXNF
cnJvcmVkKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgZXJyb3IoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGlzQ2xvc2VSZXF1ZXN0ZWQoKSkgewotICAgICAg
ICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBUeXBlRXJy
b3IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWlzUmVhZGFibGUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlc29sdmVSZWFkQ2FsbGJhY2soY2h1bmspKSB7Ci0g
ICAgICAgIHB1bGwoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRvdWJsZSBzaXpl
ID0gcmV0cmlldmVDaHVua1NpemUoc3RhdGUsIGNodW5rKTsKLSAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVucXVldWVDaHVuayh7IEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj4oc3RhdGUudm0oKSwgY2h1bmspLCBzaXplIH0pOwotCi0gICAgcHVs
bCgpOwotfQotCi1kb3VibGUgUmVhZGFibGVKU1N0cmVhbTo6cmV0cmlldmVDaHVua1NpemUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBjaHVuaykKLXsKLSAgICBpZiAoIW1fc2l6ZUZ1bmN0aW9u
KQotICAgICAgICByZXR1cm4gMTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGNodW5rKTsKLQotICAgIEpTVmFsdWUgc2l6ZVZhbHVl
ID0gY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX3NpemVGdW5jdGlvbi5nZXQoKSwganNVbmRlZmluZWQo
KSwgYXJndW1lbnRzKTsKLSAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAg
c3RvcmVFcnJvcihzdGF0ZSwgc3RhdGUuZXhjZXB0aW9uKCktPnZhbHVlKCkpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBkb3VibGUgc2l6ZSA9IHNpemVWYWx1ZS50b051bWJlcigm
c3RhdGUpOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgewotICAgICAgICBzdG9yZUVy
cm9yKHN0YXRlLCBzdGF0ZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIGlmICghc3RkOjppc2Zpbml0ZShzaXplKSB8fCBzaXplIDwgMCkgewot
ICAgICAgICBzdG9yZUVycm9yKHN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBSYW5n
ZUVycm9yKSk7Ci0gICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGVycm9yKCkpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2l6ZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlSlNTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkY2Y2OWZlMmQy
MmM4MGZhMTA0M2E5NmZkM2YzMDNiODFjMWM1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMk8xNSBDYW5vbiBJbmMuIDIwMTUKLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEg
Uy5MLiAyMDE1Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWly
ZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENB
Tk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgot
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVhZGFibGVKU1N0cmVhbV9oCi0jZGVmaW5lIFJlYWRh
YmxlSlNTdHJlYW1faAotCi0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiUmVh
ZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPGhlYXAv
U3Ryb25nSW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaD4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgSlNGdW5jdGlvbjsKLWNs
YXNzIEpTUHJvbWlzZTsKLX0KLSAgICAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNE
T01HbG9iYWxPYmplY3Q7Ci1jbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7Ci0KLXR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLXN0cnVjdCBSZWFkYWJsZUpTU3RyZWFtVmFsdWUgewot
ICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gdmFsdWU7Ci0gICAgZG91YmxlIHNpemU7Ci19
OwotCi10ZW1wbGF0ZTw+IGNsYXNzIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNT
dHJlYW1WYWx1ZT4gOiBwdWJsaWMgUmVhZGFibGVTdHJlYW0gewotcHVibGljOgotICAgIGRvdWJs
ZSBkZXNpcmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaFdhdGVyTWFyayAtIG1fdG90YWxR
dWV1ZVNpemU7IH0KLQotcHJvdGVjdGVkOgotICAgIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBoaWdoV2F0ZXJNYXJrKQotICAg
ICAgICA6IFJlYWRhYmxlU3RyZWFtKGNvbnRleHQpCi0gICAgICAgICwgbV9oaWdoV2F0ZXJNYXJr
KGhpZ2hXYXRlck1hcmspIHsgfQotCi0gICAgdm9pZCBlbnF1ZXVlQ2h1bmsoUmVhZGFibGVKU1N0
cmVhbVZhbHVlJiYpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZhbHVlcygp
IG92ZXJyaWRlIHsgbV9xdWV1ZS5jbGVhcigpOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0Vub3Vn
aFZhbHVlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRlc2lyZWRTaXplKCkgPD0gMDsgfQot
ICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcXVl
dWUuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpIG92ZXJyaWRlOwot
Ci0gICAgRGVxdWU8UmVhZGFibGVKU1N0cmVhbVZhbHVlPiBtX3F1ZXVlOwotICAgIGRvdWJsZSBt
X3RvdGFsUXVldWVTaXplIHsgMCB9OwotICAgIGRvdWJsZSBtX2hpZ2hXYXRlck1hcms7Ci19Owot
Ci1jbGFzcyBSZWFkYWJsZUpTU3RyZWFtIGZpbmFsIDogcHVibGljIFJlYWRhYmxlRW5xdWV1aW5n
U3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8UmVhZGFibGVKU1N0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
LCBjb25zdCBEaWN0aW9uYXJ5Jik7Ci0KLSAgICBKU0M6OkpTVmFsdWUganNDb250cm9sbGVyKEpT
Qzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGNsb3NlKEV4Y2Vw
dGlvbkNvZGUmKTsKLQotICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGVycm9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9l
cnJvci5nZXQoKTsgfQotCi0gICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKLSAgICB2b2lkIGVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBF
eGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqLCBkb3VibGUsIEpTQzo6SlNGdW5jdGlvbiopOwotCi0g
ICAgdm9pZCBkb1N0YXJ0KEpTQzo6RXhlY1N0YXRlJik7Ci0KLSAgICBKU0M6OkpTUHJvbWlzZSog
aW52b2tlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0
ZXIpOwotICAgIHZvaWQgc3RvcmVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUmKTsKLQotICAgIHZp
cnR1YWwgYm9vbCBkb1B1bGwoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZG9DYW5jZWwo
SlNDOjpKU1ZhbHVlKSBvdmVycmlkZTsKLQotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoKTsKLQotICAgIGRvdWJsZSByZXRyaWV2ZUNodW5rU2l6ZShKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1Db250
cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZCBjb25zaWRlciBu
b3QgdXNpbmcgSlNDOjpTdHJvbmcsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ2Mjc4Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOwot
ICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNGdW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9uOwotCi0gICAg
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9zb3VyY2U7Ci0gICAgSlNDOjpTdHJvbmc8SlND
OjpKU0Z1bmN0aW9uPiBtX3NpemVGdW5jdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2VuZGlmIC8vIFJlYWRhYmxl
SlNTdHJlYW1faApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGIyYzI0YjI0Y2Q4M2E5MzEyN2I2MjE0YzkxNjUyZWE4OGZiOGM4
MmUuLmRmNzA0OGUyNzM5NTc5ZWJlOGRjN2JiYzIxNTlhM2UyOWE4NjRjMDMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNS0wOC0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFNob3VsZCBzdHJlYW1zIEFQSSBiZSBtb3ZlZCB0byBKU0M/
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcwOTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3Rv
cnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbS1k
ZXByZWNhdGVkL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1tYXZlcmlja3MvanMvZG9tL2dsb2JhbC1jb25z
dHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LXlvc2VtaXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1h
dHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vanMvZG9tL2ds
b2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA4LTA2ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBnZXRfYnlf
aWQgbGlrZSBJQyBpbnRvIGdldF9ieV92YWwgd2hlbiB0aGUgZ2l2ZW4gbmFtZSBpcyBTdHJpbmcg
b3IgU3ltYm9sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVj
dG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9nbG9iYWwt
Y29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQ4N2ZmY2Q0ZGNmMTNh
MmU1MzI0NDQ0NGQ0MGJkY2U2MTM1MWI5YzMuLmI3NTc2YmEzYTQ0ODQzNDBjZDA2Yjc4Y2E4OTY5
YWI2ZmY4NmEyOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9nbG9iYWwtY29uc3Ry
dWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9n
bG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC05MzgsMTEgKzkz
OCw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5n
ZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0
JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
UmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFzT3duUHJv
cGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFs
c2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJs
ZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVl
CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLnZh
bHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5KCdzZXQn
KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2pzL2RvbS9n
bG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0CmluZGV4IGZiOWY3NjQwNzZhYzgxNjUwZWFhNjgzNGM0ZjllNjYxMzAwOWM4NmEuLjE5
MjJkZmQ3NzMxNGFhOGVhNjA2MjAyMTVmODI0OGJmOTU3NTdjNjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvanMvZG9tL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTk5MywxMSArOTkzLDYg
QEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhj
ZXB0aW9uJykuaGFzT3duUHJvcGVydHkoJ2cKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdzZXQnKSBp
cyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1Jh
bmdlRXhjZXB0aW9uJykuZW51bWVyYWJsZSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuY29uZmlndXJhYmxlIGlz
IHRydWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFk
YWJsZVN0cmVhbScpLnZhbHVlIGlzIFJlYWRhYmxlU3RyZWFtCi1QQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0
eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQot
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3Ry
ZWFtJykuZW51bWVyYWJsZSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykudmFsdWUg
aXMgUmVjdAogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1Jl
Y3QnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlz
IGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQKaW5kZXggYjBkODEwZjEzMjM2YzMyMDJkYjE2ZTc0ODM5YzU3OGQ0NjFlZTk2OC4uM2M0OTVj
YWZhN2QwZTU5ZDBlOTAzYzFkZjg3ZjhlODg0ODgxOWQ0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9qcy9kb20vZ2xvYmFsLWNv
bnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMTAxMywxMSArMTAxMyw2IEBA
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2Vw
dGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMg
ZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5n
ZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNvbmZpZ3VyYWJsZSBpcyB0
cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFi
bGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFzT3duUHJvcGVydHko
J2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKLVBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVh
bScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCiBQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLnZhbHVlIGlz
IFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0
JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBm
YWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbS1kZXByZWNhdGVk
L2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbS1kZXByZWNhdGVkL2pzL2RvbS9nbG9iYWwtY29uc3Ry
dWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGQ4YTJlZTI3YWUxMWNiMzQ2MTZl
ZWMzMGRlOGE0NGI5YzUzZDNhY2EuLjY2OGFhYWY3MTBkMWZiNTZiZTkzMDgxMGNmMGRkOTgyNWRh
ZTRlYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW0tZGVwcmVjYXRl
ZC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltLWRlcHJlY2F0ZWQvanMvZG9tL2dsb2JhbC1j
b25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTk0MywxMSArOTQzLDYgQEAg
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0
aW9uJykuaGFzT3duUHJvcGVydHkoJ2cKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBm
YWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1Jhbmdl
RXhjZXB0aW9uJykuZW51bWVyYWJsZSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuY29uZmlndXJhYmxlIGlzIHRy
dWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJs
ZVN0cmVhbScpLnZhbHVlIGlzIFJlYWRhYmxlU3RyZWFtCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgn
Z2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdSZWFkYWJsZVN0cmVhbScpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQotUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFt
JykuZW51bWVyYWJsZSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykudmFsdWUgaXMg
UmVjdAogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlY3Qn
KS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZh
bHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbWF2ZXJpY2tzL2pzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLW1hdmVyaWNrcy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCAzOGI4MmRlNWIxNWQ3MzMwYTgzNDI4ZWU5NmQ1MzRk
MDBkNjZkZGU3Li42ZDBmNTIzNDlmZGJhYTc1Nzk3ZWI0ZjdmYTRlZTJkZGE1NWQzMjExIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbWF2ZXJpY2tzL2pzL2RvbS9nbG9iYWwt
Y29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1tYXZlcmlja3MvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQKQEAgLTk4OCwxMSArOTg4LDYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuaGFzT3duUHJvcGVydHko
J2cKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4
Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuZW51bWVyYWJs
ZSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J1JhbmdlRXhjZXB0aW9uJykuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLnZhbHVlIGlzIFJl
YWRhYmxlU3RyZWFtCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFs
LCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScp
Lmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuZW51bWVyYWJsZSBpcyBmYWxz
ZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxl
U3RyZWFtJykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykudmFsdWUgaXMgUmVjdAogUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlY3QnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0
JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1pdGUvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1p
dGUvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5k
ZXggOTM1MzUzMGY0MTdlOTk5M2E5ZTg3OTNmMGRmYTI0MzRmMTY0NjA5OS4uNzBkZTc5OGFjNDA0
NjM1N2I4NzY4NzdlNzlhOTYxOTMzODVhYTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXlvc2VtaXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy15b3NlbWl0ZS9qcy9k
b20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMTAwOCwx
MSArMTAwOCw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0
eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNvbmZp
Z3VyYWJsZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnUmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFz
T3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0Jykg
aXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdS
ZWFkYWJsZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJsZSBp
cyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVj
dCcpLnZhbHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5
KCdzZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pz
L2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0CmluZGV4IGZiNDhmNzdiZmU0NDRkMWFlMDA4YzBhMzUwMmUxYjRhN2ZiZTAy
NWEuLmZlMzk0MGEzYmFkYjMxNDlhYWU1MDI3OWIzODQ2MjgzNzE1Mzg2MDQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTEwMDgsMTEg
KzEwMDgsNiBAQCBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
UmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0eSgnZwogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuaGFzT3duUHJvcGVydHko
J3NldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5jb25maWd1
cmFibGUgaXMgdHJ1ZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ1JlYWRhYmxlU3RyZWFtJykudmFsdWUgaXMgUmVhZGFibGVTdHJlYW0KLVBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmhhc093
blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlz
IGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVh
ZGFibGVTdHJlYW0nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlY3Qn
KS52YWx1ZSBpcyBSZWN0CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlY3QnKS5oYXNPd25Qcm9wZXJ0eSgn
c2V0JykgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9k
b20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dAppbmRleCAxODk1NjcxMmQ1ZDY3NzUwZjg2Njc4OTNlMDgyNDkyYTEyNjJjNzM2
Li44ODEzYzJjOGQ1NzE5NDA2Y2VkZTYzMWYwZTczODljZDA2NWRlMDNkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pzL2RvbS9n
bG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC04NTgsMTEgKzg1
OCw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5n
ZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0
JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
UmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFzT3duUHJv
cGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFs
c2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJs
ZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVl
CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLnZh
bHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5KCdzZXQn
KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKaW5k
ZXggMzczNTc3ZWI5ODIxZDIwNzU0ZGU4NzcxYTYwZmFlNTIzOGM5YjVmNi4uOGRmYjMzZDRjMmE5
Mzk4ZTUxNmNhYmQ5ZDUzYzY2MDM4NWM2NjM2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1j
aGVja3MtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogCiBQQVNTIENhbiBnZXQgdGhlIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCiBQQVNTIENhbiBnZXQg
dGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotRkFJ
TCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggd29ya3MgZ2VuZXJpY2FsbHkg
b24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVh
bS5waXBlVGhyb3VnaCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KG9iaiwgZ2V0dGVyTmFtZSkuZ2V0JykKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRh
YmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQ
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApp
bmRleCA0YWQ5MTRlOGFlMmExODA0MDczMmI2NjgzMDg2YWEyODNkZjYyYjcyLi40MzI5MGFmMzNk
ODQ1MGQ3MmQxM2NkYjRjNDdmZTQxNWQ2MWJlNzZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsMTEgQEAKIAogUEFTUyBSZWFk
YWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCiBQQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKLUZBSUwgUmVhZGFi
bGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVy
dGllcyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0
aG9kcyBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgNyBnb3QgNgorUEFTUyBSZWFkYWJsZVN0cmVh
bSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAog
UEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5j
dGlvbiBzdGFydCBhcmd1bWVudHMgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNh
biBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVu
dCAKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBw
cm9wZXIgcGFyYW1ldGVycyBhc3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVy
YWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBz
aG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIAogUEFTUyBSZWFkYWJs
ZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAK
IFBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qg
d2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlIAogUEFTUyBSZWFkYWJsZVN0cmVh
bSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBk
NWU2ZDNmZTUxNTVjZjc0YTkwMmMzODQ5Nzk0OTM3MzlmNzYyZDM4Li5kODQ5Mjg4NWU4ZDlhOTRj
ZTU4ZmY2OThlMTc4MmMyMmQyMjQ5YWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogUEFT
UyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5
IAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVh
ZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFz
c2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCA0CitQQVNT
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBs
aXN0IG9mIHByb3BlcnRpZXMgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91
bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKIFBBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAogUEFTUyBH
ZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBp
ZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikg
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0
CmluZGV4IGU3NWYyNmYxMTBjYjJkN2ZiODE0YWVjNGMzNTMwMjM2OTJmYjc1YjIuLmEwMzI0Mzg3
ZDdhZWNjNjc0Yzc4N2YwZTNjOWRmNmVkODcwNTBiMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0CkBAIC0xLDEyICsxLDEyIEBACiAK
LUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9m
IHR3byBSZWFkYWJsZVN0cmVhbXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRl
ZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZm
ZWN0aW5nIHRoZSBvdGhlciBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCkn
LCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFs
dWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggcnMudGVlIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQotRkFJTCBSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUg
dG8gYm90aCBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCkn
LCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2Fu
Y2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiBycy50ZWUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3Qg
YnJhbmNoMSBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVl
JyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJv
dGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBh
cnJheSBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBp
cyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5j
ZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9u
IGJyYW5jaGVzIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50
ZWUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRo
ZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIHJzLnRlZSBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkK
LUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxk
IGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJl
YW1zIGFzc2VydF90cnVlOiByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5IGV4cGVjdGVk
IHRydWUgZ290IGZhbHNlCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFi
bGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90
aGVyIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmdldFJl
YWRlcicpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVh
bCBhY3Jvc3MgZWFjaCBicmFuY2ggdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ2JyYW5jaDEuZ2V0UmVhZGVyJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJv
cnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMgdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0UmVhZGVyJykKK0ZB
SUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGlt
cGFjdCBicmFuY2gyIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFu
Y2gxLmNhbmNlbCcpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5j
aDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMSB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnYnJhbmNoMi5jYW5jZWwnKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFz
b25zIGludG8gYW4gYXJyYXkgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J2JyYW5jaDEuY2FuY2VsJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5nIHRv
IGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byByZWpl
Y3Qgb24gYnJhbmNoZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2Jy
YW5jaDEuY2FuY2VsJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBv
cmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmdldFJlYWRlcicpCitGQUlMIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlh
dGVseSBlcnJvciB0aGUgYnJhbmNoZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ2JyYW5jaDEuZ2V0UmVhZGVyJykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCAwZTM4NTUxZjdl
NzU3NTE2ZGZkZmNiODA2YjFhNmJlZjU3NjkyNWZmLi40MjUwNmIwZDk0ZTgxMjBhNGYyMzdlMDJm
NDYyZGUxMjhiZmY5MjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAogUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAotRkFJ
TCBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFzc2Vy
dF9lcXVhbHM6IGhhcyBhIHRlZSBtZXRob2QgZXhwZWN0ZWQgImZ1bmN0aW9uIiBidXQgZ290ICJ1
bmRlZmluZWQiCitQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHBy
b3BlcnRpZXMgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRh
YmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVj
dCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAogUEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258483</attachid>
            <date>2015-08-07 05:06:48 -0700</date>
            <delta_ts>2015-08-21 03:37:46 -0700</delta_ts>
            <desc>Gauging migration to JSC (+some comments)</desc>
            <filename>bug-147092-20150807090637.patch</filename>
            <type>text/plain</type>
            <size>229603</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDIzNTc0ODhkZTYwM2ZiMDdlODRiMzAyZTNmYjNhZWZjMjBjZGJiLi5jM2QyY2QzOGRlOTkxMzcy
MzBhNjQyMWFkYjBmY2FlZjJjMjBjYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTUtMDgtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KKworICAgICAgICBTaG91bGQgc3RyZWFtcyBBUEkgYmUgbW92ZWQgdG8gSlND
PworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zp
bmcgV2ViQ29yZSBSZWFkYWJsZVN0cmVhbSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgSXQgaXMg
cmVwbGFjZWQgYnkgYSBKYXZhU2NyaXB0Q29yZSBpbXBsZW1lbnRhdGlvbiwgbWFpbmx5IGJhc2Vk
IG9uIEpTIGJ1aWx0aW5zLgorICAgICAgICBSZWFkYWJsZVN0cmVhbSBpcyBub3QgZGlyZWN0bHkg
YXZhaWxhYmxlIGJ5IEpTIGVudmlyb25tZW50cy4KKyAgICAgICAgSW5zdGVhZCwgdGhlIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIChkZWZpbmVkIGluIEpTQykgaXMgYWRkZWQgdG8gSlNET01X
aW5kb3cKKyAgICAgICAgdG8gZW5hYmxlIGdldHRpbmcgYWNjZXNzIHRvIGl0IGZyb20gRE9NIGVu
dmlyb25tZW50cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanM6IEFkZGVk
LgorICAgICAgICAoaXNSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChpc1JlYWRhYmxlU3RyZWFt
UmVhZGVyKToKKyAgICAgICAgKGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAg
KC5zdHJhdGVneS5zaXplKToKKyAgICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6Cisg
ICAgICAgIChpbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoaW5pdGlh
bGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChlcnJvclJlYWRhYmxlU3Ry
ZWFtKToKKyAgICAgICAgKHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwuc2hvdWxkUmVhZGFibGVT
dHJlYW1QdWxsKToKKyAgICAgICAgKHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwpOgorICAgICAg
ICAoZ2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZSk6CisgICAgICAgIChyZWxlYXNlUmVhZGFi
bGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoY2FuY2VsUmVhZGFibGVTdHJlYW0pOgorICAgICAg
ICAoZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFibGVT
dHJlYW0pOgorICAgICAgICAoY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChl
bnF1ZXVlSW5SZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFt
UmVhZGVyKToKKyAgICAgICAgKGludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tl
T3JOb29wKToKKyAgICAgICAgKiBidWlsdGlucy9SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuanM6
IEFkZGVkLgorICAgICAgICAoY2FuY2VsKToKKyAgICAgICAgKGdldFJlYWRlcik6CisgICAgICAg
IChwaXBlVGhyb3VnaCk6CisgICAgICAgIChwaXBlVG8pOgorICAgICAgICAodGVlKToKKyAgICAg
ICAgKGxvY2tlZCk6CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChlbnF1ZXVlKToKKyAgICAgICAgKGVycm9y
KToKKyAgICAgICAgKGNsb3NlKToKKyAgICAgICAgKGRlc2lyZWRTaXplKToKKyAgICAgICAgKiBi
dWlsdGlucy9SZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAg
ICAoY2FuY2VsKToKKyAgICAgICAgKHJlYWQpOgorICAgICAgICAocmVsZWFzZUxvY2spOgorICAg
ICAgICAoY2xvc2VkKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplUmVhZGFi
bGVTdHJlYW1GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFs
aXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRH
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFk
ZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1Db250cm9sbGVy
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNS
ZWFkYWJsZVN0cmVhbTo6SlNSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW06OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVBy
b3RvdHlwZTo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTUmVh
ZGFibGVTdHJlYW1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNS
ZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpK
U1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToK
KyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6
CisgICAgICAgIChKU0M6OmpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
KToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlclByb3RvdHlwZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKEpTQzo6SlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKEpTQzo6anNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVG
dW5jRGVzaXJlZFNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OkpTUmVhZGFibGVTdHJl
YW1SZWFkZXIpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQ
cm90b3R5cGU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
Q29uc3RydWN0b3I6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBl
RnVuY0Nsb3NlZCk6CisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6
IEFkZGVkLgorCiAyMDE1LTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIEludHJvZHVjZSBnZXRfYnlfaWQgbGlrZSBJQyBpbnRvIGdldF9ieV92
YWwgd2hlbiB0aGUgZ2l2ZW4gbmFtZSBpcyBTdHJpbmcgb3IgU3ltYm9sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFlZDQwNWY3NzBhMzE1ZGY5NzNmYjU4NGI5ZmM0MjRiM2IzODViMC4uOTBjYzc4MGYwMTVlZGMz
ZjZhM2M1OTg2MTZlMGRhMzI4YmIwOWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisy
MDE1LTA4LTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisK
KyAgICAgICAgU2hvdWxkIHN0cmVhbXMgQVBJIGJlIG1vdmVkIHRvIEpTQz8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzA5MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFt
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dSZWFkYWJsZVN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOiBSZW1v
dmVkLgorCiAyMDE1LTA4LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4K
IAogICAgICAgICBTb3VyY2UvV2ViQ29yZS9jcnlwdG8gY29kZSBzaG91bGQgcGFzcyBzdGQ6OmZ1
bmN0aW9uPD4gb2JqZWN0cyB0aHJvdWdoIHJ2YWx1ZSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTA0MTNiM2Y4NjI3NWQ1Mzg2ZTdiNGFhMDYwYzQzOTMw
MDVhYzQ1NC4uMWM0ZTBmZGFmYmQ3NDA4MDg2ZjU1NGZhM2JiNmFlZjg4YTk2MGYyZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTI5LDYgKzUyOSw5IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5jcHAKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCiAgICAg
cnVudGltZS9KU1Byb3h5LmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5jcHAKKyAg
ICBydW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcAorICAgIHJ1bnRpbWUvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCiAgICAgcnVu
dGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXQuY3Bw
CkBAIC02NDUsNiArNjQ4LDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAogICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNSZWFk
YWJsZVN0cmVhbS5jcHAKKyAgICBydW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNw
cAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKICAgICBydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IGQwNzEyNjUyYTA5YjFjOGFmNTFkYTJlNjZkOWExODRiMzA1
OWFlNTcuLjFmMTc0MzU1ZTk1NWJiNWJmODA3NDIzMDdlODY1ODViYmQ0YTM3ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01Miw2ICs1Miw5IEBAIGFs
bCA6IFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKICAgICBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSlNSZWFkYWJs
ZVN0cmVhbS5sdXQuaCBcCisgICAgSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5sdXQuaCBcCisgICAg
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBc
CiAgICAgTGV4ZXIubHV0LmggXAogICAgIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IGFhNGE1MGExY2I0ZDg2MGE4MTVm
MjhhYjVlMjNiZmQ1ODEyN2ZkZDQuLmU3YTljNmZiZTU1NjE0NjVkODY3YjM4NmE5M2JmYTdiMzYx
Mjg5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzgwLDYg
Kzc4MCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNSZWFkYWJsZVN0cmVhbS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCIgLz4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXQuY3BwIiAvPgpA
QCAtOTExLDYgKzkxNCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNPTk9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21p
c2VQcm90b3R5cGUubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbS5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEtleXdvcmRMb29rdXAubHV0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTGV4ZXIu
bHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC0xNjE3LDYgKzE2MjMsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUmVhZGFibGVTdHJl
YW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Njb3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNTZXQuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
N2I2OTk4ZGE3MGQ5NTI1ODVjMmRiYWE3ODk2NThhMGVjNmUwOTQ0YS4uYjI3NDhkNTZhYjA2MWU2
MjM0NDAwOWQyNDY3NmUyOTkxMWQ0NmE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTk0OCw2ICs5NDgsMTIgQEAKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVj
dHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0MkQxN0M5
OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxp
YiAqLzsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBB
RDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKKwkJNDFDOENGRjYxQjcw
RjczMDAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDOENGRjQxQjcwRjU0RTAwQzM3QUE3IC8qIEpT
UmVhZGFibGVTdHJlYW0uY3BwICovOyB9OworCQk0MUM4Q0ZGNzFCNzBGNzM2MDBDMzdBQTcgLyog
SlNSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDOENGRjUxQjcwRjU0RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW0uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUM4Q0ZG
QzFCNzEwN0E0MDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDOENGRjgxQjcxMDc5
RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsgfTsKKwkJNDFD
OENGRkQxQjcxMDdBODAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGOTFCNzEw
NzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUM4Q0ZGRTFCNzEwN0FCMDBD
MzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGQTFCNzEwNzlGMDBDMzdBQTcgLyogSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi87IH07CisJCTQxQzhDRkZGMUI3MTA3QUUwMEMzN0FB
NyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGQjFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQzNDBBNDg0MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDBBNDgyMUE5MDUx
QUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCAqLzsgfTsKIAkJNDM0MEE0ODUxQTkwNTFBRjAw
RDczQ0NBIC8qIE1hdGhDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzNDBBNDgzMUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmggKi87
IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYx
MDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKQEAgLTI2OTcs
NiArMjcwMywxMiBAQAogCQkyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURU
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVJ
RFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFGNzM4MkIxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBuYW1lID0gbGliei5keWxpYjsgcGF0aCA9IHVzci9saWIvbGliei5keWxpYjsgc291cmNlVHJl
ZSA9IFNES1JPT1Q7IH07CisJCTQxQzhDRkY0MUI3MEY1NEUwMEMzN0FBNyAvKiBKU1JlYWRhYmxl
U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFi
bGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUM4Q0ZGNTFCNzBG
NTRFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxQzhDRkY4MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzhDRkY5
MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUM4Q0ZGQTFCNzEwNzlGMDBDMzdBQTcgLyog
SlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDOENGRkIxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQwQTQ4MjFBOTA1MUFGMDBE
NzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXRoQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM0MEE0
ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWF0aENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDQyLDYgKzQ0NTQsMTIgQEAKIAkJN0VGNkUwQkIw
RUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTQxQzhDRkY4MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlci5jcHAgKi8sCisJCQkJNDFDOENGRjkxQjcxMDc5RjAwQzM3QUE3IC8q
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCisJCQkJNDFDOENGRkExQjcxMDc5RjAw
QzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICovLAorCQkJCTQxQzhDRkZCMUI3
MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8sCisJCQkJNDFDOENG
RjQxQjcwRjU0RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW0uY3BwICovLAorCQkJCTQxQzhD
RkY1MUI3MEY1NEUwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi8sCiAJCQkJQkNGNjA1
MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJMEZFMDUwMEMxQUE5MDkxMTAwRDMzQjMz
IC8qIEFyZ3VtZW50c01vZGUuaCAqLywKQEAgLTU5NzYsNiArNTk5NCw3IEBACiAJCQkJMEZGNDI3
NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFDOENGRjcxQjcwRjczNjAwQzM3QUE3IC8qIEpTUmVhZGFi
bGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAv
KiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0M4MjgxNDEx
NUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkMx
NERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtNjAzMCw2ICs2
MDQ5LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyRjJBQTM4MUIwQkVERTMwMDYx
MEM3QSAvKiBERkdMYXp5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZG
NzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzhDRkZEMUI3
MTA3QTgwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0Yy
NDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02NjczLDYgKzY2
OTMsNyBAQAogCQkJCTg2NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0YxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzhDRkZGMUI3MTA3QUUwMEMzN0FB
NyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUY0
MDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRD
b2RlQmxvY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzI1MSw2ICs3MjcyLDcgQEAKIAkJCQlBNUZE
MDA3OTE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4MkUxMDdFQzA1NzAwMTNFN0IyIC8qIENvbnN0
cnVjdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDOENGRkMxQjcxMDdBNDAwQzM3QUE3
IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY2OSw2ICs3NjkxLDcgQEAKIAkJ
CQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMTEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJF
QzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxQzhDRkZFMUI3MTA3QUIwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
NUVCMjlCMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjU0NkY1MjExQTMyQjMxMzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2NTUyNUZDNTFBNkREODAxMDA3QjU0OTUgLyogTnVsbFNldHRl
ckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzc1MSw2ICs3Nzc0LDcgQEAKIAkJCQlB
NTRDRjJGNTE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTcyOTlEQTUxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRDEyMDJGMUE4QUVEMTIwMDBGNTI4MCAvKiBGVExKU0NhbGxCYXNl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxQzhDRkY2MUI3MEY3MzAwMEMzN0FBNyAvKiBKU1Jl
YWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTUyQUJDMUI0ODdBNzcwMEMz
NjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzkwREQ2
RDE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTcyOTlEQTExN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWFkYWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJs
ZVN0cmVhbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDkxOWU2NjUyMTI0MzBjNmNhYzMyNjQ2ZGJjODc5MGEw
ZWUxZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0wLDAgKzEsMzcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gVE9ETzogQWRkIGV4Y2VwdGlvbiBtZXNzYWdlcy4KKworZnVuY3Rpb24gaXNSZWFk
YWJsZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBp
c09iamVjdChzdHJlYW0pICYmICEhc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlOworfQorCitmdW5j
dGlvbiBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KHJlYWRlcikgJiYgdHlwZW9mIHJlYWRlci5Ab3duZXJS
ZWFkYWJsZVN0cmVhbSAhPT0gInVuZGVmaW5lZCI7Cit9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyKGNvbnRyb2xsZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
cmV0dXJuIEBpc09iamVjdChjb250cm9sbGVyKSAmJiAhIWNvbnRyb2xsZXIuQGNvbnRyb2xsZWRS
ZWFkYWJsZVN0cmVhbTsKK30KKworZnVuY3Rpb24gaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKHVu
ZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgICBp
ZiAodHlwZW9mIHVuZGVybHlpbmdTb3VyY2UgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgdW5k
ZXJseWluZ1NvdXJjZSA9IHsgfTsKKyAgICAgaWYgKHR5cGVvZiBzdHJhdGVneSA9PT0gInVuZGVm
aW5lZCIpCisgICAgICAgICBzdHJhdGVneSA9IHsgaGlnaFdhdGVyTWFyazogMSwgc2l6ZTogZnVu
Y3Rpb24oKSB7IHJldHVybiAxOyB9IH07CisKKyAgICBpZiAoIUBpc09iamVjdCh1bmRlcmx5aW5n
U291cmNlKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1bWVudCIpOworCisgICAgaWYg
KHN0cmF0ZWd5ICE9PSB1bmRlZmluZWQgJiYgIUBpc09iamVjdChzdHJhdGVneSkpCisgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBh
biBvYmplY3QgYXMgc2Vjb25kIGFyZ3VtZW50LCBpZiBhbnkiKTsKKworICAgIHRoaXMuQHVuZGVy
bHlpbmdTb3VyY2UgPSB1bmRlcmx5aW5nU291cmNlOworCisgICAgdGhpcy5AcXVldWUgPSBbXTsK
KyAgICB0aGlzLkBxdWV1ZVNpemUgPSAwOworICAgIHRoaXMuQHN0YXRlID0gQHJlYWRhYmxlU3Ry
ZWFtUmVhZGFibGU7IAorICAgIHRoaXMuQHN0YXJ0ZWQgPSBmYWxzZTsKKyAgICB0aGlzLkBjbG9z
ZVJlcXVlc3RlZCA9IGZhbHNlOworICAgIHRoaXMuQHB1bGxBZ2FpbiA9IGZhbHNlOworICAgIHRo
aXMuQHB1bGxpbmcgPSBmYWxzZTsgCisgICAgdGhpcy5AcmVhZGVyID0gdW5kZWZpbmVkOworICAg
IHRoaXMuQHN0b3JlZEVycm9yID0gdW5kZWZpbmVkOworICAgIHRoaXMuQGNvbnRyb2xsZXIgPSBu
ZXcgQFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih0aGlzKTsKKyAgICB0aGlzLkBzdHJhdGVneVNp
emUgPSBzdHJhdGVneS5zaXplOyAKKyAgICB0aGlzLkBoaWdoV2F0ZXJNYXJrID0gTnVtYmVyKHN0
cmF0ZWd5LmhpZ2hXYXRlck1hcmspOworCisgICAgaWYgKE51bWJlci5pc05hTih0aGlzLkBoaWdo
V2F0ZXJNYXJrKSkKKyAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpOworICAgIGlmICh0aGlz
LkBoaWdoV2F0ZXJNYXJrIDwgMCkKKyAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoKTsKKwor
ICAgIHZhciByZXN1bHQgPSBAaW52b2tlT3JOb29wKHVuZGVybHlpbmdTb3VyY2UsICJzdGFydCIs
IFt0aGlzLkBjb250cm9sbGVyXSk7CisgICAgdmFyIF90aGlzID0gdGhpczsKKyAgICBQcm9taXNl
LnJlc29sdmUocmVzdWx0KS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBfdGhpcy5Ac3RhcnRl
ZCA9IHRydWU7CisgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKF90aGlzKTsKKyAg
ICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICBpZiAoX3RoaXMuQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAgICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKF90
aGlzLCBlcnJvcik7CisgICAgfSk7CisKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24g
aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkpCisgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIiIpOworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJl
YW0pKQorICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCIiKTsKKworICAgIHRoaXMuQHN0YXRl
ID0gc3RyZWFtLkBzdGF0ZTsKKyAgICB0aGlzLkByZWFkUmVxdWVzdHMgPSBbXTsKKyAgICBpZiAo
c3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpIHsKKyAgICAgICAgdGhp
cy5Ab3duZXJSZWFkYWJsZVN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgdGhpcy5Ac3RvcmVkRXJy
b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIHN0cmVhbS5AcmVhZGVyID0gdGhpczsKKyAgICAgICAg
dGhpcy5AY2xvc2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgc3RyZWFtLkByZWFkZXIuQGNsb3NlZFByb21pc2VSZXNvbHZlID0g
cmVzb2x2ZTsKKyAgICAgICAgICAgIHN0cmVhbS5AcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVqZWN0
ID0gcmVqZWN0OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAg
IGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpIHsKKyAgICAgICAg
dGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSA9IG51bGw7CisgICAgICAgIHRoaXMuQHN0b3JlZEVy
cm9yID0gdW5kZWZpbmVkOworICAgICAgICB0aGlzLkBjbG9zZWRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICAvLyBUT0RPOiBBU1NF
UlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgdGhpcy5A
b3duZXJSZWFkYWJsZVN0cmVhbSA9IG51bGw7CisgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSBzdHJl
YW0uQHN0b3JlZEVycm9yOworICAgIHRoaXMuQGNsb3NlZFByb21pc2UgPSBQcm9taXNlLnJlamVj
dChzdHJlYW0uQHN0b3JlZEVycm9yKTsgCisKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rp
b24gaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihzdHJlYW0pCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbShzdHJlYW0pKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworICAgIGlmICh0eXBlb2Ygc3RyZWFtLkBjb250cm9s
bGVyICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKyAg
ICB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0gPSBzdHJlYW07CisKKyAgICByZXR1cm4g
dGhpczsKK30KKworZnVuY3Rpb24gZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRPRE86IEFTU0VSVChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSk7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOwor
ICAgIHN0cmVhbS5Ac3RvcmVkRXJyb3IgPSBlcnJvcjsKKyAgICBzdHJlYW0uQHN0YXRlID0gQHJl
YWRhYmxlU3RyZWFtRXJyb3JlZDsKKworICAgIGlmICghc3RyZWFtLkByZWFkZXIpCisgICAgICAg
IHJldHVybjsKKyAgICB2YXIgcmVhZGVyID0gc3RyZWFtLkByZWFkZXI7CisKKyAgICAvLyBUT0RP
OiByZWplY3QgcmVhZCBwcm9taXNlcyBiZWZyZSBjbG9zZWQgb25lPyAKKyAgICByZWFkZXIuQGNs
b3NlZFByb21pc2VSZWplY3QoZXJyb3IpOworCisgICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkBy
ZWFkUmVxdWVzdHM7CisgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5s
ZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQorICAgICAgICByZXF1ZXN0c1tpbmRleF0u
cmVqZWN0KGVycm9yKTsKKyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOworCisgICAgQHJl
bGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRlci5Ac3RvcmVkRXJy
b3IgPSBlcnJvcjsKKyAgICByZWFkZXIuQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZDsK
K30KKworZnVuY3Rpb24gcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETzogTW92ZSB0aGlzIGZ1bmN0aW9uIG91dHNpZGUg
cmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbC4KKyAgICBmdW5jdGlvbiBzaG91bGRSZWFkYWJsZVN0
cmVhbVB1bGwoc3RyZWFtKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgIT09IEBy
ZWFkYWJsZVN0cmVhbVJlYWRhYmxlKQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIXN0cmVhbS5Ac3RhcnRlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkgJiYgc3RyZWFtLkBy
ZWFkZXIuQHJlYWRSZXF1ZXN0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKEBnZXRSZWFkYWJsZVN0cmVhbURlc2lyZWRTaXplKHN0cmVhbSkgPiAwKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
aWYgKCFzaG91bGRSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHN0cmVhbS5AcHVsbGluZykgeworICAgICAgICBzdHJlYW0uQHB1bGxBZ2FpbiA9
IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJlYW0uQHB1bGxpbmcgPSB0
cnVlOworCisgICAgdmFyIHByb21pc2UgPSBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVu
ZGVybHlpbmdTb3VyY2UsICJwdWxsIiwgW3N0cmVhbS5AY29udHJvbGxlcl0pOworICAgIHByb21p
c2UudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgc3RyZWFtLkBwdWxsaW5nID0gZmFsc2U7Cisg
ICAgICAgIGlmIChzdHJlYW0uQHB1bGxBZ2FpbikgeworICAgICAgICAgICAgc3RyZWFtLkBwdWxs
QWdhaW4gPSBmYWxzZTsKKyAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0
cmVhbSk7CisgICAgICAgIH0KKyAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICBAZXJy
b3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAg
ICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworZnVuY3Rpb24gZ2V0UmVhZGFibGVTdHJl
YW1EZXNpcmVkU2l6ZShzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgIHJldHVybiBz
dHJlYW0uQGhpZ2hXYXRlck1hcmsgLSBzdHJlYW0uQHF1ZXVlU2l6ZTsKK30KKworZnVuY3Rpb24g
cmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHJlYWRlciA9IHVuZGVmaW5lZDsK
KyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOworfQorCitmdW5jdGlvbiBj
YW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChz
dHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUludm9r
ZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhl
bihmdW5jdGlvbigpIHsgfSk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0
cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETzogQVNTRVJU
KHN0cmVhbS5Ac3RhdGUgPT09ICBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSk7CisgICAgc3RyZWFt
LkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUNsb3NlZDsKKyAgICB2YXIgcmVhZGVyID0gc3RyZWFt
LkByZWFkZXI7CisgICAgaWYgKHJlYWRlcikKKyAgICAgICAgQGNsb3NlUmVhZGFibGVTdHJlYW1S
ZWFkZXIocmVhZGVyKTsKK30KKworZnVuY3Rpb24gY2xvc2VSZWFkYWJsZVN0cmVhbShzdHJlYW0p
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETy4gQVNTRVJUKCFzdHJlYW0uQGNs
b3NlUmVxdWVzdGVkKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSAhPT0gQHJl
YWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuOyAKKyAgICBzdHJlYW0uQGNsb3NlUmVxdWVz
dGVkID0gdHJ1ZTsKKyAgICBpZiAoIXN0cmVhbS5AcXVldWUubGVuZ3RoKQorICAgICAgICBAZmlu
aXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlUmVh
ZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8v
IFRPRE86IGNsb3NlZCBwcm9taXNlIHNob3VsZCBwcm9iYWJseSBiZSByZXNvbHZlZCBhZnRlciBy
ZWFkIG9uZXMuCisgICAgcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2ZSgpOworCisgICAgdmFy
IHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7CisgICAgZm9yICh2YXIgaW5kZXggPSAw
LCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQorICAg
ICAgICByZXF1ZXN0c1tpbmRleF0ucmVzb2x2ZSh7dmFsdWU6dW5kZWZpbmVkLCBkb25lOiB0cnVl
fSk7CisgICAgcmVhZGVyLkByZWFkUmVxdWVzdHMgPSBbXTsKKyAgICBAcmVsZWFzZVJlYWRhYmxl
U3RyZWFtUmVhZGVyKHJlYWRlcik7CisgICAgcmVhZGVyLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVh
bUNsb3NlZDsKK30KKworZnVuY3Rpb24gZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBj
aHVuaykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBUT0RPOiBBU1NFUlQoIXN0cmVh
bS5AY2xvc2VSZXF1ZXN0ZWQpOworICAgIC8vIFRPRE86IEFTU0VSVChzdHJlYW0uQHN0YXRlICE9
PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJl
YWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIGlmIChA
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pICYmIHN0cmVhbS5AcmVhZGVyLkByZWFkUmVx
dWVzdHMubGVuZ3RoKSB7CisgICAgICAgIHN0cmVhbS5AcmVhZGVyLkByZWFkUmVxdWVzdHMuc2hp
ZnQoKS5yZXNvbHZlKHt2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlfSk7CisgICAgICAgIEByZXF1
ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIHNpemUgPSAxOworICAgICAgICBpZiAoc3RyZWFtLkBzdHJh
dGVneVNpemUpIHsKKyAgICAgICAgICAgIHNpemUgPSBOdW1iZXIoc3RyZWFtLkBzdHJhdGVneVNp
emUoY2h1bmspKTsKKyAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4oc2l6ZSkgfHwgc2l6ZSA9
PT0gK0luZmluaXR5IHx8IHNpemUgPCAwKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5n
ZUVycm9yKCdDaHVuayBzaXplIGlzIG5vdCB2YWxpZCcpOworICAgICAgICB9CisgICAgICAgIHN0
cmVhbS5AcXVldWUucHVzaCh7IHZhbHVlOiBjaHVuaywgc2l6ZTogc2l6ZSB9KTsKKyAgICAgICAg
c3RyZWFtLkBxdWV1ZVNpemUgKz0gc2l6ZTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAg
ICAgICAgQGVycm9yUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJvcik7CisgICAgICAgIHRocm93
IGVycm9yOworICAgIH0KKyAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOwor
fQorCitmdW5jdGlvbiByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAocmVhZGVyLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlfSk7CisgICAgaWYgKHJlYWRlci5Ac3RhdGUgPT09IEByZWFkYWJsZVN0
cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFkZXIuQHN0b3Jl
ZEVycm9yKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQoISFyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJl
YW0pOworICAgIC8vIFRPRE86IEFTU0VSVChyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHN0
YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSk7CisgICAgdmFyIHN0cmVhbSA9IHJlYWRl
ci5Ab3duZXJSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBxdWV1ZS5sZW5ndGgpIHsK
KyAgICAgICAgdmFyIGNodW5rID0gc3RyZWFtLkBxdWV1ZS5zaGlmdCgpOworICAgICAgICBzdHJl
YW0uQHF1ZXVlU2l6ZSAtPSBjaHVuay5zaXplOworICAgICAgICBpZiAoIXN0cmVhbS5AY2xvc2VS
ZXF1ZXN0ZWQpCisgICAgICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0p
OworICAgICAgICBlbHNlIGlmICghc3RyZWFtLkBxdWV1ZS5sZW5ndGgpCisgICAgICAgICAgICBA
ZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoe3ZhbHVlOiBjaHVuay52YWx1ZSwgZG9uZTogZmFsc2V9KTsKKyAgICB9Cisg
ICAgdmFyIHJlYWRSZXF1ZXN0ID0ge307CisgICAgdmFyIHJlYWRQcm9taXNlID0gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIHJlYWRSZXF1ZXN0LnJlc29s
dmUgPSByZXNvbHZlOworICAgICAgICByZWFkUmVxdWVzdC5yZWplY3QgPSByZWplY3Q7CisgICAg
fSk7CisgICAgcmVhZGVyLkByZWFkUmVxdWVzdHMucHVzaChyZWFkUmVxdWVzdCk7CisgICAgQHJl
cXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICByZXR1cm4gcmVhZFByb21pc2U7
Cit9CisKK2Z1bmN0aW9uIGludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgaWYgKHR5
cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICByZXR1cm47CisgICAgcmV0dXJu
IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZUludm9r
ZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0
cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBl
b2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdz
KTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBj
YXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmOTBjMTM3YTgwYWI1Y2JkNGJi
OTIxNTIxN2Q4MDIwZGRjYWFhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsOTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUT0RPOiBBZGQgZXhjZXB0aW9uIG1lc3Nh
Z2VzLgorCitmdW5jdGlvbiBjYW5jZWwocmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChuZXcgQFR5cGVFcnJvcigpKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9y
KCkpOworCisgICAgcmV0dXJuIEBjYW5jZWxSZWFkYWJsZVN0cmVhbSh0aGlzLCByZWFzb24pOwor
fQorCitmdW5jdGlvbiBnZXRSZWFkZXIoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCk7CisgCisgICAgaWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMpKQorICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgcmV0dXJuIG5ldyBAUmVhZGFibGVTdHJlYW1S
ZWFkZXIodGhpcyk7Cit9CisKK2Z1bmN0aW9uIHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9wdGlvbnMp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdGhpcy5waXBlVG8oc3RyZWFtcy53cml0YWJs
ZSwgb3B0aW9ucyk7CisKKyAgICByZXR1cm4gc3RyZWFtcy5yZWFkYWJsZTsKK30KKworZnVuY3Rp
b24gcGlwZVRvKGRlc3QpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFk
YWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJwaXBlVG8gaXMgbm90IGltcGxlbWVudGVkIik7Cit9CisK
K2Z1bmN0aW9uIHRlZSgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFk
YWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAg
IHJldHVybiBuZXcgQFR5cGVFcnJvcigidGVlIGlzIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCitm
dW5jdGlvbiBsb2NrZWQoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVh
ZGFibGVTdHJlYW0odGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAg
ICByZXR1cm4gQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQodGhpcyk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnBy
b3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2N2UxMzNmYTg2MTQ0MTgzNzFm
ZGE2NjcwZTBmMzllNjI2MDFlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVE9ETzogQWRkIGV4Y2Vw
dGlvbiBtZXNzYWdlcy4KKworZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih0aGlzKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAgIHZhciBzdHJlYW0gPSB0aGlzLkBj
b250cm9sbGVkUmVhZGFibGVTdHJlYW07CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFk
YWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHRocm93IHN0cmVhbS5Ac3RvcmVkRXJyb3I7CisK
KyAgICBpZiAoc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoKTsKKworICAgIHJldHVybiBAZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBj
aHVuaykKK30KKworZnVuY3Rpb24gZXJyb3IoZXJyb3IpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29udHJvbGxl
ZFJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJl
YW1SZWFkYWJsZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAgIEBlcnJv
clJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgZXJyb3IpOworfQorCitmdW5jdGlvbiBjbG9zZSgpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICB2YXIgc3Ry
ZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQGNs
b3NlUmVxdWVzdGVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICBAY2xvc2VSZWFkYWJsZVN0cmVhbShzdHJlYW0pOwor
fQorCitmdW5jdGlvbiBkZXNpcmVkU2l6ZSgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCk7CisKKyAgICByZXR1cm4gQGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNp
emUodGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
cHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3ZjFhYjljYTNkMjFjMmNhM2QzNTA5MjNiNDI5ZmFl
NDdkOGMyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsODAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUT0RPOiBBZGQgZXhjZXB0aW9uIG1lc3NhZ2VzLgor
CitmdW5jdGlvbiBjYW5jZWwocmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChuZXcgQFR5cGVFcnJvcigpKTsKKworICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHJl
YWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisK
KyAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisKKyAgICAvLyBUT0RP
IEFTU0VSVChAaXNSZWFkYWJsZVN0cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtKSk7Cisg
ICAgLy8gVE9ETyBBU1NFUlQodGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUgPT09IEBy
ZWFkYWJsZVN0cmVhbVJlYWRhYmxlKTsKKyAgICByZXR1cm4gQGNhbmNlbFJlYWRhYmxlU3RyZWFt
KHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0sIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIHJlYWQo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFk
ZXIodGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigp
KTsKKworICAgIHJldHVybiBAcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKK30K
KworZnVuY3Rpb24gcmVsZWFzZUxvY2soKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCk7CisKKyAgICBpZiAoIXRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0pCisgICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAodGhpcy5AcmVhZFJlcXVlc3RzLmxlbmd0aCkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAgIEBjbG9zZVJlYWRhYmxlU3RyZWFtUmVhZGVy
KHRoaXMpOworfQorCitmdW5jdGlvbiBjbG9zZWQoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2FsbGVlIG9mIGNsb3NlZCBpcyBub3QgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKworICAgIHJldHVybiB0aGlzLkBjbG9zZWRQcm9taXNl
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKaW5kZXggNjQ1MWZmMzQ0OTBmYmI2NmJkMmFmMjFkYjc2MGZhNWU3ZDJiNWIxNC4uNzY3
M2FjMWJjNjEzOGE2ZjNmYzcyMTI2YzVmOTZhYjlkZDBiOTM0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01MSw2ICs1MSw3
IEBACiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3Jv
KFJhbmdlRXJyb3IpIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKFJl
ZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4cCkg
XApAQCAtMzAxLDcgKzMwMiwzMCBAQAogICAgIG1hY3JvKHByb21pc2VSZWplY3RSZWFjdGlvbnMp
IFwKICAgICBtYWNybyhwcm9taXNlUmVzdWx0KSBcCiAgICAgbWFjcm8oY2FwYWJpbGl0aWVzKSBc
Ci0KKyAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHVuZGVybHlpbmdTb3VyY2UpIFwKKyAg
ICBtYWNybyhxdWV1ZSkgXAorICAgIG1hY3JvKHF1ZXVlU2l6ZSkgXAorICAgIG1hY3JvKHN0YXJ0
ZWQpIFwKKyAgICBtYWNybyhjbG9zZVJlcXVlc3RlZCkgXAorICAgIG1hY3JvKHB1bGxBZ2Fpbikg
XAorICAgIG1hY3JvKHB1bGxpbmcpIFwKKyAgICBtYWNybyhyZWFkZXIpIFwKKyAgICBtYWNybyhz
dG9yZWRFcnJvcikgXAorICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKKyAgICBtYWNybyhzdHJhdGVn
eVNpemUpIFwKKyAgICBtYWNybyhoaWdoV2F0ZXJNYXJrKSBcCisgICAgbWFjcm8ocmVhZFJlcXVl
c3RzKSBcCisgICAgbWFjcm8ob3duZXJSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGNsb3Nl
ZFByb21pc2UpIFwKKyAgICBtYWNybyhjbG9zZWRQcm9taXNlUmVzb2x2ZSkgXAorICAgIG1hY3Jv
KGNsb3NlZFByb21pc2VSZWplY3QpIFwKKyAgICBtYWNybyhjb250cm9sbGVkUmVhZGFibGVTdHJl
YW0pIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0cmVhbUNsb3NlZCkgXAorICAgIG1hY3JvKHJlYWRh
YmxlU3RyZWFtUmVhZGFibGUpIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0cmVhbUVycm9yZWQpIFwK
KyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbVJlYWRlcikgXAorICAgIG1hY3JvKFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcikgXAogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjZWU5YmJkOTQw
NDQ5MTI4OTQzODI3MWQwMDQ0MTdjMjI5YWQwNDIzLi4wMDgyMmY5NzkyZGNlZGRiZDgxZmY0OTJi
NjhhOTVkMzZlODA5OGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjaW5jbHVkZSAiSlNSZXBs
YXlJbnB1dHMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorI2luY2x1ZGUg
IkpTUmVhZGFibGVTdHJlYW0uaCIKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKKyNlbmRpZgorCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QubHV0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjc4LDcg
KzI4NCwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBwcm90b0Fj
Y2Vzc29yLT5zZXRTZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90
eXBlLT5wdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bmRl
cnNjb3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1f
ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNp
dGlvbih2bSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotICAgIAorCisjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQorICAgIG1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3Ry
ZWFtSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAg
ICBtX2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUluaXRp
YWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAg
bV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtSW5p
dGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZUxvY2tlZEdldHRlci5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1Qcm90
b3R5cGVMb2NrZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fcmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXIuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpj
cmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlQ2xv
c2VkQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByb3RvdHlwZURlc2lyZWRTaXplR2V0dGVyLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5
cGVEZXNpcmVkU2l6ZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisjZW5kaWYKKwogICAgIG1f
dHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50OCldLnByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEpT
SW50OEFycmF5UHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTSW50OEFycmF5UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwog
ICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50MTYpXS5wcm90b3R5cGUuc2V0KHZtLCB0
aGlzLCBKU0ludDE2QXJyYXlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgSlNJbnQxNkFycmF5
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSkpOwogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50MzIpXS5wcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBKU0ludDMyQXJyYXlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgSlNJ
bnQzMkFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKSkpOwpAQCAtMzM5LDYgKzM1NCwxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICBtX3Byb21pc2VQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU1By
b21pc2VQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAg
bV9wcm9taXNlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSkpOwogCisjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQorICAgIG1fcmVhZGFibGVTdHJlYW1Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBK
U1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgSlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlYWRhYmxlU3Ry
ZWFtUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZShl
eGVjLCB0aGlzLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgIG1fcmVhZGFibGVT
dHJlYW1SZWFkZXJTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5
cGUuZ2V0KCkpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpjcmVhdGUoZXhl
YywgdGhpcywgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9yZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlclByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXQVNNTW9kdWxl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICNlbmRpZgpAQCAtMzk3LDEzICs0MjEsMjQg
QEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0
ZXJhbCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0
aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9y
U3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJV
UklFcnJvciIpKSk7CiAgICAgbV9wcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBKU1By
b21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNl
UHJvdG90eXBlLmdldCgpKSk7Ci0gICAgCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAg
bV9yZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVh
bUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWFk
YWJsZVN0cmVhbVByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJD
b25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmCisK
ICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcmVnRXhwQ29uc3RydWN0b3Iu
Z2V0KCksIERvbnRFbnVtKTsKICAgICBtX3Byb21pc2VQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9wcm9taXNl
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICAKKworI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKKyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcmVhZGFibGVTdHJl
YW1Db25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIG1fcmVhZGFibGVTdHJlYW1SZWFk
ZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgbV9yZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUtPnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OworI2VuZGlmCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0
aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKQEAgLTQxNSw4ICs0NTAsNyBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3IsIG1f
dHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+VVJJRXJyb3IsIG1fVVJJRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNlLCBtX3Byb21pc2VDb25zdHJ1Y3Rvci5n
ZXQoKSwgRG9udEVudW0pOwotICAgIAotICAgIAorCiAjZGVmaW5lIFBVVF9DT05TVFJVQ1RPUl9G
T1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFu
Y2VUeXBlLCBqc05hbWUpIFwKIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IsIERvbnRFbnVtKTsg
XAogCkBAIC01MDYsNiArNTQwLDMwIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVh
dGVSZXNvbHZpbmdGdW5jdGlvbnNQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25z
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcm9taXNlUmVhY3Rpb25Kb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9i
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNv
bHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlYWRhYmxlU3RyZWFtUmVhZGFibGVQ
cml2YXRlTmFtZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUmVhZGFibGVTdHJl
YW06OlN0YXRlOjpSZWFkYWJsZSkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWFkYWJsZVN0
cmVhbUNsb3NlZFByaXZhdGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNS
ZWFkYWJsZVN0cmVhbTo6U3RhdGU6OkNsb3NlZCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5y
ZWFkYWJsZVN0cmVhbUVycm9yZWRQcml2YXRlTmFtZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTUmVhZGFibGVTdHJlYW06OlN0YXRlOjpFcnJvcmVkKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzUmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtSXNSZWFk
YWJsZVN0cmVhbUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaXNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1Jc1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJl
YW1Jc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVh
ZGFibGVTdHJlYW1Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUdlbmVyYXRvcih2bSksIHRoaXMp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXF1ZXN0UmVhZGFibGVT
dHJlYW1QdWxsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KHZtLCByZWFkYWJsZVN0cmVhbVJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGxDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVycm9y
UmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtRXJyb3JSZWFkYWJsZVN0cmVhbUNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW52b2tl
T3JOb29wUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCByZWFkYWJsZVN0cmVhbUludm9rZU9yTm9vcENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZUludm9rZU9yTm9vcFBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFi
bGVTdHJlYW1Qcm9taXNlSW52b2tlT3JOb29wQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRSZWFkYWJsZVN0cmVhbURlc2ly
ZWRTaXplUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCByZWFkYWJsZVN0cmVhbUdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNpemVDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbmNl
bFJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1
bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5maW5p
c2hDbG9zaW5nUmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtRmluaXNoQ2xvc2luZ1JlYWRhYmxlU3Ry
ZWFtQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5jbG9zZVJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUNsb3NlUmVhZGFibGVTdHJl
YW1Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ2xvc2VSZWFkYWJs
ZVN0cmVhbVJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVh
bVJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVhZEZyb21SZWFkYWJsZVN0cmVh
bVJlYWRlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgcmVhZGFibGVTdHJlYW1SZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnF1
ZXVlSW5SZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1FbnF1ZXVlSW5SZWFkYWJsZVN0cmVhbUNvZGVH
ZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBtX3JlYWRhYmxlU3RyZWFtUmVh
ZGVyQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVOYW1lKCksIG1fcmVhZGFibGVTdHJl
YW1Db250cm9sbGVyQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKyNlbmRpZgogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9i
YWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTc1MCw2ICs4
MDgsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9w
cm9taXNlQ29uc3RydWN0b3IpOwogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckNvbnN0cnVjdG9yKTsKKyNlbmRpZgorCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rpb24pOwogCkBAIC03NjMsNiArODI3LDE1IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uZXdQcm9taXNl
RGVmZXJyZWRGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpOwogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUZ1
bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbml0aWFsaXplUmVh
ZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckZ1bmN0aW9uKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZUxvY2tl
ZEdldHRlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZURlc2lyZWRTaXplR2V0
dGVyKTsKKyNlbmRpZgorCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5
cGUpOwpAQCAtNzcwLDYgKzg0MywxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VQcm90b3R5cGUpOwogCisjaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtUHJv
dG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWFkYWJsZVN0cmVh
bVJlYWRlclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKTsKKyNlbmRpZgorCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CkBA
IC04MDMsNiArODgyLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZVN0cnVjdHVyZSk7CisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJ
KQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtU3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWFkYWJsZVN0cmVhbVJl
YWRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93YXNtTW9kdWxlU3RydWN0
dXJlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4u
MWJiOTQwNDQ5MmRlODY2YjljZWY1NDkyYTRmNDNlZTFlMWNmY2Y0NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC03Miw2ICs3MiwxNCBA
QCBjbGFzcyBJbnB1dEN1cnNvcjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTsKIGNs
YXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOworI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcjsK
K2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU7CitjbGFzcyBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ29uc3RydWN0b3I7CitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBl
OworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvcjsKK2NsYXNzIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOworI2VuZGlmCiBjbGFzcyBKU1N0YWNr
OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwpAQCAtMTg1
LDcgKzE5MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9t
aXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxP
YmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKLQorI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yPiBt
X3JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcj4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9y
OworICAgIFdyaXRlQmFycmllcjxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9y
PiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOworI2VuZGlmCiAgICAgV3Jp
dGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CiAgICAg
V3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVyRnVuY3Rpb247CiAK
QEAgLTIwMCwxMyArMjEyLDI2IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8R2V0
dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogCisjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVSZWFk
YWJsZVN0cmVhbUZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2luaXRp
YWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbjsKKyAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZUxvY2tl
ZEdldHRlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZWFkYWJsZVN0cmVhbVJl
YWRlclByb3RvdHlwZUNsb3NlZEdldHRlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVEZXNpcmVkU2l6ZUdldHRlcjsKKyNl
bmRpZgorCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5
cGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90
eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsK
ICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9wcm9taXNlUHJvdG90eXBlOwot
CisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIFdyaXRlQmFycmllcjxKU1JlYWRhYmxlU3Ry
ZWFtUHJvdG90eXBlPiBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOworICAgIFdyaXRlQmFycmll
cjxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlPiBtX3JlYWRhYmxlU3RyZWFtUmVhZGVy
UHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclBy
b3RvdHlwZT4gbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU7CisjZW5kaWYKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKQEAgLTI0
Miw2ICsyNjcsMTEgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9wcm9taXNlU3RydWN0dXJlOworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3JlYWRhYmxlU3RyZWFtU3RydWN0dXJlOworICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcmVhZGFibGVTdHJlYW1SZWFkZXJTdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1cmU7
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC0zODgsNiArNDE4LDExIEBA
IHB1YmxpYzoKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgSlNQ
cm9taXNlQ29uc3RydWN0b3IqIHByb21pc2VDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpOyB9CiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisg
ICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKiByZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yLmdldCgpOyB9Cisg
ICAgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKiByZWFkYWJsZVN0cmVhbVJlYWRl
ckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0
cnVjdG9yLmdldCgpOyB9CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rv
ciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yLmdldCgpOyB9CisjZW5kaWYKICAg
ICBOdWxsR2V0dGVyRnVuY3Rpb24qIG51bGxHZXR0ZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbnVsbEdldHRlckZ1bmN0aW9uLmdldCgpOyB9CiAgICAgTnVsbFNldHRlckZ1bmN0aW9uKiBu
dWxsU2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxTZXR0ZXJGdW5jdGlvbi5n
ZXQoKTsgfQogCkBAIC00MDcsNiArNDQyLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuZ2V0KCk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQorICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbi5n
ZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJG
dW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlckZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFi
bGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxl
U3RyZWFtUHJvdG90eXBlTG9ja2VkR2V0dGVyLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVh
ZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlQ2xvc2VkR2V0dGVyLmdldCgpOyB9CisgICAg
SlNGdW5jdGlvbiogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVH
ZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlw
ZURlc2lyZWRTaXplR2V0dGVyLmdldCgpOyB9CisjZW5kaWYKKwogICAgIE9iamVjdFByb3RvdHlw
ZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCk7IH0KICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJyYXlQcm90b3R5cGUq
IGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsg
fQpAQCAtNDc2LDYgKzUyMCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVy
YXRvclJlc3VsdFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0ds
b2JhbE9iamVjdCwgbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUq
IHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBwcm9taXNlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlU3RydWN0dXJlLmdldCgpOyB9CisjaWYgRU5B
QkxFKFNUUkVBTVNfQVBJKQorICAgIFN0cnVjdHVyZSogcmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtU3RydWN0dXJlLmdldCgpOyB9CisgICAg
U3RydWN0dXJlKiByZWFkYWJsZVN0cmVhbVJlYWRlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVhZGFibGVTdHJlYW1SZWFkZXJTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTgwMzI0YWE2ZDM4OTc0NjRhNWQ0MGRiNjcwOWVkMWE4OTU5YmI3NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJl
YW0uY3BwCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQ
SSkKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1JlYWRh
YmxlU3RyZWFtQ29uc3RydWN0b3IpOworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gSlNS
ZWFkYWJsZVN0cmVhbTo6c19pbmZvID0geyAiUmVhZGFibGVTdHJlYW0iLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUmVhZGFibGVTdHJlYW0pIH07CisKK0pTUmVhZGFi
bGVTdHJlYW0qIEpTUmVhZGFibGVTdHJlYW06OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVTdHJlYW0g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtPih2bS5oZWFwKSkg
SlNSZWFkYWJsZVN0cmVhbSh2bSwgZ2xvYmFsT2JqZWN0LT5yZWFkYWJsZVN0cmVhbVN0cnVjdHVy
ZSgpKTsKKyAgICByZWFkYWJsZVN0cmVhbS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbTsKK30KKworU3RydWN0dXJlKiBKU1JlYWRhYmxlU3RyZWFtOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0pTUmVhZGFibGVTdHJlYW06OkpTUmVhZGFibGVTdHJlYW0oVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBKU1JlYWRhYmxlU3RyZWFtOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitjb25zdCBDbGFzc0luZm8g
SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6c19pbmZvID0geyAiUmVhZGFibGVTdHJlYW1Qcm90
b3R5cGUiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmcmVhZGFibGVTdHJlYW1Qcm90b3R5
cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKSB9
OworCisvKiBTb3VyY2UgZm9yIEpTUmVhZGFibGVTdHJlYW0ubHV0LmgKK0BiZWdpbiByZWFkYWJs
ZVN0cmVhbVByb3RvdHlwZVRhYmxlCisgIGNhbmNlbCAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJv
dG90eXBlRnVuY0NhbmNlbCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGdldFJlYWRlciAg
ICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY0dldFJlYWRlciAgICBEb250RW51bXxGdW5j
dGlvbiAwCisgIHBpcGVUaHJvdWdoICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1BpcGVU
aHJvdWdoICBEb250RW51bXxGdW5jdGlvbiAyCisgIHBpcGVUbyAgICAgICBKU1JlYWRhYmxlU3Ry
ZWFtUHJvdG90eXBlRnVuY1BpcGVUbyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRlZSAg
ICAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1RlZSAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisKKyAgbG9ja2VkICAgICAgIGpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVH
ZXR0ZXJMb2NrZWQgICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxl
U3RyZWFtUHJvdG90eXBlKiBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlw
ZT4odm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsK
KyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBv
YmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpKU1JlYWRhYmxlU3RyZWFtUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05v
bkZpbmFsT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1JlYWRh
YmxlU3RyZWFtUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEpTUmVhZGFibGVTdHJl
YW1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCByZWFk
YWJsZVN0cmVhbVByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlw
ZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBK
U1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1JlYWRhYmxlU3Ry
ZWFtQ29uc3RydWN0b3IpIH07CisKK0pTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvciogSlNSZWFk
YWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSogcmVhZGFibGVTdHJlYW1Qcm90b3R5cGUpCit7
CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1
Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlKTsKKyAgICBy
ZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNSZWFkYWJsZVN0cmVhbUNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvcjo6SlNS
ZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNSZWFk
YWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUmVhZGFibGVT
dHJlYW1Qcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIikpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IHJlYWRhYmxlU3RyZWFtUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
K30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UmVhZGFi
bGVTdHJlYW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxP
YmplY3QoKTsKKworICAgIEpTUmVhZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtID0gSlNSZWFk
YWJsZVN0cmVhbTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOworCisgICAgSlNGdW5jdGlvbiog
aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtID0gZ2xvYmFsT2JqZWN0LT5pbml0aWFsaXplUmVhZGFi
bGVTdHJlYW1GdW5jdGlvbigpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtLCBjYWxsRGF0
YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT5hcmd1
bWVudCgwKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT5hcmd1bWVudCgxKSk7CisgICAg
Y2FsbChleGVjLCBpbml0aWFsaXplUmVhZGFibGVTdHJlYW0sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
cmVhZGFibGVTdHJlYW0sIGFyZ3VtZW50cyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlYWRhYmxlU3RyZWFtKTsKK30KKworQ29uc3RydWN0VHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVj
dFJlYWRhYmxlU3RyZWFtOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2Fs
bFR5cGUgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0UmVhZGFibGVTdHJlYW07CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVH
ZXR0ZXJMb2NrZWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTRnVuY3Rpb24qIGdl
dHRlciA9IHN0YXRlLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnJlYWRhYmxlU3RyZWFtUHJv
dG90eXBlTG9ja2VkR2V0dGVyKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoc3RhdGUsIGdldHRlciwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGFyZ3VtZW50cyk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1OTlmNzUxZmQzNzg4ZGVl
OWExNjJiYmEwZmI2NDgzZGFhYTQ4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmgKQEAgLTAsMCArMSw5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNSZWFkYWJsZVN0cmVhbV9oCisjZGVmaW5lIEpTUmVhZGFibGVT
dHJlYW1faAorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU1JlYWRhYmxlU3RyZWFtIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUmVh
ZGFibGVTdHJlYW0qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdW5z
aWduZWQgeworICAgICAgICBSZWFkYWJsZSA9IDEsCisgICAgICAgIENsb3NlZCwKKyAgICAgICAg
RXJyb3JlZAorICAgIH07CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbShWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK2NsYXNzIEpT
UmVhZGFibGVTdHJlYW1Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbVByb3Rv
dHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRh
YmxlU3RyZWFtUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Cit9OworCitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0
b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRl
cm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVh
bUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1JlYWRhYmxlU3RyZWFtUHJv
dG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBl
Kik7CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7Cit9OworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZUdldHRlckxvY2tlZChKU0M6OkV4ZWNTdGF0ZSop
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkK
KworI2VuZGlmIC8vIEpTUmVhZGFibGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZiNGM5YTcyMDBmMzAwNjA3ZDJhNGRmMjE2ODIyZGJhZjYwY2FhNDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1
Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIpIH07CisKK0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKiBKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciogcmVhZGFibGVTdHJlYW1Db250
cm9sbGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih2bSwgZ2xvYmFsT2Jq
ZWN0LT5yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1cmUoKSk7CisgICAgcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcjsKK30KKworU3RydWN0dXJlKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6SlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQ
cm90b3R5cGUiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmcmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIubHV0LmgKK0BiZWdpbiByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5
cGVUYWJsZQorICBjbG9zZSAgICAgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5
cGVGdW5jQ2xvc2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgZW5xdWV1ZSAgICAgIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0VucXVldWUgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCisgIGVycm9yICAgICAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclBy
b3RvdHlwZUZ1bmNFcnJvciAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBkZXNpcmVkU2l6
ZSAganNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRGVzaXJlZFNpemUgIERv
bnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclBy
b3RvdHlwZSogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclBy
b3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0sIHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29s
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxKU09iamVjdD4oZXhlYywgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlVGFi
bGUsIGpzQ2FzdDxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSo+KG9iamVjdCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDb25zdHJ1Y3RvcikgfTsKKworSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3RvciogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
UHJvdG90eXBlKiByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpCit7CisgICAgSlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitT
dHJ1Y3R1cmUqIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlclByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlM
aXRlcmFsKCJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVhZGFibGVTdHJl
YW1Db250cm9sbGVyUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UmVhZGFibGVT
dHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciogcmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyID0gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0KTsKKworICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIgPSBnbG9iYWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJGdW5jdGlvbigpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGNhbGwoZXhlYywgaW5pdGlhbGl6ZVJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCByZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIsIGFyZ3VtZW50cyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
JiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0g
Y29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250cm9sbGVyOworICAgIHJldHVybiBDb25zdHJ1Y3RU
eXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRGVzaXJl
ZFNpemUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTRnVuY3Rpb24qIGdldHRlciA9
IHN0YXRlLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByb3RvdHlwZURlc2lyZWRTaXplR2V0dGVyKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKKyAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoc3RhdGUsIGdldHRl
ciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGFyZ3VtZW50cyk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWM4NzVkZjUyYzhkOGE4MzQ3MmI1YTAyYmNmOThmMjAwN2FjYzIzMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJfaAorI2RlZmluZSBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAg
c3RhdGljIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCitwcml2
YXRlOgorICAgIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAg
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisK
KyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBl
Kik7CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0Rlc2ly
ZWRTaXplKEpTQzo6RXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjZW5kaWYgLy8gSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzVjYWVmZDFhMWZhZGNiOGNkYjA5
Y2VmYzE0YTk0Yzc0NmJlMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKQEAgLTAsMCArMSwxNzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oIgorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRl
cikgfTsKKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkYWJsZVN0cmVhbVJlYWRlciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyKHZtLCBnbG9iYWxPYmplY3QtPnJlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0
dXJlKCkpOworICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtUmVhZGVyOworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
SlNSZWFkYWJsZVN0cmVhbVJlYWRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSIs
ICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sICZyZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5
cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5sdXQuaAorQGJl
Z2luIHJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlVGFibGUKKyAgY2FuY2VsICAgICAgIEpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVGdW5jQ2FuY2VsICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIHJlYWQgICAgICAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBl
RnVuY1JlYWQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICByZWxlYXNlTG9jayAgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNSZWxlYXNlTG9jayAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgY2xvc2VkICAgICAgIGpzUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVG
dW5jQ2xvc2VkICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorQGVuZAorKi8KKworSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlclByb3RvdHlwZSogSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZTo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXJQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlclByb3RvdHlwZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9i
amVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNSZWFkYWJsZVN0cmVh
bVJlYWRlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywg
cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVUYWJsZSwganNDYXN0PEpTUmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitj
b25zdCBDbGFzc0luZm8gSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKSB9OworCitKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKQoreworICAg
IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I+KHZt
LmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCByZWFkYWJsZVN0cmVhbVJlYWRl
clByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpT
UmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJv
dG90eXBlKiByZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCByZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9u
dERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFJlYWRhYmxlU3RyZWFtUmVhZGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKiBy
ZWFkYWJsZVN0cmVhbVJlYWRlciA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKKworICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVh
bVJlYWRlciA9IGdsb2JhbE9iamVjdC0+aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVu
Y3Rpb24oKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlciwgY2FsbERhdGEpOwor
ICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlYy0+YXJndW1lbnQo
MCkpOworICAgIGNhbGwoZXhlYywgaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHJlYWRhYmxlU3RyZWFtUmVhZGVyLCBhcmd1bWVudHMpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWFkYWJsZVN0cmVhbVJlYWRlcik7Cit9CisKK0NvbnN0
cnVjdFR5cGUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcjsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNh
bGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFJlYWRh
YmxlU3RyZWFtUmVhZGVyOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBl
RnVuY0Nsb3NlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiogZ2V0
dGVyID0gc3RhdGUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1SZWFk
ZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjk0MDBhOWM4OWE3NDliMjFhNWE5MWU1ZTUwOTM4MWE3YjU0ODhkZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1SZWFkZXIu
aApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyX2gKKyNkZWZpbmUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcl9oCisKKyNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ciogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKwor
Y2xhc3MgSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitw
cml2YXRlOgorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNz
IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUqKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUqKTsKKwor
cHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3NlZChKU0M6OkV4ZWNTdGF0
ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQ
SSkKKworI2VuZGlmIC8vIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJfaCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNTc3MzA4NzI2NzllMzRhNDFjMjk3MDEyNjNmYzUzZGUwODFmNGQ2OS4uYzY5ODBi
YmFkYjc3ZWYyNDgwNjUyNGE4ODViOWQ0ODYzOTcwNjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTE4LDcgKzE4LDYgQEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQkNPUkVfRElSfS9Nb2R1bGVzL3Byb3hpbWl0eSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9xdW90YSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zcGVlY2giCi0gICAgIiR7
V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy92aWJyYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViYXVkaW8iCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCkBAIC0xNjIsNyArMTYxLDYgQEAg
c2V0KFdlYkNvcmVfSURMX0lOQ0xVREVTCiAgICAgTW9kdWxlcy9wcm94aW1pdHkKICAgICBNb2R1
bGVzL3F1b3RhCiAgICAgTW9kdWxlcy9zcGVlY2gKLSAgICBNb2R1bGVzL3N0cmVhbXMKICAgICBN
b2R1bGVzL3ZpYnJhdGlvbgogICAgIE1vZHVsZXMvd2ViYXVkaW8KICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlCkBAIC0yODksMTAgKzI4Nyw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVT
CiAgICAgTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmlkbAogICAgIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbAogCi0gICAgTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmlkbAotICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuaWRsCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmlkbAotCiAgICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbAogCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCkBAIC05NDgsOSArOTQyLDYgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAKICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
IAotICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKLSAgICBNb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCi0KICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9O
YXZpZ2F0b3JWaWJyYXRpb24uY3BwCiAgICAgTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNw
cAogCkBAIC0xMTgxLDkgKzExNzIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvanMvSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1JU
Q1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5j
cHAKLSAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCkBAIC0xMjE0LDcgKzEyMDIsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKICAgICBi
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA0YmYxMTk0
MzIzZWZlZjdlMWUyMTNjZWI3MmVmNjk1ZmRjZTIwYzhlLi40Y2EwMjgxZGNiNWU3YTkxNTZhOWQ4
NzgyYTFhNTdkZWM4MGJkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zMDMs
MTEgKzMwMyw2IEBACiAjaW5jbHVkZSAiSlNSYWRpb05vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJK
U1JhbmdlLmNwcCIKICNpbmNsdWRlICJKU1JhbmdlRXhjZXB0aW9uLmNwcCIKLSNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5jcHAiCi0jaW5jbHVkZSAi
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJl
YW1SZWFkZXIuY3BwIgotI2VuZGlmCiAjaW5jbHVkZSAiSlNSZWN0LmNwcCIKICNpbmNsdWRlICJK
U1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU1JHQkNvbG9y
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDAwZTc4ODA4Nzc4MTZkZjQ3
YmEzM2M4OTQyODlmNjJiMWRjNzZlYTQuLjFiNDZlYTcxODU1NjViNTg1ZmI1YzgwYmEwY2IzM2Fi
MmNmODA1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTc0LDkgKzE3NCw2
IEBAIE5PTl9TVkdfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVh
bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFlOWUyZjQ5N2MyOGMzZmJmNTUyNmJmYWE3MmMwMWRmMGEyMzQ1YzcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTUmVhZGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9G
V0RfSlNSZWFkYWJsZVN0cmVhbV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTUmVhZGFibGVTdHJl
YW1faAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmVhZGFibGVTdHJlYW0uaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YWY1YTFiMDBiZTFhMTgyMzBiMTZh
ODUyYmMzODc4OTgwNGE3ZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDI4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENh
bm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLQotI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRl
ICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RG
OjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291bnRlciwgKCJSZWFkYWJs
ZVN0cmVhbSIpKTsKLQotUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3Jl
YXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCBEaWN0
aW9uYXJ5JiBzdHJhdGVneSkKLXsKLSAgICByZXR1cm4gUmVmUHRyPFJlYWRhYmxlU3RyZWFtPihS
ZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCBzdHJhdGVneSkpOwotfQotCi1S
ZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVhZGFibGVTdHJlYW1Db3VudGVy
LmluY3JlbWVudCgpOwotI2VuZGlmCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci19Ci0KLVJlYWRh
YmxlU3RyZWFtOjp+UmVhZGFibGVTdHJlYW0oKQotewotI2lmbmRlZiBOREVCVUcKLSAgICByZWFk
YWJsZVN0cmVhbUNvdW50ZXIuZGVjcmVtZW50KCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZWFkYWJs
ZVN0cmVhbTo6Y2xlYXJDYWxsYmFja3MoKQotewotICAgIG1fY2xvc2VkUHJvbWlzZSA9IE51bGxv
cHQ7Ci0gICAgbV9yZWFkUmVxdWVzdHMuY2xlYXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVh
bTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCi17Ci0gICAgQVNTRVJUKCFtX2Nsb3NlUmVxdWVzdGVk
KTsKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6RXJyb3JlZCk7Ci0KLSAgICBtX2Nsb3Nl
UmVxdWVzdGVkID0gdHJ1ZTsKLQotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkYWJsZSB8
fCBoYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgY2xvc2UoKTsKLX0KLQotdm9pZCBS
ZWFkYWJsZVN0cmVhbTo6Y2xvc2UoKQotewotICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOwot
ICAgIHJlbGVhc2VSZWFkZXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVsZWFzZVJl
YWRlcigpCi17Ci0gICAgaWYgKG1fY2xvc2VkUHJvbWlzZSkKLSAgICAgICAgbV9jbG9zZWRQcm9t
aXNlLnZhbHVlKCkucmVzb2x2ZShudWxscHRyKTsKLQotICAgIGZvciAoYXV0byYgcmVxdWVzdCA6
IG1fcmVhZFJlcXVlc3RzKQotICAgICAgICByZXF1ZXN0LnJlc29sdmVFbmQoKTsKLQotICAgIGNs
ZWFyQ2FsbGJhY2tzKCk7Ci0gICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlbGVhc2VkUmVh
ZGVycy5hcHBlbmQoV1RGOjptb3ZlKG1fcmVhZGVyKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJl
YW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKLXsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
UmVhZGFibGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNsZWFyVmFsdWVzKCk7Ci0gICAgbV9z
dGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwotCi0gICAgSlNDOjpKU1ZhbHVlIGVycm9yID0gdGhpcy0+
ZXJyb3IoKTsKLSAgICBpZiAobV9jbG9zZWRQcm9taXNlKQotICAgICAgICBtX2Nsb3NlZFByb21p
c2UudmFsdWUoKS5yZWplY3QoZXJyb3IpOwotCi0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9y
ZWFkUmVxdWVzdHMpCi0gICAgICAgIHJlcXVlc3QucmVqZWN0KGVycm9yKTsKLQotICAgIGNsZWFy
Q2FsbGJhY2tzKCk7Ci0gICAgaWYgKG1fcmVhZGVyKQotICAgICAgICByZWxlYXNlUmVhZGVyKCk7
Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnN0YXJ0KCkKLXsKLSAgICBtX2lzU3RhcnRlZCA9
IHRydWU7Ci0gICAgcHVsbCgpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpwdWxsKCkKLXsK
LSAgICBpZiAoIW1faXNTdGFydGVkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0
YXRlID09IFN0YXRlOjpFcnJvcmVkIHx8IG1fY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX3JlYWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgaGFzRW5vdWdoVmFsdWVz
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzUHVsbGluZykgewotICAgICAgICBt
X3Nob3VsZFB1bGxBZ2FpbiA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBt
X2lzUHVsbGluZyA9IHRydWU7Ci0gICAgaWYgKGRvUHVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxS
ZWFkYWJsZVN0cmVhbT4gcHJvdGVjdGVkU3RyZWFtKHRoaXMpOwotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtwcm90ZWN0ZWRTdHJlYW1dKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPmZpbmlzaFB1bGxpbmco
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpmaW5pc2hQ
dWxsaW5nKCkKLXsKLSAgICBtX2lzUHVsbGluZyA9IGZhbHNlOwotICAgIGlmIChtX3Nob3VsZFB1
bGxBZ2FpbikgewotICAgICAgICBtX3Nob3VsZFB1bGxBZ2FpbiA9IGZhbHNlOwotICAgICAgICBw
dWxsKCk7Ci0gICAgfQotfQotCi1SZWFkYWJsZVN0cmVhbVJlYWRlciogUmVhZGFibGVTdHJlYW06
OmdldFJlYWRlcihFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobG9ja2VkKCkpIHsKLSAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAg
ICBBU1NFUlQoIW1fcmVhZGVyKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVh
bVJlYWRlcj4gbmV3UmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbVJlYWRl
cj4oKnRoaXMpOwotICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyJiByZWFkZXIgPSAqbmV3UmVhZGVy
LmdldCgpOwotCi0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKSB7Ci0gICAgICAg
IG1fcmVhZGVyID0gV1RGOjptb3ZlKG5ld1JlYWRlcik7Ci0gICAgICAgIHJldHVybiAmcmVhZGVy
OwotICAgIH0KLQotICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobmV3UmVh
ZGVyKSk7Ci0gICAgcmV0dXJuICZyZWFkZXI7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNh
bmNlbChKU0M6OkpTVmFsdWUgcmVhc29uLCBDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKGxvY2tlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVy
cm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhbmNlbE5vQ2hlY2socmVhc29uLCBX
VEY6Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjYW5jZWxOb0No
ZWNrKEpTQzo6SlNWYWx1ZSByZWFzb24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlKQotewotICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KGVycm9yKCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJsZSk7
Ci0KLSAgICBjbGVhclZhbHVlcygpOwotCi0gICAgbV9jYW5jZWxQcm9taXNlID0gV1RGOjptb3Zl
KHByb21pc2UpOwotCi0gICAgY2xvc2UoKTsKLQotICAgIGlmIChkb0NhbmNlbChyZWFzb24pKQot
ICAgICAgICBlcnJvcigpID8gbm90aWZ5Q2FuY2VsRmFpbGVkKCkgOiBub3RpZnlDYW5jZWxTdWNj
ZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6bm90aWZ5Q2FuY2VsU3VjY2VlZGVk
KCkKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKTsKLSAgICBBU1NFUlQo
bV9jYW5jZWxQcm9taXNlKTsKLQotICAgIG1fY2FuY2VsUHJvbWlzZS52YWx1ZSgpLnJlc29sdmUo
bnVsbHB0cik7Ci0gICAgbV9jYW5jZWxQcm9taXNlID0gTnVsbG9wdDsKLX0KLQotdm9pZCBSZWFk
YWJsZVN0cmVhbTo6bm90aWZ5Q2FuY2VsRmFpbGVkKCkKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6Q2xvc2VkKTsKLSAgICBBU1NFUlQobV9jYW5jZWxQcm9taXNlKTsKLQotICAgIG1f
Y2FuY2VsUHJvbWlzZS52YWx1ZSgpLnJlamVjdChlcnJvcigpKTsKLSAgICBtX2NhbmNlbFByb21p
c2UgPSBOdWxsb3B0OwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZWQoQ2xvc2VkUHJv
bWlzZSYmIHByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewot
ICAgICAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcHJvbWlzZS5y
ZWplY3QoZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9jbG9zZWRQcm9t
aXNlID0gV1RGOjptb3ZlKHByb21pc2UpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWFk
KFJlYWRQcm9taXNlJiYgcmVhZFByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZCkgewotICAgICAgICByZWFkUHJvbWlzZS5yZXNvbHZlRW5kKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKLSAgICAg
ICAgcmVhZFByb21pc2UucmVqZWN0KGVycm9yKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmIChoYXNWYWx1ZSgpKSB7Ci0gICAgICAgIHJlYWRQcm9taXNlLnJlc29sdmUocmVhZCgp
KTsKLSAgICAgICAgaWYgKCFtX2Nsb3NlUmVxdWVzdGVkKQotICAgICAgICAgICAgcHVsbCgpOwot
ICAgICAgICBlbHNlIGlmICghaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9yZWFkUmVxdWVzdHMuYXBwZW5kKFdURjo6bW92ZShy
ZWFkUHJvbWlzZSkpOwotICAgIHB1bGwoKTsKLX0KLQotYm9vbCBSZWFkYWJsZVN0cmVhbTo6cmVz
b2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKG1fcmVhZFJl
cXVlc3RzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZWFkUmVx
dWVzdHMudGFrZUZpcnN0KCkucmVzb2x2ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWNvbnN0IGNoYXIqIFJlYWRhYmxlU3RyZWFtOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIlJlYWRhYmxlU3RyZWFtIjsKLX0KLQotYm9vbCBSZWFkYWJsZVN0cmVh
bTo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgYW5kIGRvIGJldHRlciBoZXJlLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNzdiYTU4OWVlMDIxMDU3MTE5
NWQ5YTNhNWE3Y2JhMzUwZDE2NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBD
YW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBSZWFkYWJsZVN0cmVhbV9oCi0jZGVmaW5lIFJlYWRhYmxlU3RyZWFtX2gKLQotI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2lu
Y2x1ZGUgIkRPTVJlcXVlc3RTdGF0ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIERpY3Rpb25hcnk7Ci1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRl
cjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7Ci0KLS8vIFJlYWRhYmxlU3RyZWFtIGltcGxlbWVudHMgdGhlIGNvcmUgb2YgdGhlIHN0
cmVhbXMgQVBJIFJlYWRhYmxlU3RyZWFtIGZ1bmN0aW9uYWxpdHkuCi0vLyBJdCBoYW5kbGVzIGlu
IHBhcnRpY3VsYXIgdGhlIGJhY2twcmVzc3VyZSBhY2NvcmRpbmcgdGhlIHF1ZXVlIHNpemUuCi0v
LyBSZWFkYWJsZVN0cmVhbSBpcyB1c2luZyBhIFJlYWRhYmxlU3RyZWFtU291cmNlIHRvIGdldCBk
YXRhIGluIGl0cyBxdWV1ZS4KLS8vIFNlZSBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3Jn
LyNycwotY2xhc3MgUmVhZGFibGVTdHJlYW0gOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbT4gewot
cHVibGljOgotICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICBSZWFkYWJsZSwKLSAgICAg
ICAgQ2xvc2VkLAotICAgICAgICBFcnJvcmVkCi0gICAgfTsKLQotICAgIHN0YXRpYyBSZWZQdHI8
UmVhZGFibGVTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29u
c3QgRGljdGlvbmFyeSYpOwotICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICBS
ZWFkYWJsZVN0cmVhbVJlYWRlciogZ2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBjb25z
dCBSZWFkYWJsZVN0cmVhbVJlYWRlciogcmVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkZXIu
Z2V0KCk7IH0KLQotICAgIGJvb2wgbG9ja2VkKCkgY29uc3QgeyByZXR1cm4gISFtX3JlYWRlcjsg
fQotCi0gICAgdm9pZCByZWxlYXNlUmVhZGVyKCk7Ci0gICAgYm9vbCBoYXNSZWFkUGVuZGluZ1Jl
cXVlc3RzKCkgeyByZXR1cm4gIW1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKTsgfQotCi0gICAgYm9v
bCBpc0Vycm9yZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkOyB9
Ci0gICAgYm9vbCBpc1JlYWRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6
UmVhZGFibGU7IH0KLSAgICBib29sIGlzQ2xvc2VSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X2Nsb3NlUmVxdWVzdGVkOyB9Ci0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBlcnJvcigpID0g
MDsKLQotICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsK
LSAgICB2b2lkIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7Ci0gICAgdm9pZCBmaW5pc2hQdWxsaW5n
KCk7Ci0gICAgdm9pZCBub3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsKLSAgICB2b2lkIG5vdGlmeUNh
bmNlbEZhaWxlZCgpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBK
U0M6OkpTVmFsdWU+IENhbmNlbFByb21pc2U7Ci0gICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVl
LCBDYW5jZWxQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNhbmNlbE5vQ2hl
Y2soSlNDOjpKU1ZhbHVlLCBDYW5jZWxQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9t
aXNlPHN0ZDo6bnVsbHB0cl90LCBKU0M6OkpTVmFsdWU+IENsb3NlZFByb21pc2U7Ci0gICAgdm9p
ZCBjbG9zZWQoQ2xvc2VkUHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZUl0ZXJh
dG9yV2l0aENhbGxiYWNrPEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlPiBSZWFkUHJvbWlzZTsK
LSAgICB2b2lkIHJlYWQoUmVhZFByb21pc2UmJik7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNp
dCBSZWFkYWJsZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0KLSAgICBib29sIHJl
c29sdmVSZWFkQ2FsbGJhY2soSlNDOjpKU1ZhbHVlKTsKLSAgICB2b2lkIHB1bGwoKTsKLQotcHJp
dmF0ZToKLSAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhblN1c3BlbmRGb3JQ
YWdlQ2FjaGUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgY2xlYXJDYWxsYmFja3MoKTsK
LSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGhhc0Vub3VnaFZhbHVlcygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUg
cmVhZCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZG9QdWxsKCkgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBkb0NhbmNlbChKU0M6OkpTVmFsdWUpID0gMDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWFkYWJsZVN0cmVhbVJlYWRlcj4gbV9yZWFkZXI7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4+IG1fcmVsZWFzZWRSZWFkZXJzOwotCi0gICAgT3B0aW9u
YWw8Q2FuY2VsUHJvbWlzZT4gbV9jYW5jZWxQcm9taXNlOwotICAgIE9wdGlvbmFsPENsb3NlZFBy
b21pc2U+IG1fY2xvc2VkUHJvbWlzZTsKLQotICAgIERlcXVlPFJlYWRQcm9taXNlPiBtX3JlYWRS
ZXF1ZXN0czsKLQotICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9p
c1B1bGxpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9zaG91bGRQdWxsQWdhaW4geyBmYWxzZSB9
OwotICAgIGJvb2wgbV9jbG9zZVJlcXVlc3RlZCB7IGZhbHNlIH07Ci0gICAgU3RhdGUgbV9zdGF0
ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwotfTsKLQotLy8gVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBx
dWV1ZSBhbmQga25vd3Mgd2hldGhlciB0aGVyZSBpcyBzdWZmaWNpZW50IGRhdGEgaW4gaXQuCi0v
LyAgIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBlcnJvciBzdG9yYWdlLCBwdWxsaW5nIGFu
ZCBjYW5jZWxsaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2h1bmtUeXBlPgotY2xhc3MgUmVhZGFi
bGVFbnF1ZXVpbmdTdHJlYW0gZmluYWwgOiBwdWJsaWMgUmVhZGFibGVTdHJlYW0gewotcHJvdGVj
dGVkOgotICAgIGV4cGxpY2l0IFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIDogUmVhZGFibGVTdHJlYW0oY29udGV4dCkgeyB9Ci0KLSAgICB2
b2lkIGVucXVldWVDaHVuayhDaHVua1R5cGUmJiBjaHVuaykgeyBtX3F1ZXVlLmFwcGVuZChzdGQ6
OmZvcndhcmQoY2h1bmspKTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZh
bHVlcygpIG92ZXJyaWRlIHsgbV9xdWV1ZS5jbGVhcigpOyB9Ci0gICAgdmlydHVhbCBib29sIGhh
c0Vub3VnaFZhbHVlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOyB9
Ci0gICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9x
dWV1ZS5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7
Ci0KLSAgICBEZXF1ZTxDaHVua1R5cGU+IG1fcXVldWU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaHVua1R5cGU+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFt
PENodW5rVHlwZT46OnJlYWQoKQotewotICAgIERPTVJlcXVlc3RTdGF0ZSBzdGF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiB0b0pTKHN0YXRlLmV4ZWMoKSwgdG9KU0RP
TUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXRlLmV4ZWMoKSksIG1f
cXVldWUucmVhZCgpKTsKLX0KLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJlYWRhYmxlU3Ry
ZWFtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjNjMjY0MzE4YzU0MTIwYTcw
ODg5MWExY2RhYzUzZjA2OGNiMGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1bCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRTdGF0ZSwKLSAgICBDb25zdHJ1Y3Rv
cihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBzb3VyY2UsIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgRGljdGlvbmFyeSBzdHJhdGVneSksCi0gICAgQ29uZGl0aW9uYWw9U1RS
RUFNU19BUEksCi0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KLV0gaW50ZXJmYWNlIFJlYWRhYmxl
U3RyZWFtIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBQcm9taXNlIGNhbmNlbChbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIGFueSByZWFzb24pOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGdldFJlYWRlcigpOwotICAgIFtDdXN0b21dIFByb21pc2UgcGlw
ZVRvKGFueSBzdHJlYW1zLCBhbnkgb3B0aW9ucyk7Ci0gICAgW0N1c3RvbV0gT2JqZWN0IHBpcGVU
aHJvdWdoKGFueSBkZXN0LCBhbnkgb3B0aW9ucyk7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBsb2NrZWQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNGMzYmVjYmIxZDc3ZDM4YzhlOTNjODRmNDg2MzM5ZWY3NGUzZTZmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyX2gKLQot
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0v
LyBUaGlzIGNsYXNzIGlzIG9ubHkgdXNlZCBmb3IgSlMgc291cmNlIHJlYWRhYmxlIHN0cmVhbXMg
dG8gYWxsb3cgZW5xdWV1aW5nLCBjbG9zaW5nIG9yIGVycm9yaW5nIGEgcmVhZGFibGUgc3RyZWFt
LgotLy8gSXRzIGRlZmluaXRpb24gaXMgYXQgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9y
Zy8jcnMtY29udHJvbGxlci1jbGFzcy4KLS8vIE5vdGUgdGhhdCBpdHMgY29uc3RydWN0b3IgaXMg
dGFraW5nIGEgUmVhZGFibGVKU1N0cmVhbSBhcyBpdCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBK
UyBzb3VyY2VzLgotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHsKLXB1YmxpYzoKLSAg
ICBleHBsaWNpdCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoUmVhZGFibGVKU1N0cmVhbSYgc3Ry
ZWFtKQotICAgICAgICA6IG1fc3RyZWFtKHN0cmVhbSkgeyB9Ci0KLSAgICBSZWFkYWJsZUpTU3Ry
ZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbTsgfQotCi0gICAgdm9pZCBlcnJvcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgbV9zdHJlYW0uZXJyb3IoKnN0YXRlLCB2YWx1ZSwgZWMpOyB9Ci0KLSAgICB2b2lkIGVucXVl
dWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpIHsgbV9zdHJlYW0u
ZW5xdWV1ZSgqc3RhdGUsIHZhbHVlKTsgfQotCi0gICAgdm9pZCByZWYoKSB7IG1fc3RyZWFtLnJl
ZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9zdHJlYW0uZGVyZWYoKTsgfQotCi0gICAgdm9p
ZCBjbG9zZShFeGNlcHRpb25Db2RlJiBlYykgeyBtX3N0cmVhbS5jbG9zZShlYyk7IH0KLSAgICBk
b3VibGUgZGVzaXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbS5kZXNpcmVkU2l6ZSgp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbSYgbV9zdHJlYW07Ci19OwotCi19
Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gUmVhZGFibGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBiOGM4YjVlOTc3MThhMTRmZGJi
ZGNlOWM2MzVhNmY2NzRlODU1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8g
YmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBD
QU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKLSAgICBDdXN0b21Db25z
dHJ1Y3RvciwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIE5vSW50ZXJmYWNl
T2JqZWN0Ci1dIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgewotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gdm9pZCBlbnF1ZXVlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgYW55IGNodW5rKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNsb3NlKCk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgZXJyb3IoW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgZXJyb3IpOwotCi0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIGRvdWJsZSBkZXNpcmVkU2l6ZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2YzN2Q5OWMwMWQ5YzFhYWFlOWRjOGVjMjhjZjc3YzVlNmVmMGRiOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0KLSNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotCi0j
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUmVh
ZGFibGVTdHJlYW1SZWFkZXI6OmNhbmNlbChKU0M6OkpTVmFsdWUgcmVhc29uLCBSZWFkYWJsZVN0
cmVhbTo6Q2FuY2VsUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RyZWFtLmlzUmVh
ZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHByb21pc2Uu
cmVzb2x2ZShudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3N0cmVhbS5j
YW5jZWxOb0NoZWNrKHJlYXNvbiwgV1RGOjptb3ZlKHByb21pc2UpKTsKLX0KLQotdm9pZCBSZWFk
YWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRQcm9taXNlJiYg
cHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJl
YWRlcigpICE9IHRoaXMpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLmNsb3NlZChXVEY6Om1vdmUocHJvbWlz
ZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxlU3RyZWFt
OjpSZWFkUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUo
KSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2
ZUVuZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLnJlYWQoV1RGOjpt
b3ZlKHByb21pc2UpKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVsZWFzZUxv
Y2soRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKG1fc3RyZWFtLnJlYWRlcigpICE9IHRo
aXMpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9zdHJlYW0uaGFzUmVhZFBlbmRpbmdSZXF1
ZXN0cygpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIG1fc3RyZWFtLnJlbGVhc2VSZWFkZXIoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZDJmYjUzZDUxMTBiMmQxMTZhNTM3
NWVkYzYyODM1ZjMxMDQ5YjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFJlYWRhYmxlU3RyZWFtUmVhZGVyX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1S
ZWFkZXJfaAotCi0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJTY3JpcHRX
cmFwcGFibGUuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLS8vIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGltcGxl
bWVudHMgYWNjZXNzIHRvIFJlYWRhYmxlU3RyZWFtIGZyb20gSmF2YVNjcmlwdC4KLS8vIEl0IGJh
c2ljYWxseSBhbGxvd3MgYWNjZXNzIHRvIHRoZSBSZWFkYWJsZVN0cmVhbSBpZmYgdGhlIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlIGlzIHRoZSBhY3RpdmUgcmVhZGVyCi0vLyBvZiB0aGUg
UmVhZGFibGVTdHJlYW0uCi0vLyBNb3N0IG9mIHRoaXMgaGFuZGxpbmcgaXMgaGFwcGVuaW5nIGlu
IHRoZSBjdXN0b20gSlMgYmluZGluZyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlci4KLS8vIFNlZSBo
dHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNyZWFkZXItY2xhc3MgZm9yIG1vcmUgaW5m
b3JtYXRpb24uCi1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7Ci1wdWJsaWM6Ci0gICAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKLSAgICAgICAgOiBtX3N0
cmVhbShzdHJlYW0pIHsgfQotCi0gICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlLCBSZWFkYWJs
ZVN0cmVhbTo6Q2FuY2VsUHJvbWlzZSYmKTsKLSAgICB2b2lkIGNsb3NlZChSZWFkYWJsZVN0cmVh
bTo6Q2xvc2VkUHJvbWlzZSYmKTsKLSAgICB2b2lkIHJlYWQoUmVhZGFibGVTdHJlYW06OlJlYWRQ
cm9taXNlJiYpOwotICAgIHZvaWQgcmVsZWFzZUxvY2soRXhjZXB0aW9uQ29kZSYpOwotCi0gICAg
dm9pZCByZWYoKSB7IG1fc3RyZWFtLnJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9zdHJl
YW0uZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIFJlYWRhYmxlU3RyZWFtJiBtX3N0cmVhbTsK
LX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBSZWFkYWJsZVN0cmVhbV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5Y2U5MzEyMTRhODM4NzdlZWZm
MWQyOTgzNjQ2NGE0ZDE1NDFmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9O
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotWwotICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAotICAgIEN1c3RvbUNvbnN0cnVj
dG9yKGFueSBwcm9wZXJ0aWVzKSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBTa2lwVlRh
YmxlVmFsaWRhdGlvbgotXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW1SZWFkZXIgewotICAgIFBy
b21pc2UgcmVhZCgpOwotICAgIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgYW55IHJlYXNvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZWxlYXNlTG9j
aygpOwotCi0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgY2xv
c2VkOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODYxZTdlOTRlZDIyOWU5OGNj
MTI3NzY2ZTk4ZmYxNjA4YjZmY2MzMy4uNDdkYWZmNGYzY2E0NDk4ZTc0Y2I2NjdjNDkwNDBlNGY2
NmM1ODQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTYxNiw4ICs2MTYsNiBAQCBs
aXN0KFJFTU9WRV9JVEVNIFdlYkNvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9ET01QYW5uZXJOb2RlLm1tCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0RPTVBvcFN0YXRlRXZlbnQubW0KICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vRE9NUmFkaW9Ob2RlTGlzdC5tbQotICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9ET01SZWFkYWJsZVN0cmVhbS5tbQotICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9ET01SZWFkYWJsZVN0cmVhbVJlYWRlci5tbQogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9ET01TY3JpcHRQcm9jZXNzb3JOb2RlLm1tCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVNjcmlwdFByb2ZpbGUubW0KICAgICAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vRE9NU2NyaXB0UHJvZmlsZU5vZGUubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGQ0NDk4NGM3NGVlZGEwOTZm
ZTYwYjMwNWY3OGRkOWEyOTUzZGRlZGIuLjRlNzM1YTdhMWEwN2IwMzc4OTY5ZDM4ZWQ2YjkzZDVj
NzYzNmIzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagpAQCAtMzkzMSw0OCArMzkzMSw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW0u
Y3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAiPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2Vf
V2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXIuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlY3QuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTY4MDMsOCArNjc2MSw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xO
b3RpZmljYXRpb25DZW50ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xub3RpZmljYXRpb25zXFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5jcHAiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJl
YW0uY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0
aG9yaXplci5jcHAiIC8+CkBAIC0xODQ5MSw2MiArMTg0NDcsNiBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1D
dXN0b20uY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5D
YWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdf
V2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xSZWFkYWJsZUpTU3RyZWFtLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrQ3VzdG9tLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CkBAIC0yMDAxNSw5ICsxOTkxNSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYWRpb05vZGVMaXN0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYW5nZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmFuZ2VFeGNl
cHRpb24uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU1JlYWRhYmxlU3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIgLz4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNSZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUkdCQ29s
b3IuaCIgLz4KQEAgLTIwNTM3LDkgKzIwNDM0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DbGllbnQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9iYWxT
Y29wZU5vdGlmaWNhdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNccGx1Z2luc1xQbHVnaW5SZXBsYWNlbWVudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uRGF0YS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9u
V3JhcHBlci5oIiAvPgpAQCAtMjI4NDUsNCArMjI3MzksNCBAQAogICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91
cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKaW5kZXggNGFjZGRlMWI1ZWIxMmFiYmY2NTRlZTExNGNmOTlhNmE2ZmZjNmVlZS4u
YWEzMDExMDY2YTE3OTFkZjBkOTMxMmFjZTI1NWJhMTVlMzc0MGYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtMzQsOSArMzQsNiBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1xub3RpZmljYXRp
b25zIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthNTk1ZmZjZi1mYTIyLTQ4YTktOTFhZC1j
NTI4YTc1YTYyZTV9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgotICAgIDxGaWx0
ZXIgSW5jbHVkZT0iTW9kdWxlc1xzdHJlYW1zIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntk
NjdiYTViZC02NTc0LTQyZjMtOWRhMy01NWY1NTA3NDc4NjN9PC9VbmlxdWVJZGVudGlmaWVyPgot
ICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1x3ZWJkYXRhYmFzZSI+
CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NWUwZTk1ODItYjRiNC00NTJkLWE2ZGUtN2M2YjMx
ZjYxNGU3fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTQ2OCwxMiArNDY1
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xX
b3JrZXJHbG9iYWxTY29wZU5vdGlmaWNhdGlvbnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxl
c1xub3RpZmljYXRpb25zPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW0uY3BwIj4KLSAgICAg
IDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1zPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1SZWFk
ZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1zPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0
YWJhc2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ0MTAsMTggKzQ0MDEsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRh
YmxlU3RyZWFtQ3VzdG9tLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAiPgotICAgICAgPEZpbHRlcj5i
aW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAiPgot
ICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcUmVhZGFibGVKU1N0cmVhbS5jcHAi
PgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFja0N1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTY5MiwxNSArNTY3MSw2IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYW5nZUV4Y2VwdGlvbi5j
cHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
UmVhZGFibGVTdHJlYW0uY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAiPgotICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU1JlY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzNjI3LDE1ICsxMzU5Nyw2IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1dvcmtlck5hdmlnYXRvci5oIj4KICAgICAg
IDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3Ry
ZWFtLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291
cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCI+Ci0gICAg
ICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNYTUxIdHRwUmVx
dWVzdC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KQEAgLTE1MjA1LDE1ICsxNTE2Niw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250Q2FzY2FkZUZvbnRzLmgiPgogICAgICAgPEZpbHRl
cj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiPgotICAg
ICAgPEZpbHRlcj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcc3RyZWFtczwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1z
XFJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXHN0cmVhbXM8
L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxcSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNTQ2Miw0ICsxNTQxNCw0IEBACiAgICAgICA8RmlsdGVy
PnBsYXRmb3JtXHdpbjwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1NDBk
OGE0OTNiMDQ1MDNkYmE4MGIyM2ExYmQyZjBiOWVjYjljNWUuLmE4NjA5ZjViZGE2MWMwZWYxMTU1
Nzc5NjQzNmRhNGJlZGM3ZGZkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NjksNyArMTQ2OSw2IEBACiAJCTQwRUNBRTdF
MTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01F
cnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU4
MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0
NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYg
LyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwotCQk0MTE4OUVGOTFBRDgyNzM3MDBC
OTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExODlFRjgxQUQ4MjMzQzAwQjkw
QTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDEy
MzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5
QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NG
Q0EgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8q
IFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07
CkBAIC0xNTAxLDE2ICsxNTAwLDggQEAKIAkJNDE4QTA2RDExMzNDMDRENTAwQ0QzNzlDIC8qIEV2
ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCAq
LzsgfTsKIAkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIw
RkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgw
NTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKLQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1IC8q
IFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0u
Y3BwICovOyB9OwotCQk0MTk4QkRGMTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVh
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5OEJE
RUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLzsgfTsKIAkJNDE5QkMy
REUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZE
IC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRE
NkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3Rh
dGUuaCAqLzsgfTsKLQkJNDE5RkFGQUUxQUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFt
UmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOUZBRkFCMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi87
IH07Ci0JCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFGQUMx
QUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IH07Ci0JCTQxOUZB
RkIxMUFCQUJERUQwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkIwMUFC
QUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLzsgfTsK
LQkJNDFBMDIzRUYxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0VCMUEzOURCNzkw
MEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTQxQTAyM0YwMUEzOURCN0Ew
MEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFBMDIzRUMxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3Ry
ZWFtLmggKi87IH07Ci0JCTQxQTAyM0Y2MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3Ry
ZWFtQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTAyM0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNw
cCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsg
fTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQx
MDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0MUJG
NzAwQzBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThE
RUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzMzQsOCArMjMyNSw2IEBACiAJCTY1RkQ0NjY2MTlCNTk2
RjYwMDFFMkI0RCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODZGRTNEMTlCNTQ4
QkQwMDVDM0M4MiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSAqLzsg
fTsKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFC
IC8qIFBhZ2UuY3BwICovOyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZl
SW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZDNEM5NkRFMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQk2QzRDOTZERjFBRDQ0
ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2NUE1
MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQk2QzYzODg5NUE5NkND
RUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBD
OEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4
Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0
NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CiAJCTZDRERF
OEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2
RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjU1MiwxMCArMjU0MSw2IEBACiAJCTdDNDhBNkQwMTkxQzlE
NjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktp
dE5hbWVzcGFjZS5jcHAgKi87IH07CiAJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJL
aXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNDhBNkNGMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLzsgfTsK
IAkJN0M0OTAyQTIxOEI4MjVGODAwN0Q5Mjk4IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oIGlu
IENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODU5ODlEQ0EwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oICov
OyB9OwotCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEODFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTdDNEM5NkRE
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNSZWFkYWJsZVN0cmVhbS5oICovOyB9OwotCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5jcHAgKi87IH07Ci0JCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5oICovOyB9OwogCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vydmlj
ZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNEVERDc0MUE3QjYwNzgw
MDE5OEM0RCAvKiBGb250Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1tICov
OyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1
QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CkBAIC04NjU3LDkg
Kzg2NDIsNiBAQAogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYg
LyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTE4OUVGNjFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTE4OUVGNzFBRDgyMzI4
MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTE4OUVGODFBRDgyMzNDMDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNE
MzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEV2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04Njkz
LDE4ICs4Njc1LDggQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0
Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3Bh
dGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMjBGRjk1N0FF
MDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVh
ZGFibGVKU1N0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZWFkYWJsZUpTU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5OEJE
RUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVKU1N0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREQxNjg1MzI5OTAwRDY0
RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlzaXRlZExpbmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlG
QUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIgLyog
UmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5
RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUEwMjNFQzFBMzlEQjc5MDBGNzIyQ0YgLyog
UmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFi
bGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRUQxQTM5REI3
OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTAyM0Yz
MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyog
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVkaWNhdGVkV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERF
QyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NjMyLDggKzk2MDQsNiBAQAogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNl
cHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFC
IC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFC
NDEgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRB
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRCMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uT3ZlcnNldFN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODgzLDEwICs5ODUzLDYgQEAKIAkJN0M0OEE2
Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNw
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZEMjE5MUM5RDhFMDAwMjY2NzQg
LyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFk
YWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Jl
YWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2RDkx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2REIxQUQ0
NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vydmlj
ZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0RURENzMxQTdCNjA3ODAwMTk4
QzREIC8qIEZvbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZvbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENDkx
NUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNTI5MCw3ICsxNTI1Niw2IEBACiAJCQkJQkM5ODU0NDYwQ0QzREE1
RjAwMDY5QkMxIC8qIFJhbmdlcyAqLywKIAkJCQlBQTdGRUU5QjE2QTQ5MUExMDA0QzBDMzMgLyog
U3BlZWNoICovLAogCQkJCUE4M0I3OTE1MENDQjAwNzgwMDBCMDgyNSAvKiBTdG9yYWdlICovLAot
CQkJCTQxQTAyM0ZBMUEzOUYxM0EwMEY3MjJDRiAvKiBTdHJlYW1zICovLAogCQkJCUE4M0I3OTBB
MENDQUZGNDcwMDBCMDgyNSAvKiBTVkcgKi8sCiAJCQkJNDE3REE3MTIxMzczNUQ5MDAwN0M1N0ZC
IC8qIFRlc3RpbmcgKi8sCiAJCQkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdEIC8qIFRocmVhZHMg
Ki8sCkBAIC0xNjA3NCwzNCArMTYwMzksNiBAQAogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNDFBMDIzRUExQTM5REI3OTAwRjcyMkNGIC8qIHN0cmVh
bXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTQxQTAy
M0VCMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCi0JCQkJNDFBMDIz
RUMxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCi0JCQkJNDFBMDIzRUQx
QTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLywKLQkJCQk0MTE4OUVGNjFB
RDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCi0JCQkJNDEx
ODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8s
Ci0JCQkJNDE5RkFGQUIxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNw
cCAqLywKLQkJCQk0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaCAqLywKLQkJCQk0MTlGQUZBRDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaWRsICovLAotCQkJKTsKLQkJCXBhdGggPSBzdHJlYW1zOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKLQkJNDFBMDIzRkExQTM5RjEzQTAwRjcyMkNGIC8qIFN0cmVhbXMg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTdDNEM5NkQ4
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmNwcCAqLywKLQkJCQk3QzRDOTZE
OTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5oICovLAotCQkJCTZDNEM5NkRB
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8sCi0J
CQkJNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmggKi8sCi0JCQkJN0M0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwICovLAotCQkJCTdDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmggKi8sCi0JCQkpOwotCQkJbmFtZSA9IFN0cmVhbXM7Ci0JCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwotCQl9OwogCQk0MzkwNDZDMjEyREEyNUNFMDBBRjgwQTIgLyogbWF0
aG1sICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE4NTU0
LDcgKzE4NDkxLDYgQEAKIAkJCQkwNzJBRTFERTE4M0MwNTEzMDAwQTU5ODggLyogcGx1Z2lucyAq
LywKIAkJCQk4OUY2MEIwODE1N0Y2ODM1MDA3NUUxNTcgLyogcXVvdGEgKi8sCiAJCQkJQUEyQTVB
QjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVjaCAqLywKLQkJCQk0MUEwMjNFQTFBMzlEQjc5MDBG
NzIyQ0YgLyogc3RyZWFtcyAqLywKIAkJCQlGRDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2Vi
YXVkaW8gKi8sCiAJCQkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICov
LAogCQkJCTk3QUFCQ0Y3MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJzb2NrZXRzICovLApAQCAtMjEz
MzcsMTEgKzIxMjczLDggQEAKIAkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRh
dGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4
IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAotCQkJCTQxMTg5RUY4MUFEODIzM0Mw
MEI5MEEwRCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAgKi8sCiAJCQkJ
RTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCAq
LywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuaCAqLywKLQkJCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVh
bS5jcHAgKi8sCi0JCQkJNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJl
YW0uaCAqLywKIAkJCQlCQ0EzNzhCQTBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9u
LmNwcCAqLywKIAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9u
LmggKi8sCiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1l
RGF0YS5jcHAgKi8sCkBAIC0yMTUxMSw4ICsyMTQ0NCw2IEBACiAJCQkJRkRCRDFERkIxNjdGRTI3
RDAwNTFBMTFFIC8qIEpTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwICovLAogCQkJCUZEOEFBNjNE
MTY5NTE0QTcwMEQyRUE2OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwICovLAogCQkJCUE4NUYy
MjA4MTQzMDM3N0QwMDdDQzg4NCAvKiBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwICovLAotCQkJ
CTQxQTAyM0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAq
LywKLQkJCQk0MTlGQUZCMDFBQkFCRDdCMDA1QjgyOEIgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJNDk5OEFFRDMxM0ZDNDE3RjAwOTBCMUFBIC8qIEpTUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwICovLAogCQkJCTRBRTBCRjg4MTgzNjA4
MzEwMEYzODUyRCAvKiBKU1JUQ0ljZUNhbmRpZGF0ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdDQTEy
MEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovLApA
QCAtMjU2MTIsOSArMjU1NDMsNiBAQAogCQkJCUI2NThGRkEyMTUyMkVGM0EwMERENTU5NSAvKiBK
U1JhZGlvTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjAyMDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMjNDQTU1RDBBQjBFQUFFMDA1
MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M0Qzk2REQx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJ
CTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJN0M0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkUyRjEyMEMxQjU4MzgwMDIw
MjM1RiAvKiBKU1JlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUNFMTNGOUQ2QzkwMDkw
QjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzc0REE0OTEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjMxMSw5ICsyNjIzOSw2IEBACiAJCQkJRjU1QjNEQ0UxMjUxRjEyRDAwM0VGMjY5
IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTg0RTlFMTE3NjY4QkYx
MDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MjdDMTFE
MzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxOThCREYxMUE4MTE0MzEwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MUEwMjNGMDFBMzlEQjdBMDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0u
aCBpbiBIZWFkZXJzICovLAotCQkJCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFB
MzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFB
OTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIwMSwxMiArMjkxMjYsNiBAQAogCQkJCUI2NThG
RkExMTUyMkVGM0EwMERENTU5NSAvKiBKU1JhZGlvTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjVERjMyMDEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkM0Qzk2REUxQUQ0NDgzNTAwMzY1QTUw
IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQx
MTg5RUY5MUFEODI3MzcwMEI5MEEwRCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUEwMjNGNjFBMzlEQkNCMDBGNzIyQ0YgLyogSlNS
ZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzRDOTZERTFBRDQ0
ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0MTlGQUZCMTFBQkFCREVEMDA1QjgyOEIgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ZFMkYxMTBDMUI1ODM3MDAyMDIzNUYgLyog
SlNSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OThBRUNEMTNGOUQ2QzkwMDkwQjFBQSAv
KiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5OThBRUQ0MTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4MzksOSArMjk3NTgsNiBAQAogCQkJ
CTk3OEQwN0JBMTQ1QTBGM0MwMDk2OTA4RCAvKiBSYW5nZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGNTVCM0RDRDEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNo
YXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxOThCREYwMUE4MTE0MjIwMEIyMkZCNSAvKiBS
ZWFkYWJsZUpTU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxQTAyM0VGMUEzOURCN0Ew
MEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTlGQUZB
RTFBQkFCRDA4MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNEE0RjY1NzAxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVGQ0M5RkMxQjRERjdGMjAwRTcy
MzI2IC8qIERPTVVSTE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNDc2YjZi
MGNlMmJlNzFmZDQ4MWJiODQzOWJmMDMzNTcxNmVmYzY2Zi4uMmEzNDNiOTg0MmU5ZjY0NTI1YjIz
NzlkMDE1MzY1MTI0NWVkMDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMTcsMTIgKzExNyw2IEBACiAjaW5jbHVkZSAi
SlNOb2RlT3JTdHJpbmcuY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAiCiAjaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCIKLSNpZiBFTkFCTEUoU1RS
RUFNU19BUEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3Bw
IgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0u
Y3BwIgotI2VuZGlmCiAjaW5jbHVkZSAiSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDlhYjBhOGYwZDBmYmQ3OGU1ZTU3
ZDU4MDQ3N2U2NTVjYjg5NTk1ZDEuLjkwYTg1MjczOTY3OGE3ZjM3NThkNDI1NDAyYjBmZjk2ZTY2
M2RjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5j
bHVkZSA8cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmg+CiAjaW5jbHVkZSA8cnVudGltZS9NaWNy
b3Rhc2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOTdkMWYzOGE0YzZk
YTVkNDRlYjEwMzNjZTJmOGMyZTY4ODVlYjAyNS4uMWVlM2U1Mzc1NWM3NzFlZDdmN2RmZmQ0Njhh
YWE4YjVmMmZmZDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcApAQCAtNTYsNiArNTYsOCBAQAogI2luY2x1ZGUgIkpTV2ViS2l0TmFt
ZXNwYWNlLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5o
PgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTks
NiArMTIxLDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0luZGV4ZWREQihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKIH0KICNlbmRpZgogCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dSZWFkYWJsZVN0cmVhbShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7Cisg
ICAgYXV0byogY2FzdGVkVGhpcyA9IHRvSlNET01XaW5kb3coSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5yZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKCkpOworfQorCiBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwpA
QCAtMjAwLDYgKzIxMCwxMSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLlJlYWRh
YmxlU3RyZWFtKSkgeworICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBhbGxvd3NB
Y2Nlc3MgPyBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciA6IFJlYWRPbmx5
IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBqc0RPTVdpbmRvd1JlYWRhYmxlU3RyZWFtKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVu
dHJ5ID0gSlNET01XaW5kb3c6OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJv
cGVydHlOYW1lKTsKICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVD
dXN0b20odGhpc09iamVjdCwgYWxsb3dzQWNjZXNzID8gZW50cnktPmF0dHJpYnV0ZXMoKSA6IFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4MTdlMzNjN2NmYmZiZDhmNzAyMjM3NTU4ZDczMGY4MDMyYjgwYWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUg
bmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiCi0KLSNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJSZWFk
YWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIHNo
b3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0
OGQxNmIyZmViZTc5ODdkMmRkNjZmNWNjODY2NWY1YTdjMGVlNGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykg
MjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgotCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpT
RE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNs
dWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNp
bmNsdWRlICJSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJwaXBl
VG8gaXMgbm90IGltcGxlbWVudGVkIikpOwotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGVycm9yKTsKLX0KLQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtOjpwaXBl
VGhyb3VnaChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNWYWx1ZSBlcnJvciA9IGNyZWF0ZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicGlwZVRocm91Z2ggaXMgbm90IGltcGxlbWVudGVkIikp
OwotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZTJlMWNiMjQ0NTAyMzE4MmQ3ZjEzZjkw
ZWViNzQyODRiYWU4NzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1
c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04g
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Ci0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0jaW5j
bHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJl
YW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg+Ci0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChtX2Nsb3NlZFByb21pc2VEZWZlcnJl
ZCkKLSAgICAgICAgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci0K
LSAgICBjb25zdF9jYXN0PEpTUmVhZGFibGVTdHJlYW1SZWFkZXIqPih0aGlzKS0+bV9jbG9zZWRQ
cm9taXNlRGVmZXJyZWQuc2V0KGV4ZWMtPnZtKCksIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0KCkpKTsKLSAgICBpbXBsKCkuY2xvc2VkKERlZmVycmVkV3JhcHBl
cihleGVjLCBnbG9iYWxPYmplY3QoKSwgbV9jbG9zZWRQcm9taXNlRGVmZXJyZWQuZ2V0KCkpKTsK
LQotICAgIHJldHVybiBtX2Nsb3NlZFByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOwotfQotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHRha2VzIGEgUmVh
ZGFibGVTdHJlYW0gYXMgcGFyYW1ldGVyIikpKTsKLQotICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0
cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKLSAgICBpZiAoIXN0cmVhbSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJlYWRlciBj
b25zdHJ1Y3RvciBwYXJhbWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0iKSkpOwotCi0gICAg
aWYgKHN0cmVhbS0+aW1wbCgpLmxvY2tlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBpcyBhIGxvY2tlZCBSZWFkYWJsZVN0cmVhbSIp
KSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHN0cmVhbS0+Z2xvYmFsT2JqZWN0KCksIHN0
cmVhbS0+aW1wbCgpLmdldFJlYWRlcihlYykpKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICByZXR1
cm4gdmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3OWI2NjZjMWQyYTEzYTUyN2Q3YmM3OGE2MTk5OTU1NTY0ZGNl
NDFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCi0KLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5o
IgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNs
dWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZS5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5s
aW5lIEpTVmFsdWUgZ2V0UHJvcGVydHlGcm9tT2JqZWN0KEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmpl
Y3QmIG9iamVjdCwgY29uc3QgY2hhciogaWRlbnRpZmllcikKLXsKLSAgICByZXR1cm4gb2JqZWN0
LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgaWRlbnRpZmllcikpOwot
fQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywg
SlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJn
dW1lbnRzKQotewotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIHJldHVybiBjYWxsKCZl
eGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRz
KTsKLX0KLQotSlNQcm9taXNlKiBSZWFkYWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcikKLXsKLSAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gZ2V0UHJvcGVydHlGcm9tT2JqZWN0KHN0YXRlLCAqbV9zb3Vy
Y2UuZ2V0KCksIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigp
KSB7Ci0gICAgICAgIGlmICghZnVuY3Rpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRo
cm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
UmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxs
YWJsZSIpKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHBhcmFtZXRlcik7
Ci0KLSAgICBKU1Byb21pc2UqIHByb21pc2UgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGNh
bGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24sIG1fc291cmNlLmdldCgpLCBhcmd1bWVudHMpKTsK
LQotICAgIEFTU0VSVCghKHByb21pc2UgJiYgc3RhdGUuaGFkRXhjZXB0aW9uKCkpKTsKLSAgICBy
ZXR1cm4gcHJvbWlzZTsKLX0KLQotc3RhdGljIHZvaWQgdGhlblByb21pc2UoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNQcm9taXNlKiBkZWZlcnJlZFByb21pc2UsIEpTVmFsdWUgZnVsbGZpbEZ1bmN0aW9u
LCBKU1ZhbHVlIHJlamVjdEZ1bmN0aW9uKQotewotICAgIEpTVmFsdWUgdGhlblZhbHVlID0gZGVm
ZXJyZWRQcm9taXNlLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPnRoZW4p
OwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVs
bGZpbEZ1bmN0aW9uKTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdEZ1bmN0aW9uKTsKLQot
ICAgIGNhbGxGdW5jdGlvbihzdGF0ZSwgdGhlblZhbHVlLCBkZWZlcnJlZFByb21pc2UsIGFyZ3Vt
ZW50cyk7Ci19Ci0KLUpTRE9NR2xvYmFsT2JqZWN0KiBSZWFkYWJsZUpTU3RyZWFtOjpnbG9iYWxP
YmplY3QoKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
bV9zb3VyY2UtPmdsb2JhbE9iamVjdCgpKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0Z1bmN0aW9u
KiBjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJl
YWRhYmxlU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVTdHJl
YW0+IHN0cmVhbSA9ICZyZWFkYWJsZVN0cmVhbTsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHN0YXRlLnZtKCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5n
KCksIFtzdHJlYW1dKEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgc3RyZWFtLT5zdGFydCgpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0pOwotfQot
Ci1zdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3Ry
ZWFtJiBzdHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJl
YW0gPSAmc3RyZWFtOwotICAgIHN0cmVhbS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RU
YXNrKFtwcm90ZWN0ZWRTdHJlYW1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAg
IHByb3RlY3RlZFN0cmVhbS0+c3RhcnQoKTsKLSAgICB9KTsKLX0KLQotSlNDOjpKU1ZhbHVlIFJl
YWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQoKQotewot
ICAgIFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSBjaHVuayA9IG1fcXVldWUudGFrZUZpcnN0KCk7Ci0g
ICAgbV90b3RhbFF1ZXVlU2l6ZSAtPSBjaHVuay5zaXplOwotICAgIHJldHVybiBjaHVuay52YWx1
ZS5nZXQoKTsKLX0KLQotdm9pZCBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3Ry
ZWFtVmFsdWU+OjplbnF1ZXVlQ2h1bmsoUmVhZGFibGVKU1N0cmVhbVZhbHVlJiYgY2h1bmspCi17
Ci0gICAgbV90b3RhbFF1ZXVlU2l6ZSArPSBjaHVuay5zaXplOwotICAgIG1fcXVldWUuYXBwZW5k
KFdURjo6bW92ZShjaHVuaykpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQo
RXhlY1N0YXRlJiBleGVjKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKCZleGVjKTsKLQotICAg
IEpTUHJvbWlzZSogcHJvbWlzZSA9IGludm9rZShleGVjLCAic3RhcnQiLCBqc0NvbnRyb2xsZXIo
ZXhlYywgZ2xvYmFsT2JqZWN0KCkpKTsKLQotICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXByb21pc2UpIHsKLSAgICAgICAgc3RhcnRSZWFk
YWJsZVN0cmVhbUFzeW5jKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRo
ZW5Qcm9taXNlKGV4ZWMsIHByb21pc2UsIGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rp
b24oZXhlYywgKnRoaXMpLCBtX2Vycm9yRnVuY3Rpb24uZ2V0KCkpOwotfQotCi1zdGF0aWMgaW5s
aW5lIEpTRnVuY3Rpb24qIGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3Rh
dGUmIGV4ZWMsIFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxl
U3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAmc3RyZWFtOwotICAgIHJldHVybiBKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYy52bSgpLCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMCwgU3Ry
aW5nKCksIFtwcm90ZWN0ZWRTdHJlYW1dKEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgcHJvdGVjdGVk
U3RyZWFtLT5maW5pc2hQdWxsaW5nKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9Q
dWxsKCkKLXsKLSAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxF
eGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0YXRlKTsKLQotICAgIEpTUHJvbWlzZSog
cHJvbWlzZSA9IGludm9rZShzdGF0ZSwgInB1bGwiLCBqc0NvbnRyb2xsZXIoc3RhdGUsIGdsb2Jh
bE9iamVjdCgpKSk7Ci0KLSAgICBpZiAocHJvbWlzZSkKLSAgICAgICAgdGhlblByb21pc2Uoc3Rh
dGUsIHByb21pc2UsIGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihzdGF0ZSwgKnRo
aXMpLCBtX2Vycm9yRnVuY3Rpb24uZ2V0KCkpOwotCi0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKSB7Ci0gICAgICAgIHN0b3JlRXhjZXB0aW9uKHN0YXRlKTsKLSAgICAgICAgQVNTRVJUKCFz
dGF0ZS5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IHJldHVybiAhcHJvbWlzZTsKLX0KLQotc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUNhbmNlbFJl
c3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVTdHJlYW0mIHN0
cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSA9ICZz
dHJlYW07Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhl
Y1N0YXRlKikgewotICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPm5vdGlmeUNhbmNlbFN1Y2NlZWRl
ZCgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IH0pOwotfQotCi1zdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRG
dW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKLXsKLSAg
ICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcHJvdGVjdGVkU3RyZWFtID0gJnN0cmVhbTsKLSAg
ICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbcHJvdGVjdGVkU3RyZWFtXShFeGVjU3RhdGUqIGV4
ZWMpIHsKLSAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5zdG9yZUVycm9yKCpleGVjLCBleGVjLT5h
cmd1bWVudCgwKSk7Ci0gICAgICAgIHByb3RlY3RlZFN0cmVhbS0+bm90aWZ5Q2FuY2VsRmFpbGVk
KCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
fSk7Ci19Ci0KLWJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9DYW5jZWwoSlNWYWx1ZSByZWFzb24p
Ci17Ci0gICAgRXhlY1N0YXRlJiBleGVjID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soJmV4ZWMpOwotCi0gICAgSlNQcm9taXNlKiBwcm9taXNl
ID0gaW52b2tlKGV4ZWMsICJjYW5jZWwiLCByZWFzb24pOwotCi0gICAgaWYgKHByb21pc2UpCi0g
ICAgICAgIHRoZW5Qcm9taXNlKGV4ZWMsIHByb21pc2UsIGNyZWF0ZUNhbmNlbFJlc3VsdEZ1bGZp
bGxlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSwgY3JlYXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRGdW5j
dGlvbihleGVjLCAqdGhpcykpOwotCi0gICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpIHsKLSAg
ICAgICAgc3RvcmVFeGNlcHRpb24oZXhlYyk7Ci0gICAgICAgIEFTU0VSVCghZXhlYy5oYWRFeGNl
cHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gIXByb21p
c2U7Ci19Ci0KLVJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0
aW9uYXJ5JiBzdHJhdGVneSkKLXsKLSAgICBKU09iamVjdCoganNTb3VyY2U7Ci0gICAgaWYgKHNv
dXJjZS5pc09iamVjdCgpKQotICAgICAgICBqc1NvdXJjZSA9IHNvdXJjZS5nZXRPYmplY3QoKTsK
LSAgICBlbHNlIGlmICghc291cmNlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcigmc3RhdGUsICJBcmd1bWVudCAxIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9y
IG11c3QgYmUgYW4gb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0gZWxz
ZQotICAgICAgICBqc1NvdXJjZSA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShzdGF0ZS52bSgpLCBK
U0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpLCBqc051bGwoKSwgMSkpOwotCi0gICAgZG91YmxlIGhpZ2hXYXRlck1h
cmsgPSAxOwotICAgIEpTRnVuY3Rpb24qIHNpemVGdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYg
KCFzdHJhdGVneS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIGlmIChzdHJhdGVneS5n
ZXQoImhpZ2hXYXRlck1hcmsiLCBoaWdoV2F0ZXJNYXJrKSkgewotICAgICAgICAgICAgaWYgKHN0
ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBOYU4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwg
MCkgewotICAgICAgICAgICAgICAgIHRocm93Vk1SYW5nZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0
ZXJNYXJrJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5v
dCBiZSBuZWdhdGl2ZSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpZiAoc3RyYXRlZ3kuZ2V0KCJzaXpl
Iiwgc2l6ZUZ1bmN0aW9uKSkgewotICAgICAgICAgICAgaWYgKCFzaXplRnVuY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIidzaXplJyBvZiBBcmd1bWVu
dCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFt
ID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtKHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdh
dGVyTWFyaywgc2l6ZUZ1bmN0aW9uKSk7Ci0gICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3Rh
dGUpOwotCi0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiByZWFkYWJsZVN0cmVhbTsKLX0KLQotUmVhZGFibGVKU1N0cmVh
bTo6UmVhZGFibGVKU1N0cmVhbShFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlLCBk
b3VibGUgaGlnaFdhdGVyTWFyaywgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVh
ZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0cmVhbVZhbHVlPigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSwgaGlnaFdhdGVyTWFyaykKLXsKLSAgICBt
X3NvdXJjZS5zZXQoc3RhdGUudm0oKSwgc291cmNlKTsKLSAgICAvLyBXZSBkbyBub3QgdGFrZSBh
IFJlZiB0byB0aGUgc3RyZWFtIGFzIHRoaXMgd291bGQgY2F1c2UgYSBSZWYgY3ljbGUuCi0gICAg
Ly8gVGhlIHJlc29sdXRpb24gY2FsbGJhY2sgdXNlZCBqb2ludGx5IHdpdGggbV9lcnJvckZ1bmN0
aW9uIGFzIHByb21pc2UgY2FsbGJhY2tzIHNob3VsZCBwcm90ZWN0IHRoZSBzdHJlYW0gaW5zdGVh
ZC4KLSAgICBtX2Vycm9yRnVuY3Rpb24uc2V0KHN0YXRlLnZtKCksIEpTRnVuY3Rpb246OmNyZWF0
ZShzdGF0ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygp
LCBbdGhpc10oRXhlY1N0YXRlKiBzdGF0ZSkgewotICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICB9KSk7Ci0gICAgaWYgKHNpemVGdW5jdGlvbikKLSAgICAgICAgbV9z
aXplRnVuY3Rpb24uc2V0KHN0YXRlLnZtKCksIHNpemVGdW5jdGlvbik7Ci19Ci0KLUpTVmFsdWUg
UmVhZGFibGVKU1N0cmVhbTo6anNDb250cm9sbGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAg
ICAgbV9jb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXI+KCp0aGlzKTsKLSAgICByZXR1cm4gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0LCBtX2NvbnRy
b2xsZXIuZ2V0KCkpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmNsb3NlKEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGlmIChpc0Nsb3NlUmVxdWVzdGVkKCkgfHwgaXNFcnJvcmVkKCkp
IHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmVycm9y
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICBpZiAoIWlzUmVhZGFibGUoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJv
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdG9yZUVycm9yKHN0YXRlLCB2YWx1ZSk7
Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6c3RvcmVFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQotewotICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gc3RhdGUuZXhjZXB0aW9uKCkt
PnZhbHVlKCk7Ci0gICAgc3RhdGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICBzdG9yZUVycm9yKHN0
YXRlLCBleGNlcHRpb24pOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCi17Ci0gICAgaWYgKG1fZXJyb3Ip
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX2Vycm9yLnNldChleGVjLnZtKCksIGVycm9yKTsKLQot
ICAgIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6
ZW5xdWV1ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBjaHVuaykKLXsKLSAg
ICBpZiAoaXNFcnJvcmVkKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgZXJyb3Io
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGlzQ2xvc2VSZXF1ZXN0ZWQoKSkg
ewotICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRl
LCBUeXBlRXJyb3IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWlzUmVhZGFi
bGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlc29sdmVSZWFkQ2FsbGJhY2soY2h1
bmspKSB7Ci0gICAgICAgIHB1bGwoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRv
dWJsZSBzaXplID0gcmV0cmlldmVDaHVua1NpemUoc3RhdGUsIGNodW5rKTsKLSAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVucXVldWVDaHVuayh7
IEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4oc3RhdGUudm0oKSwgY2h1bmspLCBzaXplIH0pOwot
Ci0gICAgcHVsbCgpOwotfQotCi1kb3VibGUgUmVhZGFibGVKU1N0cmVhbTo6cmV0cmlldmVDaHVu
a1NpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBjaHVuaykKLXsKLSAgICBpZiAoIW1fc2l6
ZUZ1bmN0aW9uKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGNodW5rKTsKLQotICAgIEpTVmFsdWUg
c2l6ZVZhbHVlID0gY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX3NpemVGdW5jdGlvbi5nZXQoKSwganNV
bmRlZmluZWQoKSwgYXJndW1lbnRzKTsKLSAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpIHsK
LSAgICAgICAgc3RvcmVFcnJvcihzdGF0ZSwgc3RhdGUuZXhjZXB0aW9uKCktPnZhbHVlKCkpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBkb3VibGUgc2l6ZSA9IHNpemVWYWx1ZS50
b051bWJlcigmc3RhdGUpOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgewotICAgICAg
ICBzdG9yZUVycm9yKHN0YXRlLCBzdGF0ZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghc3RkOjppc2Zpbml0ZShzaXplKSB8fCBzaXpl
IDwgMCkgewotICAgICAgICBzdG9yZUVycm9yKHN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0
YXRlLCBSYW5nZUVycm9yKSk7Ci0gICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGVycm9yKCkp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2l6ZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNk
Y2Y2OWZlMmQyMmM4MGZhMTA0M2E5NmZkM2YzMDNiODFjMWM1NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZUpTU3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMk8xNSBDYW5vbiBJbmMuIDIwMTUKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MLiAyMDE1Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVhZGFibGVKU1N0cmVhbV9oCi0jZGVm
aW5lIFJlYWRhYmxlSlNTdHJlYW1faAotCi0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5j
bHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1
ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaD4KLSNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgSlNGdW5j
dGlvbjsKLWNsYXNzIEpTUHJvbWlzZTsKLX0KLSAgICAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgSlNET01HbG9iYWxPYmplY3Q7Ci1jbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7
Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLXN0cnVjdCBSZWFkYWJsZUpTU3RyZWFt
VmFsdWUgewotICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gdmFsdWU7Ci0gICAgZG91Ymxl
IHNpemU7Ci19OwotCi10ZW1wbGF0ZTw+IGNsYXNzIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJl
YWRhYmxlSlNTdHJlYW1WYWx1ZT4gOiBwdWJsaWMgUmVhZGFibGVTdHJlYW0gewotcHVibGljOgot
ICAgIGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaFdhdGVyTWFyayAt
IG1fdG90YWxRdWV1ZVNpemU7IH0KLQotcHJvdGVjdGVkOgotICAgIFJlYWRhYmxlRW5xdWV1aW5n
U3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBoaWdoV2F0ZXJN
YXJrKQotICAgICAgICA6IFJlYWRhYmxlU3RyZWFtKGNvbnRleHQpCi0gICAgICAgICwgbV9oaWdo
V2F0ZXJNYXJrKGhpZ2hXYXRlck1hcmspIHsgfQotCi0gICAgdm9pZCBlbnF1ZXVlQ2h1bmsoUmVh
ZGFibGVKU1N0cmVhbVZhbHVlJiYpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVh
clZhbHVlcygpIG92ZXJyaWRlIHsgbV9xdWV1ZS5jbGVhcigpOyB9Ci0gICAgdmlydHVhbCBib29s
IGhhc0Vub3VnaFZhbHVlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRlc2lyZWRTaXplKCkg
PD0gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcXVldWUuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpIG92
ZXJyaWRlOwotCi0gICAgRGVxdWU8UmVhZGFibGVKU1N0cmVhbVZhbHVlPiBtX3F1ZXVlOwotICAg
IGRvdWJsZSBtX3RvdGFsUXVldWVTaXplIHsgMCB9OwotICAgIGRvdWJsZSBtX2hpZ2hXYXRlck1h
cms7Ci19OwotCi1jbGFzcyBSZWFkYWJsZUpTU3RyZWFtIGZpbmFsIDogcHVibGljIFJlYWRhYmxl
RW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT4gewotcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlLCBjb25zdCBEaWN0aW9uYXJ5Jik7Ci0KLSAgICBKU0M6OkpTVmFsdWUganNDb250
cm9sbGVyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGNs
b3NlKEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGVycm9yKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9lcnJvci5nZXQoKTsgfQotCi0gICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlKTsKLSAgICB2b2lkIGVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVh
bShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqLCBkb3VibGUsIEpTQzo6SlNGdW5jdGlv
biopOwotCi0gICAgdm9pZCBkb1N0YXJ0KEpTQzo6RXhlY1N0YXRlJik7Ci0KLSAgICBKU0M6OkpT
UHJvbWlzZSogaW52b2tlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciosIEpTQzo6SlNWYWx1
ZSBwYXJhbWV0ZXIpOwotICAgIHZvaWQgc3RvcmVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUmKTsK
LQotICAgIHZpcnR1YWwgYm9vbCBkb1B1bGwoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
ZG9DYW5jZWwoSlNDOjpKU1ZhbHVlKSBvdmVycmlkZTsKLQotICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QoKTsKLQotICAgIGRvdWJsZSByZXRyaWV2ZUNodW5rU2l6ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVT
dHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZCBj
b25zaWRlciBub3QgdXNpbmcgSlNDOjpTdHJvbmcsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjc4Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBt
X2Vycm9yOwotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNGdW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9u
OwotCi0gICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9zb3VyY2U7Ci0gICAgSlNDOjpT
dHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBtX3NpemVGdW5jdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2VuZGlmIC8v
IFJlYWRhYmxlSlNTdHJlYW1faApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIyYzI0YjI0Y2Q4M2E5MzEyN2I2MjE0YzkxNjUy
ZWE4OGZiOGM4MmUuLmRmNzA0OGUyNzM5NTc5ZWJlOGRjN2JiYzIxNTlhM2UyOWE4NjRjMDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNS0wOC0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFNob3VsZCBzdHJlYW1zIEFQSSBiZSBtb3Zl
ZCB0byBKU0M/CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDcwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGpzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1j
b25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
aW9zLXNpbS1kZXByZWNhdGVkL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1tYXZlcmlja3MvanMvZG9tL2ds
b2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXlvc2VtaXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9qcy9kb20vZ2xvYmFsLWNvbnN0
cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
anMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA4LTA2ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEludHJvZHVj
ZSBnZXRfYnlfaWQgbGlrZSBJQyBpbnRvIGdldF9ieV92YWwgd2hlbiB0aGUgZ2l2ZW4gbmFtZSBp
cyBTdHJpbmcgb3IgU3ltYm9sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQ4N2Zm
Y2Q0ZGNmMTNhMmU1MzI0NDQ0NGQ0MGJkY2U2MTM1MWI5YzMuLmI3NTc2YmEzYTQ0ODQzNDBjZDA2
Yjc4Y2E4OTY5YWI2ZmY4NmEyOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9nbG9i
YWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC05
MzgsMTEgKzkzOCw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9w
ZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNv
bmZpZ3VyYWJsZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJyku
aGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0
JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSZWFkYWJsZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
UmVjdCcpLnZhbHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3Bl
cnR5KCdzZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGZiOWY3NjQwNzZhYzgxNjUwZWFhNjgzNGM0ZjllNjYxMzAw
OWM4NmEuLjE5MjJkZmQ3NzMxNGFhOGVhNjA2MjAyMTVmODI0OGJmOTU3NTdjNjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1h
dHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTk5Mywx
MSArOTkzLDYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J1JhbmdlRXhjZXB0aW9uJykuaGFzT3duUHJvcGVydHkoJ2cKIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5
KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuZW51bWVyYWJsZSBpcyBmYWxzZQogUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuY29uZmln
dXJhYmxlIGlzIHRydWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdSZWFkYWJsZVN0cmVhbScpLnZhbHVlIGlzIFJlYWRhYmxlU3RyZWFtCi1QQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNP
d25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmhhc093blByb3BlcnR5KCdzZXQnKSBp
cyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1Jl
YWRhYmxlU3RyZWFtJykuZW51bWVyYWJsZSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuY29uZmlndXJhYmxlIGlz
IHRydWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0
JykudmFsdWUgaXMgUmVjdAogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ1JlY3QnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHko
J3NldCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQKaW5kZXggYjBkODEwZjEzMjM2YzMyMDJkYjE2ZTc0ODM5YzU3OGQ0NjFlZTk2
OC4uM2M0OTVjYWZhN2QwZTU5ZDBlOTAzYzFkZjg3ZjhlODg0ODgxOWQ0ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9qcy9kb20v
Z2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMTAxMywxMSAr
MTAxMyw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdS
YW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0eSgn
c2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNvbmZpZ3Vy
YWJsZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFs
LCAnUmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFzT3du
UHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMg
ZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFk
YWJsZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJsZSBpcyB0
cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcp
LnZhbHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5KCdz
ZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbS1k
ZXByZWNhdGVkL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbS1kZXByZWNhdGVkL2pzL2RvbS9nbG9i
YWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGQ4YTJlZTI3YWUx
MWNiMzQ2MTZlZWMzMGRlOGE0NGI5YzUzZDNhY2EuLjY2OGFhYWY3MTBkMWZiNTZiZTkzMDgxMGNm
MGRkOTgyNWRhZTRlYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW0t
ZGVwcmVjYXRlZC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltLWRlcHJlY2F0ZWQvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTk0MywxMSAr
OTQzLDYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1Jh
bmdlRXhjZXB0aW9uJykuaGFzT3duUHJvcGVydHkoJ2cKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdz
ZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ1JhbmdlRXhjZXB0aW9uJykuZW51bWVyYWJsZSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuY29uZmlndXJh
YmxlIGlzIHRydWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSZWFkYWJsZVN0cmVhbScpLnZhbHVlIGlzIFJlYWRhYmxlU3RyZWFtCi1QQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Q
cm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBm
YWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRh
YmxlU3RyZWFtJykuZW51bWVyYWJsZSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuY29uZmlndXJhYmxlIGlzIHRy
dWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0Jyku
dmFsdWUgaXMgUmVjdAogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ1JlY3QnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ3Nl
dCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbWF2ZXJp
Y2tzL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1hdmVyaWNrcy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVj
dG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCAzOGI4MmRlNWIxNWQ3MzMwYTgzNDI4
ZWU5NmQ1MzRkMDBkNjZkZGU3Li42ZDBmNTIzNDlmZGJhYTc1Nzk3ZWI0ZjdmYTRlZTJkZGE1NWQz
MjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbWF2ZXJpY2tzL2pzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1tYXZlcmlja3MvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTk4OCwxMSArOTg4LDYgQEAgUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuaGFzT3du
UHJvcGVydHkoJ2cKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJyku
ZW51bWVyYWJsZSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLnZh
bHVlIGlzIFJlYWRhYmxlU3RyZWFtCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFs
c2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJs
ZVN0cmVhbScpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuZW51bWVyYWJs
ZSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J1JlYWRhYmxlU3RyZWFtJykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWN0JykudmFsdWUgaXMgUmVjdAogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlY3QnKS5oYXNPd25Qcm9w
ZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1pdGUvanMvZG9tL2dsb2JhbC1jb25z
dHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMteW9zZW1pdGUvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQKaW5kZXggOTM1MzUzMGY0MTdlOTk5M2E5ZTg3OTNmMGRmYTI0MzRmMTY0NjA5OS4uNzBk
ZTc5OGFjNDA0NjM1N2I4NzY4NzdlNzlhOTYxOTMzODVhYTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXlvc2VtaXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy15b3Nl
bWl0ZS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApA
QCAtMTAwOCwxMSArMTAwOCw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNP
d25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlv
bicpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQot
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3Ry
ZWFtJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0
eSgnc2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZp
Z3VyYWJsZSBpcyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnUmVjdCcpLnZhbHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093
blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGZiNDhmNzdiZmU0NDRkMWFlMDA4YzBhMzUwMmUx
YjRhN2ZiZTAyNWEuLmZlMzk0MGEzYmFkYjMxNDlhYWU1MDI3OWIzODQ2MjgzNzE1Mzg2MDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVj
dG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAg
LTEwMDgsMTEgKzEwMDgsNiBAQCBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9wZXJ0eSgnZwogUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JhbmdlRXhjZXB0aW9uJykuaGFzT3du
UHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24n
KS5jb25maWd1cmFibGUgaXMgdHJ1ZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykudmFsdWUgaXMgUmVhZGFibGVTdHJlYW0KLVBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVh
bScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJykuaGFzT3duUHJvcGVydHko
J3NldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnUmVhZGFibGVTdHJlYW0nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5jb25maWd1
cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ1JlY3QnKS52YWx1ZSBpcyBSZWN0CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlY3QnKS5oYXNPd25Q
cm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCAxODk1NjcxMmQ1ZDY3NzUwZjg2Njc4OTNlMDgyNDky
YTEyNjJjNzM2Li44ODEzYzJjOGQ1NzE5NDA2Y2VkZTYzMWYwZTczODljZDA2NWRlMDNkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3Rv
cnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC04
NTgsMTEgKzg1OCw2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdSYW5nZUV4Y2VwdGlvbicpLmhhc093blByb3BlcnR5KCdnCiBQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmFuZ2VFeGNlcHRpb24nKS5oYXNPd25Qcm9w
ZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSYW5nZUV4Y2VwdGlvbicpLmNv
bmZpZ3VyYWJsZSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS52YWx1ZSBpcyBSZWFkYWJsZVN0cmVhbQotUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1JlYWRhYmxlU3RyZWFtJyku
aGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVhZGFibGVTdHJlYW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0
JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdSZWFkYWJsZVN0cmVhbScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdSZWFkYWJsZVN0cmVhbScpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
UmVjdCcpLnZhbHVlIGlzIFJlY3QKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdSZWN0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnUmVjdCcpLmhhc093blByb3Bl
cnR5KCdzZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3Rl
ZC50eHQKaW5kZXggMzczNTc3ZWI5ODIxZDIwNzU0ZGU4NzcxYTYwZmFlNTIzOGM5YjVmNi4uOGRm
YjMzZDRjMmE5Mzk4ZTUxNmNhYmQ5ZDUzYzY2MDM4NWM2NjM2NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogCiBQQVNTIENhbiBn
ZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCiBQQVNT
IENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVj
dGx5IAotRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggd29ya3MgZ2Vu
ZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgQ2FuIG9ubHkgY2FsbCBSZWFk
YWJsZVN0cmVhbS5waXBlVGhyb3VnaCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW0KK1BB
U1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5
IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFtZSkuZ2V0JykKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQ
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVj
dGVkLnR4dAppbmRleCA0YWQ5MTRlOGFlMmExODA0MDczMmI2NjgzMDg2YWEyODNkZjYyYjcyLi40
MzI5MGFmMzNkODQ1MGQ3MmQxM2NkYjRjNDdmZTQxNWQ2MWJlNzZiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsMTEgQEAKIAog
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCiBQ
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKLUZB
SUwgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qg
b2YgcHJvcGVydGllcyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBzaG91bGQgaGF2ZSBhbGwgdGhlIGNv
cnJlY3QgbWV0aG9kcyBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgNyBnb3QgNgorUEFTUyBSZWFk
YWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9w
ZXJ0aWVzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9y
IG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0
cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKIFBBU1Mg
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVs
bCBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3
aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycyBhc3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBu
b24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVh
bSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIAogUEFT
UyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0
ZW5zaWJsZSAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFy
dCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlIAogUEFTUyBSZWFk
YWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4
dAppbmRleCBkNWU2ZDNmZTUxNTVjZjc0YTkwMmMzODQ5Nzk0OTM3MzlmNzYyZDM4Li5kODQ5Mjg4
NWU4ZDlhOTRjZTU4ZmY2OThlMTc4MmMyMmQyMjQ5YWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcg
QEAKIAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBp
bmRpcmVjdGx5IAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQg
Z2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0
cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9w
ZXJ0aWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdv
dCA0CitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUg
Y29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNs
b3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKIFBBU1Mg
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwg
aWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24p
IAogUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91
bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0
cnVjdGlvbikgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhw
ZWN0ZWQudHh0CmluZGV4IGU3NWYyNmYxMTBjYjJkN2ZiODE0YWVjNGMzNTMwMjM2OTJmYjc1YjIu
LmEwMzI0Mzg3ZDdhZWNjNjc0Yzc4N2YwZTNjOWRmNmVkODcwNTBiMDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0CkBAIC0xLDEyICsx
LDEyIEBACiAKLUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFu
IGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdp
dGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
cnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggcnMudGVlIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQot
RkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBw
cm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
cnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiBycy50ZWUg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5v
dCBpbXBhY3QgYnJhbmNoMSBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCkn
LCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2Fu
Y2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMg
aW50byBhbiBhcnJheSBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAn
cnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGlu
ZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8g
cmVqZWN0IG9uIGJyYW5jaGVzIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUo
KScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBj
bG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVz
IHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVu
ZGVmaW5lZCkKLUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2lu
YWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVh
ZGFibGVTdHJlYW1zIGFzc2VydF90cnVlOiByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hv
dWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3Rp
bmcgdGhlIG90aGVyIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFu
Y2gxLmdldFJlYWRlcicpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3Vs
ZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0UmVhZGVyJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNo
ZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0UmVh
ZGVyJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91
bGQgbm90IGltcGFjdCBicmFuY2gyIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdicmFuY2gxLmNhbmNlbCcpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2Vs
aW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMSB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnYnJhbmNoMi5jYW5jZWwnKQorRkFJTCBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNh
bmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ2JyYW5jaDEuY2FuY2VsJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBm
YWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwo
KSB0byByZWplY3Qgb24gYnJhbmNoZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ2JyYW5jaDEuY2FuY2VsJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9z
aW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmdldFJlYWRlcicp
CitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3Vs
ZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0UmVhZGVyJykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRl
bXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCAw
ZTM4NTUxZjdlNzU3NTE2ZGZkZmNiODA2YjFhNmJlZjU3NjkyNWZmLi40MjUwNmIwZDk0ZTgxMjBh
NGYyMzdlMDJmNDYyZGUxMjhiZmY5MjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAK
IAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIAotRkFJTCBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0
aWVzIGFzc2VydF9lcXVhbHM6IGhhcyBhIHRlZSBtZXRob2QgZXhwZWN0ZWQgImZ1bmN0aW9uIiBi
dXQgZ290ICJ1bmRlZmluZWQiCitQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhv
ZHMgYW5kIHByb3BlcnRpZXMgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3
aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAogUEFTUyBsb2NrZWQgc2hvdWxkIGJl
IHRydWUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259597</attachid>
            <date>2015-08-21 03:37:56 -0700</date>
            <delta_ts>2015-08-21 06:19:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147092-20150820213705.patch</filename>
            <type>text/plain</type>
            <size>195661</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Mzk4MTA2MmFjNDZhY2JlZGZmNTExNWY2MDM0YWE4OWM1MTA0N2YxLi5jNjQ4YzhlOGRhMGJkNTIw
NTBlMWMwNGUzNmI0MjY3NWJkNDViNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTUtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KKworICAgICAgICBNaWdyYXRlIHN0cmVhbXMgQVBJIHRvIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBXZWJDb3Jl
IGltcGxlbWVudGF0aW9uIG9mIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBJbXBsZW1lbnRlZCBp
bnRvIEpTQyBhcyB0aHJlZSBjbGFzc2VzIChKU1JlYWRhYmxlU3RyZWFtLCBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGFuZCBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcikuCisgICAgICAgIE1vc3Qg
b2YgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW4gSlNDIGJ1aWx0aW5zLgorICAg
ICAgICBObyBjb25zdHJ1Y3RvciBpcyBzdXJmYWNpbmcgYXQgdGhlIEpTIGxldmVsLCBvbmx5IERP
TSBlbnZpcm9ubWVudHMgZ2V0IGFjY2VzcyB0byBSZWFkYWJsZVN0cmVhbSBvYmplY3RzIGFzIG9m
IG5vdy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanM6IEFkZGVkLgorICAg
ICAgICAoaXNSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChpc1JlYWRhYmxlU3RyZWFtUmVhZGVy
KToKKyAgICAgICAgKGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKC5zdHJh
dGVneS5zaXplKToKKyAgICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAg
IChpbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZVJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChlcnJvclJlYWRhYmxlU3RyZWFtKToK
KyAgICAgICAgKHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwpOgorICAgICAgICAoZ2V0UmVhZGFi
bGVTdHJlYW1EZXNpcmVkU2l6ZSk6CisgICAgICAgIChyZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFk
ZXIpOgorICAgICAgICAoY2FuY2VsUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoZmluaXNoQ2xv
c2luZ1JlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFibGVTdHJlYW0pOgorICAg
ICAgICAoY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChlbnF1ZXVlSW5SZWFk
YWJsZVN0cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAg
ICAgICAgKGludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JOb29wKToKKyAg
ICAgICAgKiBidWlsdGlucy9SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuanM6IEFkZGVkLgorICAg
ICAgICAoY2FuY2VsKToKKyAgICAgICAgKGdldFJlYWRlcik6CisgICAgICAgIChwaXBlVGhyb3Vn
aCk6CisgICAgICAgIChwaXBlVG8pOgorICAgICAgICAodGVlKToKKyAgICAgICAgKGxvY2tlZCk6
CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChlbnF1ZXVlKToKKyAgICAgICAgKGVycm9yKToKKyAgICAgICAg
KGNsb3NlKToKKyAgICAgICAgKGRlc2lyZWRTaXplKToKKyAgICAgICAgKiBidWlsdGlucy9SZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoY2FuY2VsKToK
KyAgICAgICAgKHJlYWQpOgorICAgICAgICAocmVsZWFzZUxvY2spOgorICAgICAgICAoY2xvc2Vk
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpp
bml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpyZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplUmVhZGFibGVT
dHJlYW1SZWFkZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVD
bG9zZWRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJl
YW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bTo6SlNSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW06OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6SlNS
ZWFkYWJsZVN0cmVhbVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3Ry
ZWFtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW1Db25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKEpTQzo6SlNS
ZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChK
U0M6OmpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAg
KEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAg
ICAgKEpTQzo6anNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRGVzaXJlZFNp
emUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXIpOgor
ICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OkpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6
OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChKU0M6OkpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgor
ICAgICAgICAoSlNDOjpqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3NlZCk6
CisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6IEFkZGVkLgorCiAy
MDE1LTA4LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIHByb3RvdHlwaW5nIG1vZHVsZSBsb2FkZXIgaW4gSlNDIHNoZWxsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMzBlYzRkNDdiZjhlMTg2M2FmN2ExYTYzMzgxNWJhMGVmNjcxZGJjZC4uZjZmNTU1ODAx
Yzg2MWViMDgwZTg1MzA2OThjZmU0MzcwN2M2ODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDE1LTA4LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgTWlncmF0ZSBzdHJlYW1zIEFQSSB0byBKU0MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzA5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNlZCB0ZXN0
cy4KKworICAgICAgICBSZW1vdmVkIFdlYkNvcmUgUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50YXRp
b24uCisgICAgICAgIEZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW50byBKYXZhU2NyaXB0
Q29yZS4KKyAgICAgICAgQWRkZWQgUmVhYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGFzIGEgcHJv
cGVydHkgb2YgSlNET01XaW5kb3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0
b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
aDogUmVtb3ZlZC4KKwogMjAxNS0wOC0xOCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2
YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gVXBkYXRlIGltcGxlbWVu
dGF0aW9uIHdpdGggdGhlIGxhdGVzdCBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNDhjNzIxNmZiOTY3NGU0ZmU4Y2RlZjY5MWM2MGUzNWVhNGE5MjY4Zi4uZDEzMThk
N2YyMWQ5NzczNWIzZjYwODZkMGRkYjc2ZmNjNzA4YjlhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNTQzLDYgKzU0Myw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5U
SU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKICAg
ICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCiAgICAgcnVudGltZS9KU1Byb3h5
LmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5jcHAKKyAgICBydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXQuY3BwCkBAIC02NjIsNiArNjY1
LDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1JlYWRhYmxlU3Ry
ZWFtLmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwCisgICAg
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggZTM2NzMwN2NkY2RmZGRlZmNmMzI2YjlmOTlkZjU5MGI5MDQwNGU0Ni4u
YWRiYWY0ZThjODY1NDFmOThkYzdhYjYwYTQ4ODFmOTQ0YTgyMTcyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU0LDYgKzU0LDkgQEAgYWxsIDogXAog
ICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIEpTUHJvbWlzZVBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAorICAgIEpT
UmVhZGFibGVTdHJlYW0ubHV0LmggXAorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIubHV0Lmgg
XAorICAgIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9v
a3VwLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBNb2R1bGVMb2FkZXJPYmplY3QubHV0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNzI5NWZkMDFlZmQ4
MjAwNGYyMjUyYjdlYjY1MDIxMjA2OGU2Nzg5YS4uMzkzYmEzZGFkM2Q4MDFiMzc5NmM5ZWYxMWMx
ZDY2ZTU1MTVjZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBA
IC03OTMsNiArNzkzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTUHJveHkuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU1JlYWRhYmxlU3RyZWFtLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTY29wZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5j
cHAiIC8+CkBAIC05MjYsNiArOTI5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtLmx1dC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJl
YW1SZWFkZXIubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcS2V5d29yZExvb2t1cC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xMZXhlci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTE2NDQsNiArMTY1MCw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJveHkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFk
YWJsZVN0cmVhbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkMDUzMWZkNmE1NzQ3ZGY3YTlmMTRkNjIzZTZlNGQ4MDRiOTdiNmNmLi44NDQ3NGM2
N2M5ODk1YmNhYjUxOWY0NDdiZmNhNWQ5YzE3MjRiYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtOTUzLDYgKzk1MywxMiBAQAogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFE
ODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBs
aWJ6LmR5bGliICovOyB9OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQy
MTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OworCQk0MUM4
Q0ZGNjFCNzBGNzMwMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGNDFCNzBGNTRFMDBDMzdB
QTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07CisJCTQxQzhDRkY3MUI3MEY3MzYwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGNTFCNzBGNTRFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0
cmVhbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxQzhDRkZDMUI3MTA3QTQwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZG
ODFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9
OworCQk0MUM4Q0ZGRDFCNzEwN0E4MDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhD
RkY5MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzhDRkZFMUI3
MTA3QUIwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhDRkZBMUI3MTA3OUYwMEMzN0FB
NyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLzsgfTsKKwkJNDFDOENGRkYxQjcxMDdB
RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhDRkZCMUI3MTA3OUYwMEMzN0FBNyAvKiBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0
ODIxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovOyB9OwogCQk0MzQwQTQ4NTFB
OTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwpA
QCAtMjczMCw2ICsyNzM2LDEyIEBACiAJCTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUY3Mzgy
QjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGliOyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBz
b3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNDFDOENGRjQxQjcwRjU0RTAwQzM3QUE3IC8qIEpT
UmVhZGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzhD
RkY1MUI3MEY1NEUwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFDOENGRjgxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDOENGRjkxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzhDRkZBMUI3MTA3OUYwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUM4Q0ZGQjFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgyMUE5
MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hdGhDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MzQwQTQ4MzFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0OTA5N0VFMEY4RjgxQjUwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MDgsNiArNDUyMCwxMiBAQAogCQk3
RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFDOENGRjgxQjcxMDc5RjAwQzM3QUE3IC8qIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKKwkJCQk0MUM4Q0ZGOTFCNzEwNzlGMDBD
MzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLywKKwkJCQk0MUM4Q0ZGQTFC
NzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8sCisJCQkJNDFD
OENGRkIxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywKKwkJ
CQk0MUM4Q0ZGNDFCNzBGNTRFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCisJ
CQkJNDFDOENGRjUxQjcwRjU0RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLywKIAkJ
CQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1
MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKIAkJCQkwRkUwNTAwQzFBQTkwOTEx
MDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oICovLApAQCAtNjA2Niw2ICs2MDg0LDcgQEAKIAkJ
CQkwRkY0Mjc2NTE1OTFBMUNFMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQ4MUFEMzE1NEZCNEYwMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29u
ZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUM4Q0ZGNzFCNzBGNzM2MDBDMzdBQTcgLyog
SlNSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAw
MEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQz
QzgyODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjY2RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02
MTIzLDYgKzYxNDIsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJGMkFBMzgxQjBC
RURFMzAwNjEwQzdBIC8qIERGR0xhenlOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2
QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFD
OENGRkQxQjcxMDdBODAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0Njkz
QUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY3
NzYsNiArNjc5Niw3IEBACiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldp
dGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0
IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzRjE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFDOENGRkYxQjcxMDdB
RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBV
bmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzU2LDYgKzczNzcsNyBAQAog
CQkJCUE1RkQwMDc5MTg5QjA1MTAwMDYzMzIzMSAvKiBDb25zb2xlTWVzc2FnZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyQTgzNjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgyRTEwN0VDMDU3MDAxM0U3QjIg
LyogQ29uc3RydWN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUM4Q0ZGQzFCNzEwN0E0
MDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTU3RDIzRjExODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGll
ZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBQUNFNjNDMThDQTVBMDMwMEVEMDE5MSAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NzgzLDYgKzc4MDUs
NyBAQAogCQkJCTE0NDY5REUwMTA3RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REUxMTA3RUM3RTcwMDY1MDQ0NiAvKiBO
YXRpdmVFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCNzEwN0VD
NTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDOENGRkUxQjcx
MDdBQjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NTI1RkM1MUE2REQ4MDEwMDdCNTQ5NSAvKiBO
dWxsU2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03ODY2LDYgKzc4ODksNyBA
QAogCQkJCUE1NENGMkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzI5OURBNTE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMTIwMkYxQThBRUQxMjAwMEY1MjgwIC8qIEZUTEpT
Q2FsbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDOENGRjYxQjcwRjczMDAwQzM3QUE3
IC8qIEpTUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5NTJBQkMxQjQ4
N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3OTBERDZEMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzI5OURBMTE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1JlYWRhYmxlU3RyZWFtLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1JlYWRhYmxlU3RyZWFtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZTVmODI5Zjg3N2EwZjI5ZWMyZmMwM2Rm
MzQ5ZDVjNzhlOTY3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanMKQEAgLTAsMCArMSwzNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KHN0cmVhbSkgJiYgISFzdHJlYW0u
QHVuZGVybHlpbmdTb3VyY2U7Cit9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1SZWFkZXIo
cmVhZGVyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3QocmVh
ZGVyKSAmJiB0eXBlb2YgcmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtICE9PSAidW5kZWZpbmVk
IjsKK30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoY29udHJvbGxlcikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KGNvbnRyb2xsZXIp
ICYmICEhY29udHJvbGxlci5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworfQorCitmdW5jdGlv
biBpbml0aWFsaXplUmVhZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZSwgc3RyYXRlZ3kpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NvdXJjZSA9
PT0gInVuZGVmaW5lZCIpCisgICAgICAgICB1bmRlcmx5aW5nU291cmNlID0geyB9OworICAgICBp
ZiAodHlwZW9mIHN0cmF0ZWd5ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgIHN0cmF0ZWd5ID0g
eyBoaWdoV2F0ZXJNYXJrOiAxLCBzaXplOiBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH0gfTsKKwor
ICAgIGlmICghQGlzT2JqZWN0KHVuZGVybHlpbmdTb3VyY2UpKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFz
IGZpcnN0IGFyZ3VtZW50Iik7CisKKyAgICBpZiAoc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCAmJiAh
QGlzT2JqZWN0KHN0cmF0ZWd5KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBzZWNvbmQgYXJndW1lbnQs
IGlmIGFueSIpOworCisgICAgdGhpcy5AdW5kZXJseWluZ1NvdXJjZSA9IHVuZGVybHlpbmdTb3Vy
Y2U7CisKKyAgICB0aGlzLkBxdWV1ZSA9IFtdOworICAgIHRoaXMuQHF1ZXVlU2l6ZSA9IDA7Cisg
ICAgdGhpcy5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZTsgCisgICAgdGhpcy5Ac3Rh
cnRlZCA9IGZhbHNlOworICAgIHRoaXMuQGNsb3NlUmVxdWVzdGVkID0gZmFsc2U7CisgICAgdGhp
cy5AcHVsbEFnYWluID0gZmFsc2U7CisgICAgdGhpcy5AcHVsbGluZyA9IGZhbHNlOyAKKyAgICB0
aGlzLkByZWFkZXIgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRlZmlu
ZWQ7CisgICAgdGhpcy5AY29udHJvbGxlciA9IG5ldyBAUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
KHRoaXMpOworICAgIHRoaXMuQHN0cmF0ZWd5U2l6ZSA9IHN0cmF0ZWd5LnNpemU7IAorICAgIHRo
aXMuQGhpZ2hXYXRlck1hcmsgPSBOdW1iZXIoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayk7CisKKyAg
ICBpZiAoTnVtYmVyLmlzTmFOKHRoaXMuQGhpZ2hXYXRlck1hcmspKQorICAgICAgICB0aHJvdyBu
ZXcgVHlwZUVycm9yKCJoaWdoV2F0ZXJNYXJrIHBhcmFtZXRlciBpcyBub3QgY29ycmVjdCIpOwor
ICAgIGlmICh0aGlzLkBoaWdoV2F0ZXJNYXJrIDwgMCkKKyAgICAgICAgdGhyb3cgbmV3IFJhbmdl
RXJyb3IoImhpZ2hXYXRlck1hcmsgaXMgbmVnYXRpdmUiKTsKKworICAgIHZhciByZXN1bHQgPSBA
aW52b2tlT3JOb29wKHVuZGVybHlpbmdTb3VyY2UsICJzdGFydCIsIFt0aGlzLkBjb250cm9sbGVy
XSk7CisgICAgdmFyIF90aGlzID0gdGhpczsKKyAgICBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBfdGhpcy5Ac3RhcnRlZCA9IHRydWU7CisgICAgICAg
IEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKF90aGlzKTsKKyAgICB9LCBmdW5jdGlvbihlcnJv
cikgeworICAgICAgICBpZiAoX3RoaXMuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJs
ZSkKKyAgICAgICAgICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKF90aGlzLCBlcnJvcik7CisgICAg
fSk7CisKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24gaW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtUmVhZGVyKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBp
c1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkpCisgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJl
YWRhYmxlU3RyZWFtUmVhZGVyIG5lZWRzIGEgUmVhZGFibGVTdHJlYW0iKTsKKyAgICBpZiAoQGlz
UmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSkKKyAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIik7CisKKyAgICB0aGlzLkBzdGF0ZSA9IHN0cmVh
bS5Ac3RhdGU7CisgICAgdGhpcy5AcmVhZFJlcXVlc3RzID0gW107CisgICAgaWYgKHN0cmVhbS5A
c3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKSB7CisgICAgICAgIHRoaXMuQG93bmVy
UmVhZGFibGVTdHJlYW0gPSBzdHJlYW07CisgICAgICAgIHRoaXMuQHN0b3JlZEVycm9yID0gdW5k
ZWZpbmVkOworICAgICAgICBzdHJlYW0uQHJlYWRlciA9IHRoaXM7CisgICAgICAgIHRoaXMuQGNs
b3NlZFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAg
ICAgICAgICAgIHN0cmVhbS5AcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7
CisgICAgICAgICAgICBzdHJlYW0uQHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlamVjdCA9IHJlamVj
dDsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICBpZiAoc3Ry
ZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKSB7CisgICAgICAgIHRoaXMuQG93
bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOworICAgICAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgp
OworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIHRoaXMuQG93bmVyUmVh
ZGFibGVTdHJlYW0gPSBudWxsOworICAgIHRoaXMuQHN0b3JlZEVycm9yID0gc3RyZWFtLkBzdG9y
ZWRFcnJvcjsKKyAgICB0aGlzLkBjbG9zZWRQcm9taXNlID0gUHJvbWlzZS5yZWplY3Qoc3RyZWFt
LkBzdG9yZWRFcnJvcik7IAorCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGluaXRp
YWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKSkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBuZWVkcyBhIFJlYWRhYmxl
U3RyZWFtIik7CisgICAgaWYgKHR5cGVvZiBzdHJlYW0uQGNvbnRyb2xsZXIgIT09ICJ1bmRlZmlu
ZWQiKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gYWxyZWFk
eSBoYXMgYSBjb250cm9sbGVyIik7CisgICAgdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFt
ID0gc3RyZWFtOworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGVycm9yUmVhZGFi
bGVTdHJlYW0oc3RyZWFtLCBlcnJvcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBU
T0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpOwor
ICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBzdHJlYW0uQHN0b3JlZEVycm9yID0gZXJyb3I7
CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUVycm9yZWQ7CisKKyAgICBpZiAo
IXN0cmVhbS5AcmVhZGVyKQorICAgICAgICByZXR1cm47CisgICAgdmFyIHJlYWRlciA9IHN0cmVh
bS5AcmVhZGVyOworCisgICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7Cisg
ICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwg
bGVuZ3RoOyArK2luZGV4KQorICAgICAgICByZXF1ZXN0c1tpbmRleF0ucmVqZWN0KGVycm9yKTsK
KyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOworCisgICAgQHJlbGVhc2VSZWFkYWJsZVN0
cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRlci5Ac3RvcmVkRXJyb3IgPSBlcnJvcjsKKyAg
ICByZWFkZXIuQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZDsKKworICAgIHJlYWRlci5A
Y2xvc2VkUHJvbWlzZVJlamVjdChlcnJvcik7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RSZWFkYWJs
ZVN0cmVhbVB1bGwoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJl
YW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFzdHJlYW0uQHN0YXJ0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoKCFAaXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZChzdHJlYW0pIHx8ICFzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLmxl
bmd0aCkgJiYgQGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNpemUoc3RyZWFtKSA8PSAwKQorICAg
ICAgICByZXR1cm47CisgCisgICAgaWYgKHN0cmVhbS5AcHVsbGluZykgeworICAgICAgICBzdHJl
YW0uQHB1bGxBZ2FpbiA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJl
YW0uQHB1bGxpbmcgPSB0cnVlOworCisgICAgdmFyIHByb21pc2UgPSBAcHJvbWlzZUludm9rZU9y
Tm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJwdWxsIiwgW3N0cmVhbS5AY29udHJvbGxl
cl0pOworICAgIHByb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgc3RyZWFtLkBwdWxs
aW5nID0gZmFsc2U7CisgICAgICAgIGlmIChzdHJlYW0uQHB1bGxBZ2FpbikgeworICAgICAgICAg
ICAgc3RyZWFtLkBwdWxsQWdhaW4gPSBmYWxzZTsKKyAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFi
bGVTdHJlYW1QdWxsKHN0cmVhbSk7CisgICAgICAgIH0KKyAgICB9LCBmdW5jdGlvbihlcnJvcikg
eworICAgICAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNl
IHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworZnVuY3Rpb24g
Z2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZShzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7
CisKKyAgIHJldHVybiBzdHJlYW0uQGhpZ2hXYXRlck1hcmsgLSBzdHJlYW0uQHF1ZXVlU2l6ZTsK
K30KKworZnVuY3Rpb24gcmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHJlYWRl
ciA9IHVuZGVmaW5lZDsKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOwor
fQorCitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0
cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0g
W107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVy
biBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwi
LCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaENs
b3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
Ly8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgPT09ICBAcmVhZGFibGVTdHJlYW1SZWFkYWJs
ZSk7CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUNsb3NlZDsKKyAgICB2YXIg
cmVhZGVyID0gc3RyZWFtLkByZWFkZXI7CisgICAgaWYgKHJlYWRlcikKKyAgICAgICAgQGNsb3Nl
UmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKTsKK30KKworZnVuY3Rpb24gY2xvc2VSZWFkYWJs
ZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETy4gQVNT
RVJUKCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFt
LkBzdGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgaWYgKHN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuOyAKKyAgICBzdHJl
YW0uQGNsb3NlUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBpZiAoIXN0cmVhbS5AcXVldWUubGVuZ3Ro
KQorICAgICAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7Cit9CisKK2Z1
bmN0aW9uIGNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciByZXF1ZXN0cyA9IHJlYWRlci5AcmVhZFJlcXVlc3RzOworICAgIGZv
ciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcmVxdWVzdHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkKKyAgICAgICAgcmVxdWVzdHNbaW5kZXhdLnJlc29sdmUoe3ZhbHVlOnVuZGVm
aW5lZCwgZG9uZTogdHJ1ZX0pOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzID0gW107CisgICAg
QHJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRlci5Ac3RhdGUg
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQ7CisgICAgcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2
ZSgpOworfQorCitmdW5jdGlvbiBlbnF1ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5r
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRPRE86IEFTU0VSVCghc3RyZWFtLkBj
bG9zZVJlcXVlc3RlZCk7CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgIT09IEBy
ZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgaWYgKEBpc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkgJiYgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0cy5zaGlmdCgp
LnJlc29sdmUoe3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKKyAgICAgICAgQHJlcXVlc3RS
ZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0
cnkgeworICAgICAgICB2YXIgc2l6ZSA9IDE7CisgICAgICAgIGlmIChzdHJlYW0uQHN0cmF0ZWd5
U2l6ZSkgeworICAgICAgICAgICAgc2l6ZSA9IE51bWJlcihzdHJlYW0uQHN0cmF0ZWd5U2l6ZShj
aHVuaykpOworICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihzaXplKSB8fCBzaXplID09PSAr
SW5maW5pdHkgfHwgc2l6ZSA8IDApCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJy
b3IoIkNodW5rIHNpemUgaXMgbm90IHZhbGlkIik7CisgICAgICAgIH0KKyAgICAgICAgc3RyZWFt
LkBxdWV1ZS5wdXNoKHsgdmFsdWU6IGNodW5rLCBzaXplOiBzaXplIH0pOworICAgICAgICBzdHJl
YW0uQHF1ZXVlU2l6ZSArPSBzaXplOworICAgIH0KKyAgICBjYXRjaChlcnJvcikgeworICAgICAg
ICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKKyAgICAgICAgdGhyb3cgZXJy
b3I7CisgICAgfQorICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7Cit9CisK
K2Z1bmN0aW9uIHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmIChyZWFkZXIuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1D
bG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe3ZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWV9KTsKKyAgICBpZiAocmVhZGVyLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFt
RXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYWRlci5Ac3RvcmVkRXJy
b3IpOworICAgIC8vIFRPRE86IEFTU0VSVCghIXJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSk7
CisgICAgLy8gVE9ETzogQVNTRVJUKHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKTsKKyAgICB2YXIgc3RyZWFtID0gcmVhZGVyLkBv
d25lclJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHF1ZXVlLmxlbmd0aCkgeworICAg
ICAgICB2YXIgY2h1bmsgPSBzdHJlYW0uQHF1ZXVlLnNoaWZ0KCk7CisgICAgICAgIHN0cmVhbS5A
cXVldWVTaXplIC09IGNodW5rLnNpemU7CisgICAgICAgIGlmICghc3RyZWFtLkBjbG9zZVJlcXVl
c3RlZCkKKyAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7Cisg
ICAgICAgIGVsc2UgaWYgKCFzdHJlYW0uQHF1ZXVlLmxlbmd0aCkKKyAgICAgICAgICAgIEBmaW5p
c2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSh7dmFsdWU6IGNodW5rLnZhbHVlLCBkb25lOiBmYWxzZX0pOworICAgIH0KKyAgICB2
YXIgcmVhZFJlcXVlc3QgPSB7fTsKKyAgICB2YXIgcmVhZFByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgcmVhZFJlcXVlc3QucmVzb2x2ZSA9
IHJlc29sdmU7CisgICAgICAgIHJlYWRSZXF1ZXN0LnJlamVjdCA9IHJlamVjdDsKKyAgICB9KTsK
KyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cy5wdXNoKHJlYWRSZXF1ZXN0KTsKKyAgICBAcmVxdWVz
dFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworICAgIHJldHVybiByZWFkUHJvbWlzZTsKK30K
KworZnVuY3Rpb24gaW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gbWV0
aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworfQorCitmdW5jdGlvbiBwcm9taXNlSW52b2tlT3JO
b29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7
CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBt
ZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNo
KGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIxMThhZWI1NGMzOGIzNjI1MzA5NmZj
ZjYxZTk4YTMyMTg2ZjdjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw4OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGNhbmNlbChyZWFzb24pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKSk7CisKKyAgICBpZiAoQGlzUmVhZGFibGVT
dHJlYW1Mb2NrZWQodGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5
cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOworCisgICAgcmV0dXJuIEBjYW5j
ZWxSZWFkYWJsZVN0cmVhbSh0aGlzLCByZWFzb24pOworfQorCitmdW5jdGlvbiBnZXRSZWFkZXIo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhp
cykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKTsKKyAKKyAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVh
bSBpcyBsb2NrZWQiKTsKKworICAgIHJldHVybiBuZXcgQFJlYWRhYmxlU3RyZWFtUmVhZGVyKHRo
aXMpOworfQorCitmdW5jdGlvbiBwaXBlVGhyb3VnaChzdHJlYW1zLCBvcHRpb25zKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHRoaXMucGlwZVRvKHN0cmVhbXMud3JpdGFibGUsIG9wdGlv
bnMpOworCisgICAgcmV0dXJuIHN0cmVhbXMucmVhZGFibGU7Cit9CisKK2Z1bmN0aW9uIHBpcGVU
byhkZXN0KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJl
YW0odGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKTsKKworICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJwaXBlVG8gaXMgbm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIHRlZSgpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQg
b24gYSBSZWFkYWJsZVN0cmVhbSIpOworCisgICAgcmV0dXJuIG5ldyBAVHlwZUVycm9yKCJ0ZWUg
aXMgbm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIGxvY2tlZCgpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFk
YWJsZVN0cmVhbSIpOworCisgICAgcmV0dXJuIEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MGMwM2QxZGMzYzQ3ZTkyNDYyZTM1MTQ5YzA4YzJjODQ1NTUyZjk4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K2Z1bmN0aW9uIGVucXVldWUoY2h1bmspCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyIik7CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxl
U3RyZWFtOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVk
KQorICAgICAgICB0aHJvdyBzdHJlYW0uQHN0b3JlZEVycm9yOworCisgICAgaWYgKHN0cmVhbS5A
Y2xvc2VSZXF1ZXN0ZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0
cmVhbSBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UiKTsKKworICAgIHJldHVybiBAZW5xdWV1ZUluUmVh
ZGFibGVTdHJlYW0oc3RyZWFtLCBjaHVuaykKK30KKworZnVuY3Rpb24gZXJyb3IoZXJyb3IpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIik7CisKKyAgICB2YXIgc3Ry
ZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHN0
YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlJlYWFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CisKKyAgICBAZXJyb3JSZWFk
YWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKK30KKworZnVuY3Rpb24gY2xvc2UoKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRo
aXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisgICAgdmFyIHN0cmVhbSA9
IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBjbG9zZVJl
cXVlc3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlz
IGFscmVhZHkgcmVxdWVzdGVkIHRvIGNsb3NlIik7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9
PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IlJlYWRhYmxlU3RyZWFtIGlzIGFscmVhZHkgZXJyb3JlZCIpOworCisgICAgQGNsb3NlUmVhZGFi
bGVTdHJlYW0oc3RyZWFtKTsKK30KKworZnVuY3Rpb24gZGVzaXJlZFNpemUoKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMp
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxl
ZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisgICAgcmV0dXJuIEBnZXRSZWFk
YWJsZVN0cmVhbURlc2lyZWRTaXplKHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk0MGMzMTYzMGEx
YmIzMjY3NDFjYTI1YWJhYjlhZmMwMGJhMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5qcwpA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gY2FuY2Vs
KHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBl
RXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciIpKTsKKworICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICBpZiAodGhpcy5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dCh0aGlzLkBzdG9yZWRFcnJvcik7CisKKyAgICAvLyBUT0RPIEFTU0VSVChAaXNSZWFkYWJsZVN0
cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtKSk7CisgICAgLy8gVE9ETyBBU1NFUlQodGhp
cy5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxl
KTsKKyAgICByZXR1cm4gQGNhbmNlbFJlYWRhYmxlU3RyZWFtKHRoaXMuQG93bmVyUmVhZGFibGVT
dHJlYW0sIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIHJlYWQoKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworCisgICAgcmV0dXJuIEByZWFkRnJv
bVJlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpOworfQorCitmdW5jdGlvbiByZWxlYXNlTG9jaygp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRl
cih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpOworCisgICAgaWYgKCF0aGlzLkBv
d25lclJlYWRhYmxlU3RyZWFtKQorICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRoaXMuQHJl
YWRSZXF1ZXN0cy5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAg
ICBAY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKK30KKworZnVuY3Rpb24gY2xvc2Vk
KCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVh
ZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3Io
IkNhbGxlZSBvZiBjbG9zZWQgaXMgbm90IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisKKyAg
ICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlzZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2M2IxMTYxMDQxY2NkYjM1
YWQ1Mjk3NmNhZmU2YmQxMWRmYzhiNzcuLjkwOTNjODE4YmNhNzY5YTZjYjdiMzU4MDdkYmZmMjAy
M2UzZmZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtNTIsNiArNTIsNyBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAg
IG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSYW5nZUVycm9yKSBcCisgICAgbWFjcm8oUmVh
ZGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhSZWZlcmVuY2VFcnJvcikgXAogICAgIG1hY3JvKFJl
ZmxlY3QpIFwKICAgICBtYWNybyhSZWdFeHApIFwKQEAgLTMwNyw3ICszMDgsMzAgQEAKICAgICBt
YWNybyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pIFwKICAgICBtYWNybyhnZXQpIFwKICAgICBt
YWNybyhzZXQpIFwKLQorICAgIG1hY3JvKHN0YXRlKSBcCisgICAgbWFjcm8odW5kZXJseWluZ1Nv
dXJjZSkgXAorICAgIG1hY3JvKHF1ZXVlKSBcCisgICAgbWFjcm8ocXVldWVTaXplKSBcCisgICAg
bWFjcm8oc3RhcnRlZCkgXAorICAgIG1hY3JvKGNsb3NlUmVxdWVzdGVkKSBcCisgICAgbWFjcm8o
cHVsbEFnYWluKSBcCisgICAgbWFjcm8ocHVsbGluZykgXAorICAgIG1hY3JvKHJlYWRlcikgXAor
ICAgIG1hY3JvKHN0b3JlZEVycm9yKSBcCisgICAgbWFjcm8oY29udHJvbGxlcikgXAorICAgIG1h
Y3JvKHN0cmF0ZWd5U2l6ZSkgXAorICAgIG1hY3JvKGhpZ2hXYXRlck1hcmspIFwKKyAgICBtYWNy
byhyZWFkUmVxdWVzdHMpIFwKKyAgICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBcCisgICAg
bWFjcm8oY2xvc2VkUHJvbWlzZSkgXAorICAgIG1hY3JvKGNsb3NlZFByb21pc2VSZXNvbHZlKSBc
CisgICAgbWFjcm8oY2xvc2VkUHJvbWlzZVJlamVjdCkgXAorICAgIG1hY3JvKGNvbnRyb2xsZWRS
ZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFtQ2xvc2VkKSBcCisgICAg
bWFjcm8ocmVhZGFibGVTdHJlYW1SZWFkYWJsZSkgXAorICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFt
RXJyb3JlZCkgXAorICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtUmVhZGVyKSBcCisgICAgbWFjcm8o
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKSBcCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDkzZWUxZmQ3NGI5OTI1OTA0MWNhMWU4NjJmNjMxMWY2NTA5ODM4OWEuLjBlZWEwZWFlYzRlOGQ5
MWExMjcxZTQ3NTNlYmQ4YzFmNjViYjRhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE1Niw2ICsxNTYsMTIgQEAKICNpbmNs
dWRlICJKU1JlcGxheUlucHV0cy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgorI2Vu
ZGlmCisKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0yODYsNyArMjkyLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKSk7CiAgICAgbV9v
YmplY3RQcm90b3R5cGUtPnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVyc2NvcmVQcm90bywgcHJvdG9BY2Nlc3NvciwgQWNjZXNzb3IgfCBEb250RW51
bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7Ci0gICAgCisKKyNp
ZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5j
dGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwg
cmVhZGFibGVTdHJlYW1Jbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9yKHZtKSwg
dGhpcykpOworICAgIG1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVuY3Rpb24uc2V0
KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxl
U3RyZWFtSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRo
aXMpKTsKKyAgICBtX2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFi
bGVTdHJlYW1Jbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2
bSksIHRoaXMpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2VkR2V0dGVyLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJs
ZVN0cmVhbVByb3RvdHlwZUxvY2tlZENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAgbV9y
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUNsb3NlZEdldHRlci5zZXQodm0sIHRoaXMsIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1SZWFkZXJQ
cm90b3R5cGVDbG9zZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIuc2V0KHZtLCB0aGlzLCBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByb3RvdHlwZURlc2lyZWRTaXplQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyNlbmRp
ZgorCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQ4KV0ucHJvdG90eXBlLnNldCh2
bSwgdGhpcywgSlNJbnQ4QXJyYXlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgSlNJbnQ4QXJy
YXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQxNildLnByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIEpTSW50MTZBcnJheVByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBK
U0ludDE2QXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQzMild
LnByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEpTSW50MzJBcnJheVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBKU0ludDMyQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CkBAIC0zNDcsNiArMzYyLDE1IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkK
KyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUmVhZGFibGVT
dHJlYW06OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlw
ZS5nZXQoKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUuc2V0KHZtLCB0
aGlzLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywg
SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUmVhZGVy
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLmdldCgpKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1Db250
cm9sbGVyU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90
b3R5cGUuZ2V0KCkpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1f
d2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzKSk7CiAjZW5kaWYKQEAgLTQwNywxMSArNDMxLDIzIEBAIG1fICMjIGxv
d2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jCiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVF
cnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkp
OwogICAgIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBtX3JlYWRhYmxlU3RyZWFtQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZS5n
ZXQoKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLmdl
dCgpKSk7CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fcmVhZGFibGVTdHJlYW1Db250cm9s
bGVyUHJvdG90eXBlLmdldCgpKSk7CisjZW5kaWYKKwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9hcnJheVByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIAor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIG1fcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIG1f
cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9yZWFkYWJsZVN0cmVhbVJlYWRl
ckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rv
ci5nZXQoKSwgRG9udEVudW0pOworI2VuZGlmCisKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlD
b25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNDIyLDggKzQ1OCw3IEBAIG1fICMjIGxvd2VyTmFt
ZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPlN5bnRheEVycm9yLCBtX3N5bnRheEVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+VHlwZUVycm9yLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlVSSUVy
cm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICAKLSAgICAK
KwogI2RlZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yLCBEb250RW51bSk7IFwKIApAQCAtNTIwLDYgKzU1NSwzMCBAQCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93
ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1By
b21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0
ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVhZGFibGVTdHJlYW1SZWFkYWJsZVBy
aXZhdGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNSZWFkYWJsZVN0cmVh
bTo6U3RhdGU6OlJlYWRhYmxlKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkUHJpdmF0ZU5hbWUsIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Jl
YWRhYmxlU3RyZWFtOjpTdGF0ZTo6Q2xvc2VkKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJl
YWRhYmxlU3RyZWFtRXJyb3JlZFByaXZhdGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNSZWFkYWJsZVN0cmVhbTo6U3RhdGU6OkVycm9yZWQpKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1Jc1JlYWRh
YmxlU3RyZWFtQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUlzUmVhZGFi
bGVTdHJlYW1SZWFkZXJDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVh
bUlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFk
YWJsZVN0cmVhbUlzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RSZWFkYWJsZVN0
cmVhbVB1bGxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24o
dm0sIHJlYWRhYmxlU3RyZWFtUmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbENvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZXJyb3JS
ZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgcmVhZGFibGVTdHJlYW1FcnJvclJlYWRhYmxlU3RyZWFtQ29kZUdlbmVyYXRvcih2
bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnZva2VP
ck5vb3BQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IHJlYWRhYmxlU3RyZWFtSW52b2tlT3JOb29wQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlSW52b2tlT3JOb29wUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJs
ZVN0cmVhbVByb21pc2VJbnZva2VPck5vb3BDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFJlYWRhYmxlU3RyZWFtRGVzaXJl
ZFNpemVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IHJlYWRhYmxlU3RyZWFtR2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZUNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FuY2Vs
UmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1GaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJl
YW1Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmNsb3NlUmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ2xvc2VSZWFkYWJsZVN0cmVh
bUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1DbG9zZVJlYWRhYmxl
U3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFt
UmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWFkRnJvbVJlYWRhYmxlU3RyZWFt
UmVhZGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCByZWFkYWJsZVN0cmVhbVJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXJDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVucXVl
dWVJblJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUVucXVldWVJblJlYWRhYmxlU3RyZWFtQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVOYW1lKCksIG1fcmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZU5hbWUoKSwgbV9yZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzY1LDYgKzgy
NCwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IpOworI2VuZGlmCisKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CiAKQEAgLTc3OSwxMiArODQ0
LDI3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90
aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlTG9hZGVyKTsKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlv
bik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtUmVhZGVyRnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0
ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJvdG90eXBlQ2xvc2VkR2V0dGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVEZXNpcmVkU2l6ZUdldHRlcik7
CisjZW5kaWYKKwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3Rv
dHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5
cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogCisjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKTsKKyNlbmRpZgor
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZSk7CkBAIC04MTksNiArODk5LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CisjaWYgRU5B
QkxFKFNUUkVBTVNfQVBJKQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRh
YmxlU3RyZWFtU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9y
ZWFkYWJsZVN0cmVhbVJlYWRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlKTsKKyNlbmRpZgogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93
YXNtTW9kdWxlU3RydWN0dXJlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjYxMzE2ZTg1ZDJiYWZiZGVkNzg0MzBiNmY4
ZjhlYmE1YWQ4Nzc2ZS4uM2I0MTk2Y2YxMGY1ODEwMTIzMTA1ZTJlMjI5ZDBhZmU0ZDZhMDE2NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC03NCw2ICs3NCwxNCBAQCBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1
Y3RvcjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNl
OworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1
Y3RvcjsKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU7CitjbGFzcyBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyQ29uc3RydWN0b3I7CitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJv
dG90eXBlOworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvcjsKK2Ns
YXNzIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOworI2VuZGlmCiBjbGFzcyBK
U1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwpA
QCAtMjA0LDYgKzIxMiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlz
ZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcjsK
IAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0
cmVhbUNvbnN0cnVjdG9yPiBtX3JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I7CisgICAgV3JpdGVC
YXJyaWVyPEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcj4gbV9yZWFkYWJsZVN0cmVh
bVJlYWRlckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckNvbnN0cnVjdG9yPiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9y
OworI2VuZGlmCisKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxH
ZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251
bGxTZXR0ZXJGdW5jdGlvbjsKIApAQCAtMjE5LDYgKzIzMywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
V3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsK
IAogICAgIFdyaXRlQmFycmllcjxNb2R1bGVMb2FkZXJPYmplY3Q+IG1fbW9kdWxlTG9hZGVyOwor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9p
bml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbjsKKyAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVhZGFibGVTdHJlYW1Q
cm90b3R5cGVMb2NrZWRHZXR0ZXI7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVh
ZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXI7CisgICAgV3JpdGVCYXJyaWVy
PEpTRnVuY3Rpb24+IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNp
emVHZXR0ZXI7CisjZW5kaWYKIAogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1f
b2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9m
dW5jdGlvblByb3RvdHlwZTsKQEAgLTIyNiw2ICsyNDgsMTIgQEAgcHJvdGVjdGVkOgogICAgIFdy
aXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKIAorI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbVByb3Rv
dHlwZT4gbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFk
YWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZT4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU+
IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOworI2VuZGlmCisKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKQEAgLTI2Miw2ICsy
OTAsMTMgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0
b3JSZXN1bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmU7CisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWFkYWJsZVN0cmVhbVN0cnVjdHVyZTsKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJl
OworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC00MDksNiArNDQ0LDEx
IEBAIHB1YmxpYzoKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAKKyNpZiBFTkFCTEUoU1RSRUFN
U19BUEkpCisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKiByZWFkYWJsZVN0cmVhbUNv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yLmdl
dCgpOyB9CisgICAgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKiByZWFkYWJsZVN0
cmVhbVJlYWRlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJl
YWRlckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3RvciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yLmdldCgpOyB9Cisj
ZW5kaWYKICAgICBOdWxsR2V0dGVyRnVuY3Rpb24qIG51bGxHZXR0ZXJGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbnVsbEdldHRlckZ1bmN0aW9uLmdldCgpOyB9CiAgICAgTnVsbFNldHRlckZ1
bmN0aW9uKiBudWxsU2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxTZXR0ZXJG
dW5jdGlvbi5nZXQoKTsgfQogCkBAIC00MjksNiArNDY5LDE0IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlTG9hZGVyLmdldCgpOyB9CisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIEpTRnVu
Y3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rp
b24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbi5nZXQoKTsgfQorICAg
IEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckZ1bmN0
aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2Nr
ZWRHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2Vk
R2V0dGVyLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90
b3R5cGVDbG9zZWRHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtUmVhZGVy
UHJvdG90eXBlQ2xvc2VkR2V0dGVyLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZURlc2lyZWRTaXplR2V0dGVyLmdl
dCgpOyB9CisjZW5kaWYKIAogICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBGdW5jdGlvblBy
b3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpOyB9CkBAIC00OTksNiArNTQ3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
cHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKTsgfQog
ICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3Ry
dWN0dXJlLmdldCgpOyB9CisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgU3RydWN0dXJl
KiByZWFkYWJsZVN0cmVhbVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZGFibGVTdHJl
YW1TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlYWRhYmxlU3RyZWFtUmVhZGVy
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlclN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVy
ZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVj
dHVyZS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZjFmM2EzNDFhYzUwZGI5NzVk
Yzc3MDUyODdiNWM5NWEyMjA5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFt
LmgiCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkpTUmVhZGFi
bGVTdHJlYW0ubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKTsKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1JlYWRhYmxlU3RyZWFtUHJvdG90
eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVTdHJlYW06OnNfaW5mbyA9IHsgIlJl
YWRhYmxlU3RyZWFtIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Jl
YWRhYmxlU3RyZWFtKSB9OworCitKU1JlYWRhYmxlU3RyZWFtKiBKU1JlYWRhYmxlU3RyZWFtOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTUmVh
ZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSZWFkYWJsZVN0cmVhbT4odm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW0odm0sIGdsb2JhbE9i
amVjdC0+cmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUoKSk7CisgICAgcmVhZGFibGVTdHJlYW0tPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW07Cit9CisKK1N0cnVj
dHVyZSogSlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitjb25zdCBDbGFzc0luZm8g
SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6c19pbmZvID0geyAiUmVhZGFibGVTdHJlYW1Qcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcmVhZGFibGVTdHJlYW1Qcm90b3R5cGVUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKSB9OworCisvKiBTb3Vy
Y2UgZm9yIEpTUmVhZGFibGVTdHJlYW0ubHV0LmgKK0BiZWdpbiByZWFkYWJsZVN0cmVhbVByb3Rv
dHlwZVRhYmxlCisgIGNhbmNlbCAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY0Nh
bmNlbCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGdldFJlYWRlciAgICBKU1JlYWRhYmxl
U3RyZWFtUHJvdG90eXBlRnVuY0dldFJlYWRlciAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHBp
cGVUaHJvdWdoICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1BpcGVUaHJvdWdoICBEb250
RW51bXxGdW5jdGlvbiAyCisgIHBpcGVUbyAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBl
RnVuY1BpcGVUbyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRlZSAgICAgICAgICBKU1Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1RlZSAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisKKyAgbG9ja2VkICAgICAgIGpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQg
ICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxlU3RyZWFtUHJvdG90
eXBlKiBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZShzdGF0ZSwgc3RydWN0dXJlKTsKKyAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1
cmUqIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworYm9vbCBKU1Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+
KHN0YXRlLCByZWFkYWJsZVN0cmVhbVByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2NvbnN0
IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlJlYWRh
YmxlU3RyZWFtQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcikgfTsKKworSlNSZWFkYWJsZVN0cmVhbUNv
bnN0cnVjdG9yKiBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKiByZWFkYWJsZVN0
cmVhbVByb3RvdHlwZSkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbUNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcmVhZGFibGVTdHJlYW1Q
cm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Jl
YWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBKU1JlYWRhYmxl
U3RyZWFtQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNSZWFkYWJsZVN0cmVh
bVByb3RvdHlwZSogcmVhZGFibGVTdHJlYW1Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0iKSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVh
ZGFibGVTdHJlYW1Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RSZWFkYWJsZVN0
cmVhbShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpOworCisgICAgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVTdHJlYW0gPSBKU1JlYWRh
YmxlU3RyZWFtOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CisKKyAgICBKU0Z1bmN0aW9uKiBp
bml0aWFsaXplUmVhZGFibGVTdHJlYW0gPSBnbG9iYWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJs
ZVN0cmVhbUZ1bmN0aW9uKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpbml0aWFsaXplUmVhZGFibGVTdHJlYW0sIGNhbGxEYXRh
KTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHN0YXRlLT5hcmd1
bWVudCgwKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChzdGF0ZS0+YXJndW1lbnQoMSkpOworICAg
IGNhbGwoc3RhdGUsIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSwgY2FsbFR5cGUsIGNhbGxEYXRh
LCByZWFkYWJsZVN0cmVhbSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVhZGFibGVTdHJlYW0pOworfQorCitDb25zdHJ1Y3RUeXBlIEpTUmVhZGFibGVTdHJlYW1D
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0UmVhZGFibGVTdHJlYW07CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitD
YWxsVHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
b25zdHJ1Y3RSZWFkYWJsZVN0cmVhbTsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbVByb3RvdHlw
ZUdldHRlckxvY2tlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiog
Z2V0dGVyID0gc3RhdGUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1Q
cm90b3R5cGVMb2NrZWRHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VS
VChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJhZDkzOTdiMTVjNDI4
Mzk4NTVjNjVhMDEyYTBiZDc4ODVkYmIzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDk0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtX2gKKyNkZWZpbmUgSlNSZWFkYWJs
ZVN0cmVhbV9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEpTUmVhZGFibGVTdHJlYW0gOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNS
ZWFkYWJsZVN0cmVhbSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1
bnNpZ25lZCB7CisgICAgICAgIFJlYWRhYmxlID0gMSwKKyAgICAgICAgQ2xvc2VkLAorICAgICAg
ICBFcnJvcmVkCisgICAgfTsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogQmFzZSh2bSwgc3RydWN0dXJlKSB7IH0KK307CisK
K2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAg
ICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKEV4ZWNTdGF0ZSogc3RhdGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlKSA6IEJhc2Uoc3RhdGUtPnZtKCksIHN0cnVjdHVyZSkgeyB9CisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1
Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIElu
dGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFtQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUq
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpT
UmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkgeyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSopOworCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZUdldHRlckxv
Y2tlZChKU0M6OkV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2VuZGlmIC8vIEpTUmVhZGFibGVTdHJlYW1faApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZTIyNTIwN2Q2NzMzYTU3YWJmNmQyNDc5
ZDczYTgxNjZmM2FjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5j
bHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpOworCitjb25z
dCBDbGFzc0luZm8gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OnNfaW5mbyA9IHsgIlJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpIH07CisKK0pTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcih2bSwgZ2xvYmFsT2JqZWN0LT5yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1
cmUoKSk7CisgICAgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjsKK30KKworU3RydWN0dXJlKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitjb25zdCBDbGFzc0lu
Zm8gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZyZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlci5sdXQuaAorQGJlZ2luIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByb3RvdHlwZVRhYmxlCisgIGNsb3NlICAgICAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByb3RvdHlwZUZ1bmNDbG9zZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlbnF1ZXVl
ICAgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRW5xdWV1ZSAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgZXJyb3IgICAgICAgIEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlRnVuY0Vycm9yICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGRl
c2lyZWRTaXplICBqc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZUZ1bmNEZXNpcmVk
U2l6ZSAgRG9udEVudW18QWNjZXNzb3IKK0BlbmQKKyovCisKK0pTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUoc3RhdGUsIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitib29s
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SlNPYmplY3Q+KHN0YXRlLCByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVU
YWJsZSwganNDYXN0PEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yKSB9OworCitKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNv
bnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZSkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29u
c3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAg
ICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0g
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKwor
ICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgPSBnbG9i
YWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbigpOwor
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciwgY2FsbERhdGEpOworICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
KyAgICBjYWxsKHN0YXRlLCBpbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciwgYXJndW1lbnRzKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVhZGFibGVTdHJlYW1Db250cm9sbGVyKTsKK30K
KworQ29uc3RydWN0VHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXI7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxs
VHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250cm9sbGVyOworICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZUZ1bmNEZXNpcmVkU2l6ZShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiogZ2V0dGVyID0gc3RhdGUtPmNhbGxlZSgpLT5n
bG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNp
emVHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzYwZmMx
YjZhZGM1NWZhMWRiZGUyMzUwMWY0OWMyMGJmYjdjYzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaApA
QCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcl9oCisjZGVmaW5lIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyX2gKKworI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpIHsgfQorfTsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQ
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUq
IGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIDogQmFzZShzdGF0ZS0+dm0oKSwgc3RydWN0dXJlKSB7IH0KKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworfTsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uodm0sIHN0cnVjdHVyZSkg
eyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGUqKTsKKworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0Rlc2ly
ZWRTaXplKEpTQzo6RXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjZW5kaWYgLy8gSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTVhNzc4YzFjZDU5OTc0YThmMDI2
MGRkZjBkNGFmNzA3NzZmNGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKQEAgLTAsMCArMSwxNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oIgorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRl
cikgfTsKKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkYWJsZVN0cmVhbVJlYWRlciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyKHZtLCBnbG9iYWxPYmplY3QtPnJlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0
dXJlKCkpOworICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtUmVhZGVyOworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtUmVhZGVy
UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBl
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmx1dC5oCitAYmVn
aW4gcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVUYWJsZQorICBjYW5jZWwgICAgICAgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNDYW5jZWwgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgcmVhZCAgICAgICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVG
dW5jUmVhZCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHJlbGVhc2VMb2NrICBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY1JlbGVhc2VMb2NrICAgRG9udEVudW18RnVu
Y3Rpb24gMAorICBjbG9zZWQgICAgICAganNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1
bmNDbG9zZWQgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyUHJvdG90eXBlKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpj
cmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByb3RvdHlwZShzdGF0ZSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworYm9vbCBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KHN0
YXRlLCByZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNSZWFkYWJs
ZVN0cmVhbVJlYWRlclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9
CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rv
cikgfTsKKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKiByZWFkYWJsZVN0cmVhbVJlYWRlclBy
b3RvdHlwZSkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbVJlYWRl
ckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcmVh
ZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30K
KworU3RydWN0dXJlKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKwordm9pZCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSogcmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFT
Q0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RSZWFkYWJsZVN0cmVh
bVJlYWRlcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+Y2FsbGVlKCktPmdsb2Jh
bE9iamVjdCgpOworCisgICAgSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogcmVhZGFibGVTdHJlYW1S
ZWFkZXIgPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7
CisKKyAgICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIgPSBnbG9i
YWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1bmN0aW9uKCk7CisgICAg
Q2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShp
bml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIsIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgY2Fs
bChzdGF0ZSwgaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHJlYWRhYmxlU3RyZWFtUmVhZGVyLCBhcmd1bWVudHMpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZWFkYWJsZVN0cmVhbVJlYWRlcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcjsKKyAgICByZXR1cm4g
Q29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorewor
ICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtUmVh
ZGVyOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3NlZChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiogZ2V0dGVyID0gc3RhdGUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVD
bG9zZWRHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE0MmNkZmU1ODU0
ZGRjZjk5MDJjZDk1MjQwMGNjN2ZhNjRiMjQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyX2gKKyNk
ZWZpbmUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcl9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIDogQmFzZSh2bSwgc3RydWN0dXJlKSB7IH0KK307CisKK2NsYXNz
IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0
cmVhbVJlYWRlclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0
ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogc3RhdGUs
IFN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uoc3RhdGUtPnZtKCksIHN0cnVjdHVyZSkgeyB9
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uodm0sIHN0cnVjdHVyZSkg
eyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNSZWFkYWJsZVN0cmVhbVJlYWRl
clByb3RvdHlwZSopOworCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNDbG9zZWQoSlNDOjpF
eGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNU19BUEkpCisKKyNlbmRpZiAvLyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyX2ggCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDZlZTI1NmM1Yzk3YWI2YzFjY2NhNDRkYTA1ZGZlOWQxNmVhZjdjNDYu
LmMxZDU4NDY2MjZhOTE5MWM4M2VmN2MwZjNkZDViYzA1ZmYyOGY5MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yNzMsOSArMjczLDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMK
ICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGwKIAogICAgIE1vZHVs
ZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5pZGwKLSAgICBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uaWRsCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5pZGwKLSAgICBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRs
CiAKICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCiAKQEAgLTkz
Miw5ICs5MjksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmNwcAogCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAot
ICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKLQogICAgIE1vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKICAgICBNb2R1bGVzL3ZpYnJhdGlv
bi9WaWJyYXRpb24uY3BwCiAKQEAgLTExNjcsOSArMTE2MSw2IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtQ3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
a0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEyMDAs
NyArMTE5MSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAotICAgIGJpbmRp
bmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCiAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKICAgICBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CmluZGV4IDFlODliOTFlYzQyY2U3ZmQ2MTI5MjkzYTMyOGJkMjc4YWM5MzBjYmEuLjAwYjJiNDVj
OWU0ZjQ3OTk1MWQ1NWExM2Q5M2I0OGI0YmE5MDRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKQEAgLTMwNiwxMSArMzA2LDYgQEAKICNpbmNsdWRlICJKU1JhZGlvTm9kZUxpc3QuY3Bw
IgogI2luY2x1ZGUgIkpTUmFuZ2UuY3BwIgogI2luY2x1ZGUgIkpTUmFuZ2VFeGNlcHRpb24uY3Bw
IgotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmNw
cCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAiCi0jaW5jbHVkZSAi
SlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiCi0jZW5kaWYKICNpbmNsdWRlICJKU1JlY3QuY3Bw
IgogI2luY2x1ZGUgIkpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIgogI2luY2x1
ZGUgIkpTUkdCQ29sb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYTNi
OWU5ZWNiYmE5ZDYxZGJkYjkxNTVlOGU0MjQxYTcyYjJhNGE0OC4uZDU4ZjE4MjA5NGMwMzgwMWJi
ZTVjOGRhYTY5OTc4YjdiYjdmZDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xNzUsOSArMTc1LDYgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNSZWFkYWJsZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlOWUyZjQ5N2MyOGMzZmJmNTUyNmJmYWE3
MmMwMWRmMGEyMzQ1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfSlNSZWFkYWJsZVN0cmVhbV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X0pTUmVhZGFibGVTdHJlYW1faAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmVhZGFibGVT
dHJlYW0uaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZWRlYmEx
MTAzMjQwOTU4YzNiYTU0ZDYxNjZmZTEwYTIyNzE4MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVk
IHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5P
TiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW0uaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ERUZJTkVfREVCVUdf
T05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291
bnRlciwgKCJSZWFkYWJsZVN0cmVhbSIpKTsKLQotUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBSZWFk
YWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKLXsKLSAgICByZXR1cm4gUmVmUHRyPFJl
YWRhYmxlU3RyZWFtPihSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCBzdHJh
dGVneSkpOwotfQotCi1SZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVj
dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVhZGFi
bGVTdHJlYW1Db3VudGVyLmluY3JlbWVudCgpOwotI2VuZGlmCi0gICAgc3VzcGVuZElmTmVlZGVk
KCk7Ci19Ci0KLVJlYWRhYmxlU3RyZWFtOjp+UmVhZGFibGVTdHJlYW0oKQotewotI2lmbmRlZiBO
REVCVUcKLSAgICByZWFkYWJsZVN0cmVhbUNvdW50ZXIuZGVjcmVtZW50KCk7Ci0jZW5kaWYKLX0K
LQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xlYXJDYWxsYmFja3MoKQotewotICAgIG1fY2xvc2Vk
UHJvbWlzZSA9IE51bGxvcHQ7Ci0gICAgbV9yZWFkUmVxdWVzdHMuY2xlYXIoKTsKLX0KLQotdm9p
ZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCi17Ci0gICAgQVNTRVJUKCFt
X2Nsb3NlUmVxdWVzdGVkKTsKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6RXJyb3JlZCk7
Ci0KLSAgICBtX2Nsb3NlUmVxdWVzdGVkID0gdHJ1ZTsKLQotICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpSZWFkYWJsZSB8fCBoYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgY2xvc2Uo
KTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2UoKQotewotICAgIG1fc3RhdGUgPSBT
dGF0ZTo6Q2xvc2VkOwotICAgIHJlbGVhc2VSZWFkZXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0
cmVhbTo6cmVsZWFzZVJlYWRlcigpCi17Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZWFk
UmVxdWVzdHMpCi0gICAgICAgIHJlcXVlc3QucmVzb2x2ZUVuZCgpOwotICAgIGlmIChtX3JlYWRl
cikKLSAgICAgICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShtX3JlYWRlcikp
OwotCi0gICAgaWYgKG1fY2xvc2VkUHJvbWlzZSkKLSAgICAgICAgbV9jbG9zZWRQcm9taXNlLnZh
bHVlKCkucmVzb2x2ZShudWxscHRyKTsKLSAgICBjbGVhckNhbGxiYWNrcygpOwotfQotCi12b2lk
IFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCi17Ci0gICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OlJlYWRhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjbGVhclZhbHVl
cygpOwotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwotCi0gICAgaWYgKCFtX3JlYWRl
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNDOjpKU1ZhbHVlIGVycm9yID0gdGhpcy0+ZXJy
b3IoKTsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKLSAgICAgICAg
cmVxdWVzdC5yZWplY3QoZXJyb3IpOwotICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6
Om1vdmUobV9yZWFkZXIpKTsKLQotICAgIGlmIChtX2Nsb3NlZFByb21pc2UpCi0gICAgICAgIG1f
Y2xvc2VkUHJvbWlzZS52YWx1ZSgpLnJlamVjdChlcnJvcik7Ci0gICAgY2xlYXJDYWxsYmFja3Mo
KTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6c3RhcnQoKQotewotICAgIG1faXNTdGFydGVk
ID0gdHJ1ZTsKLSAgICBwdWxsKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnB1bGwoKQot
ewotICAgIGlmICghbV9pc1N0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1f
c3RhdGUgPT0gU3RhdGU6OkVycm9yZWQgfHwgbV9jbG9zZVJlcXVlc3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNFbm91Z2hWYWx1
ZXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQdWxsaW5nKSB7Ci0gICAgICAg
IG1fc2hvdWxkUHVsbEFnYWluID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1faXNQdWxsaW5nID0gdHJ1ZTsKLSAgICBpZiAoZG9QdWxsKCkpIHsKLSAgICAgICAgUmVmUHRy
PFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0odGhpcyk7Ci0gICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFN0cmVhbV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFN0cmVhbS0+ZmluaXNoUHVsbGlu
ZygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmZpbmlz
aFB1bGxpbmcoKQotewotICAgIG1faXNQdWxsaW5nID0gZmFsc2U7Ci0gICAgaWYgKG1fc2hvdWxk
UHVsbEFnYWluKSB7Ci0gICAgICAgIG1fc2hvdWxkUHVsbEFnYWluID0gZmFsc2U7Ci0gICAgICAg
IHB1bGwoKTsKLSAgICB9Ci19Ci0KLVJlYWRhYmxlU3RyZWFtUmVhZGVyKiBSZWFkYWJsZVN0cmVh
bTo6Z2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChsb2NrZWQoKSkgewot
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
ICAgIEFTU0VSVCghbV9yZWFkZXIpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyPiBuZXdSZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtUmVh
ZGVyPigqdGhpcyk7Ci0gICAgUmVhZGFibGVTdHJlYW1SZWFkZXImIHJlYWRlciA9ICpuZXdSZWFk
ZXIuZ2V0KCk7Ci0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGUpIHsKLSAgICAg
ICAgbV9yZWFkZXIgPSBXVEY6Om1vdmUobmV3UmVhZGVyKTsKLSAgICAgICAgcmV0dXJuICZyZWFk
ZXI7Ci0gICAgfQotCi0gICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShuZXdS
ZWFkZXIpKTsKLSAgICByZXR1cm4gJnJlYWRlcjsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6
Y2FuY2VsKEpTQzo6SlNWYWx1ZSByZWFzb24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlLCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobG9ja2VkKCkpIHsKLSAgICAgICAgZWMgPSBUeXBl
RXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FuY2VsTm9DaGVjayhyZWFzb24s
IFdURjo6bW92ZShwcm9taXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNhbmNlbE5v
Q2hlY2soSlNDOjpKU1ZhbHVlIHJlYXNvbiwgQ2FuY2VsUHJvbWlzZSYmIHByb21pc2UpCi17Ci0g
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewotICAgICAgICBwcm9taXNlLnJlc29s
dmUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxl
KTsKLQotICAgIGNsZWFyVmFsdWVzKCk7Ci0KLSAgICBtX2NhbmNlbFByb21pc2UgPSBXVEY6Om1v
dmUocHJvbWlzZSk7Ci0KLSAgICBjbG9zZSgpOwotCi0gICAgaWYgKGRvQ2FuY2VsKHJlYXNvbikp
Ci0gICAgICAgIGVycm9yKCkgPyBub3RpZnlDYW5jZWxGYWlsZWQoKSA6IG5vdGlmeUNhbmNlbFN1
Y2NlZWRlZCgpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpub3RpZnlDYW5jZWxTdWNjZWVk
ZWQoKQotewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpOwotICAgIEFTU0VS
VChtX2NhbmNlbFByb21pc2UpOwotCi0gICAgbV9jYW5jZWxQcm9taXNlLnZhbHVlKCkucmVzb2x2
ZShudWxscHRyKTsKLSAgICBtX2NhbmNlbFByb21pc2UgPSBOdWxsb3B0OwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtOjpub3RpZnlDYW5jZWxGYWlsZWQoKQotewotICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpDbG9zZWQpOwotICAgIEFTU0VSVChtX2NhbmNlbFByb21pc2UpOwotCi0gICAg
bV9jYW5jZWxQcm9taXNlLnZhbHVlKCkucmVqZWN0KGVycm9yKCkpOwotICAgIG1fY2FuY2VsUHJv
bWlzZSA9IE51bGxvcHQ7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRQ
cm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewotICAgICAgICBwcm9taXNl
LnJlamVjdChlcnJvcigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Nsb3NlZFBy
b21pc2UgPSBXVEY6Om1vdmUocHJvbWlzZSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnJl
YWQoUmVhZFByb21pc2UmJiByZWFkUHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6Q2xvc2VkKSB7Ci0gICAgICAgIHJlYWRQcm9taXNlLnJlc29sdmVFbmQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewotICAg
ICAgICByZWFkUHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGhhc1ZhbHVlKCkpIHsKLSAgICAgICAgcmVhZFByb21pc2UucmVzb2x2ZShyZWFk
KCkpOwotICAgICAgICBpZiAoIW1fY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgICAgICBwdWxsKCk7
Ci0gICAgICAgIGVsc2UgaWYgKCFoYXNWYWx1ZSgpKQotICAgICAgICAgICAgY2xvc2UoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQoV1RGOjptb3Zl
KHJlYWRQcm9taXNlKSk7Ci0gICAgcHVsbCgpOwotfQotCi1ib29sIFJlYWRhYmxlU3RyZWFtOjpy
ZXNvbHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAobV9yZWFk
UmVxdWVzdHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3JlYWRS
ZXF1ZXN0cy50YWtlRmlyc3QoKS5yZXNvbHZlKHZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotY29uc3QgY2hhciogUmVhZGFibGVTdHJlYW06OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAotewotICAgIHJldHVybiAiUmVhZGFibGVTdHJlYW0iOwotfQotCi1ib29sIFJlYWRhYmxlU3Ry
ZWFtOjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHRyeSBhbmQgZG8gYmV0dGVyIGhlcmUuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU3N2JhNTg5ZWUwMjEwNTcx
MTk1ZDlhM2E1YTdjYmEzNTBkMTY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFJlYWRhYmxlU3RyZWFtX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1faAotCi0j
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0j
aW5jbHVkZSAiRE9NUmVxdWVzdFN0YXRlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEpTVmFsdWU7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgRGljdGlvbmFyeTsKLWNsYXNzIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQotLy8gUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50cyB0aGUgY29yZSBvZiB0aGUg
c3RyZWFtcyBBUEkgUmVhZGFibGVTdHJlYW0gZnVuY3Rpb25hbGl0eS4KLS8vIEl0IGhhbmRsZXMg
aW4gcGFydGljdWxhciB0aGUgYmFja3ByZXNzdXJlIGFjY29yZGluZyB0aGUgcXVldWUgc2l6ZS4K
LS8vIFJlYWRhYmxlU3RyZWFtIGlzIHVzaW5nIGEgUmVhZGFibGVTdHJlYW1Tb3VyY2UgdG8gZ2V0
IGRhdGEgaW4gaXRzIHF1ZXVlLgotLy8gU2VlIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5v
cmcvI3JzCi1jbGFzcyBSZWFkYWJsZVN0cmVhbSA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtPiB7
Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJlYWRhYmxlLAotICAg
ICAgICBDbG9zZWQsCi0gICAgICAgIEVycm9yZWQKLSAgICB9OwotCi0gICAgc3RhdGljIFJlZlB0
cjxSZWFkYWJsZVN0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBj
b25zdCBEaWN0aW9uYXJ5Jik7Ci0gICAgdmlydHVhbCB+UmVhZGFibGVTdHJlYW0oKTsKLQotICAg
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiBnZXRSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOwotICAgIGNv
bnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRl
ci5nZXQoKTsgfQotCi0gICAgYm9vbCBsb2NrZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmVhZGVy
OyB9Ci0KLSAgICB2b2lkIHJlbGVhc2VSZWFkZXIoKTsKLSAgICBib29sIGhhc1JlYWRQZW5kaW5n
UmVxdWVzdHMoKSB7IHJldHVybiAhbV9yZWFkUmVxdWVzdHMuaXNFbXB0eSgpOyB9Ci0KLSAgICBi
b29sIGlzRXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQ7
IH0KLSAgICBib29sIGlzUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRl
OjpSZWFkYWJsZTsgfQotICAgIGJvb2wgaXNDbG9zZVJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xvc2VSZXF1ZXN0ZWQ7IH0KLQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkg
PSAwOwotCi0gICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Nsb3NlZCgp
OwotICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKLSAgICB2b2lkIGZpbmlzaFB1bGxp
bmcoKTsKLSAgICB2b2lkIG5vdGlmeUNhbmNlbFN1Y2NlZWRlZCgpOwotICAgIHZvaWQgbm90aWZ5
Q2FuY2VsRmFpbGVkKCk7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3Qs
IEpTQzo6SlNWYWx1ZT4gQ2FuY2VsUHJvbWlzZTsKLSAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFs
dWUsIENhbmNlbFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY2FuY2VsTm9D
aGVjayhKU0M6OkpTVmFsdWUsIENhbmNlbFByb21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVBy
b21pc2U8c3RkOjpudWxscHRyX3QsIEpTQzo6SlNWYWx1ZT4gQ2xvc2VkUHJvbWlzZTsKLSAgICB2
b2lkIGNsb3NlZChDbG9zZWRQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlSXRl
cmF0b3JXaXRoQ2FsbGJhY2s8SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWU+IFJlYWRQcm9taXNl
OwotICAgIHZvaWQgcmVhZChSZWFkUHJvbWlzZSYmKTsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLQotICAgIGJvb2wg
cmVzb2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUpOwotICAgIHZvaWQgcHVsbCgpOwotCi1w
cml2YXRlOgotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuU3VzcGVuZEZv
clBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBjbGVhckNhbGxiYWNrcygp
OwotICAgIHZvaWQgY2xvc2UoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZhbHVlcygpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1
ZSByZWFkKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkb1B1bGwoKSA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGRvQ2FuY2VsKEpTQzo6SlNWYWx1ZSkgPSAwOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFJlYWRhYmxlU3RyZWFtUmVhZGVyPiBtX3JlYWRlcjsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFJlYWRhYmxlU3RyZWFtUmVhZGVyPj4gbV9yZWxlYXNlZFJlYWRlcnM7Ci0KLSAgICBPcHRp
b25hbDxDYW5jZWxQcm9taXNlPiBtX2NhbmNlbFByb21pc2U7Ci0gICAgT3B0aW9uYWw8Q2xvc2Vk
UHJvbWlzZT4gbV9jbG9zZWRQcm9taXNlOwotCi0gICAgRGVxdWU8UmVhZFByb21pc2U+IG1fcmVh
ZFJlcXVlc3RzOwotCi0gICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2lzUHVsbGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFB1bGxBZ2FpbiB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX2Nsb3NlUmVxdWVzdGVkIHsgZmFsc2UgfTsKLSAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OlJlYWRhYmxlIH07Ci19OwotCi0vLyBUaGlzIGNsYXNzIG1hbmFnZXMgdGhl
IHF1ZXVlIGFuZCBrbm93cyB3aGV0aGVyIHRoZXJlIGlzIHN1ZmZpY2llbnQgZGF0YSBpbiBpdC4K
LS8vICAgU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IGVycm9yIHN0b3JhZ2UsIHB1bGxpbmcg
YW5kIGNhbmNlbGxpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaHVua1R5cGU+Ci1jbGFzcyBSZWFk
YWJsZUVucXVldWluZ1N0cmVhbSBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wcm90
ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgOiBSZWFkYWJsZVN0cmVhbShjb250ZXh0KSB7IH0KLQotICAg
IHZvaWQgZW5xdWV1ZUNodW5rKENodW5rVHlwZSYmIGNodW5rKSB7IG1fcXVldWUuYXBwZW5kKHN0
ZDo6Zm9yd2FyZChjaHVuaykpOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
VmFsdWVzKCkgb3ZlcnJpZGUgeyBtX3F1ZXVlLmNsZWFyKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzRW5vdWdoVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1ZS5zaXplKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3F1ZXVlLnNpemUoKTsgfQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlk
ZTsKLQotICAgIERlcXVlPENodW5rVHlwZT4gbV9xdWV1ZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENodW5rVHlwZT4KLWlubGluZSBKU0M6OkpTVmFsdWUgUmVhZGFibGVFbnF1ZXVpbmdTdHJl
YW08Q2h1bmtUeXBlPjo6cmVhZCgpCi17Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHN0YXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHRvSlMoc3RhdGUuZXhlYygpLCB0b0pT
RE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc3RhdGUuZXhlYygpKSwg
bV9xdWV1ZS5yZWFkKCkpOwotfQotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gUmVhZGFibGVT
dHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2M2MyNjQzMThjNTQxMjBh
NzA4ODkxYTFjZGFjNTNmMDY4Y2IwZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLVsKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAotICAgIENvbnN0cnVj
dG9yKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHNvdXJjZSwgW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBEaWN0aW9uYXJ5IHN0cmF0ZWd5KSwKLSAgICBDb25kaXRpb25hbD1T
VFJFQU1TX0FQSSwKLSAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgotXSBpbnRlcmZhY2UgUmVhZGFi
bGVTdHJlYW0gewotICAgIFtSYWlzZXNFeGNlcHRpb25dIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0g
UmVhZGFibGVTdHJlYW1SZWFkZXIgZ2V0UmVhZGVyKCk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBw
aXBlVG8oYW55IHN0cmVhbXMsIGFueSBvcHRpb25zKTsKLSAgICBbQ3VzdG9tXSBPYmplY3QgcGlw
ZVRocm91Z2goYW55IGRlc3QsIGFueSBvcHRpb25zKTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGxvY2tlZDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE0YzNiZWNiYjFkNzdkMzhjOGU5M2M4NGY0ODYzMzllZjc0ZTNlNmYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJfaAotI2RlZmluZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJfaAot
Ci0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0K
LS8vIFRoaXMgY2xhc3MgaXMgb25seSB1c2VkIGZvciBKUyBzb3VyY2UgcmVhZGFibGUgc3RyZWFt
cyB0byBhbGxvdyBlbnF1ZXVpbmcsIGNsb3Npbmcgb3IgZXJyb3JpbmcgYSByZWFkYWJsZSBzdHJl
YW0uCi0vLyBJdHMgZGVmaW5pdGlvbiBpcyBhdCBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cu
b3JnLyNycy1jb250cm9sbGVyLWNsYXNzLgotLy8gTm90ZSB0aGF0IGl0cyBjb25zdHJ1Y3RvciBp
cyB0YWtpbmcgYSBSZWFkYWJsZUpTU3RyZWFtIGFzIGl0IHNob3VsZCBvbmx5IGJlIHVzZWQgZm9y
IEpTIHNvdXJjZXMuCi1jbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgewotcHVibGljOgot
ICAgIGV4cGxpY2l0IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihSZWFkYWJsZUpTU3RyZWFtJiBz
dHJlYW0pCi0gICAgICAgIDogbV9zdHJlYW0oc3RyZWFtKSB7IH0KLQotICAgIFJlYWRhYmxlSlNT
dHJlYW0mIHN0cmVhbSgpIHsgcmV0dXJuIG1fc3RyZWFtOyB9Ci0KLSAgICB2b2lkIGVycm9yKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBl
YykgeyBtX3N0cmVhbS5lcnJvcigqc3RhdGUsIHZhbHVlLCBlYyk7IH0KLQotICAgIHZvaWQgZW5x
dWV1ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBtX3N0cmVh
bS5lbnF1ZXVlKCpzdGF0ZSwgdmFsdWUpOyB9Ci0KLSAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0u
cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9Ci0KLSAgICB2
b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IG1fc3RyZWFtLmNsb3NlKGVjKTsgfQotICAg
IGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtLmRlc2lyZWRTaXpl
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpTU3RyZWFtJiBtX3N0cmVhbTsKLX07Ci0K
LX0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBSZWFkYWJsZVN0cmVhbV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGI4YzhiNWU5NzcxOGExNGZk
YmJkY2U5YzYzNWE2ZjY3NGU4NTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0
byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04g
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAotICAgIEN1c3RvbUNv
bnN0cnVjdG9yLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKLV0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGVucXVldWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBhbnkgY2h1bmspOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgY2xvc2UoKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBlcnJvcihbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBlcnJvcik7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgZG91YmxlIGRlc2lyZWRTaXplOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZjM3ZDk5YzAxZDljMWFhYWU5ZGM4ZWMyOGNmNzdjNWU2ZWYwZGI5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIElu
Yy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0K
LSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2FuY2VsKEpTQzo6SlNWYWx1ZSByZWFzb24sIFJlYWRhYmxl
U3RyZWFtOjpDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdHJlYW0uaXNS
ZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFt
LmNhbmNlbE5vQ2hlY2socmVhc29uLCBXVEY6Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFByb21pc2Um
JiBwcm9taXNlKQotewotICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYgbV9zdHJlYW0u
cmVhZGVyKCkgIT0gdGhpcykgewotICAgICAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJlYW0uY2xvc2VkKFdURjo6bW92ZShwcm9t
aXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OnJlYWQoUmVhZGFibGVTdHJl
YW06OlJlYWRQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdHJlYW0uaXNSZWFkYWJs
ZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlRW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJlYW0ucmVhZChXVEY6
Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNl
TG9jayhFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobV9zdHJlYW0ucmVhZGVyKCkgIT0g
dGhpcykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3N0cmVhbS5oYXNSZWFkUGVuZGluZ1Jl
cXVlc3RzKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgbV9zdHJlYW0ucmVsZWFzZVJlYWRlcigpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRkMmZiNTNkNTExMGIyZDExNmE1
Mzc1ZWRjNjI4MzVmMzEwNDliOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgUmVhZGFibGVTdHJlYW1SZWFkZXJfaAotI2RlZmluZSBSZWFkYWJsZVN0cmVh
bVJlYWRlcl9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgotI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL1JlZi5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotLy8gUmVhZGFibGVTdHJlYW1SZWFkZXIgaW1w
bGVtZW50cyBhY2Nlc3MgdG8gUmVhZGFibGVTdHJlYW0gZnJvbSBKYXZhU2NyaXB0LgotLy8gSXQg
YmFzaWNhbGx5IGFsbG93cyBhY2Nlc3MgdG8gdGhlIFJlYWRhYmxlU3RyZWFtIGlmZiB0aGUgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2UgaXMgdGhlIGFjdGl2ZSByZWFkZXIKLS8vIG9mIHRo
ZSBSZWFkYWJsZVN0cmVhbS4KLS8vIE1vc3Qgb2YgdGhpcyBoYW5kbGluZyBpcyBoYXBwZW5pbmcg
aW4gdGhlIGN1c3RvbSBKUyBiaW5kaW5nIG9mIFJlYWRhYmxlU3RyZWFtUmVhZGVyLgotLy8gU2Vl
IGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcvI3JlYWRlci1jbGFzcyBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KLWNsYXNzIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHsKLXB1YmxpYzoKLSAgICBS
ZWFkYWJsZVN0cmVhbVJlYWRlcihSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQotICAgICAgICA6IG1f
c3RyZWFtKHN0cmVhbSkgeyB9Ci0KLSAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUsIFJlYWRh
YmxlU3RyZWFtOjpDYW5jZWxQcm9taXNlJiYpOwotICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3Ry
ZWFtOjpDbG9zZWRQcm9taXNlJiYpOwotICAgIHZvaWQgcmVhZChSZWFkYWJsZVN0cmVhbTo6UmVh
ZFByb21pc2UmJik7Ci0gICAgdm9pZCByZWxlYXNlTG9jayhFeGNlcHRpb25Db2RlJik7Ci0KLSAg
ICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBtX3N0
cmVhbS5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVhZGFibGVTdHJlYW0mIG1fc3RyZWFt
OwotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJlYWRhYmxlU3RyZWFtX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWFmZTI1ZGI1OWZkYmFkNzE5
YWM5NDIwY2VkOGE0ZjhmYmNhYTI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FO
T04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCi0gICAgQ3VzdG9tQ29uc3Ry
dWN0b3IoYW55IHByb3BlcnRpZXMpLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIFNraXBW
VGFibGVWYWxpZGF0aW9uCi1dIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbVJlYWRlciB7Ci0gICAg
UHJvbWlzZSByZWFkKCk7Ci0gICAgUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBhbnkgcmVhc29uKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbGVhc2VM
b2NrKCk7Ci0KLSAgICBbQ3VzdG9tR2V0dGVyLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBQcm9taXNlIGNsb3NlZDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IGQyOGU1ZDcwZTJiZWYzNDhiZDc5NzNhNmE5OGM0NGI0MjhmMGRiYTkuLjJjN2YzOThhOTA3MjFm
NjcyZmVjNjZhNGIxZWZmYWFlNmEzODMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC02MTcsOCArNjE3LDYgQEAgbGlzdChSRU1PVkVfSVRFTSBXZWJDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NUGFubmVyTm9kZS5tbQogICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01Qb3BTdGF0ZUV2ZW50Lm1tCiAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTVJhZGlvTm9kZUxpc3QubW0KLSAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NUmVhZGFibGVTdHJlYW0ubW0KLSAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NUmVhZGFibGVTdHJlYW1SZWFkZXIubW0KICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NU2NyaXB0UHJvY2Vzc29yTm9kZS5tbQog
ICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01TY3JpcHRQcm9maWxlLm1tCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTVNjcmlwdFByb2ZpbGVOb2RlLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCAzM2RmYjBkZTA4ZTYwMDg2ZmY0YWRiYTFjOTkwMDEwNGIwNDY2ZDI2Li43ZGNlNWM5ZWM5NGNm
MGY0NzM1ODc0NzI2Y2Y5YmMxYjZlNDg1MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTM5NDYsNDggKzM5NDYsNiBAQAogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU1JlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
Y3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZp
eHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZm
aXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWN0LmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC02ODE3LDgg
KzY3NzUsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRp
b25zXE5vdGlmaWNhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9iYWxTY29wZU5v
dGlmaWNhdGlvbnMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xz
dHJlYW1zXFJlYWRhYmxlU3RyZWFtLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXENoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIiAvPgpAQCAtMTg1NDgsNjIgKzE4NTA0LDYg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3Rv
bS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcUmVhZGFibGVKU1N0cmVhbS5jcHAiPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMjAwNzMsOSArMTk5NzMsNiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmFkaW9Ob2RlTGlz
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUmFuZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU1JhbmdlRXhjZXB0aW9uLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbS5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVjdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU1JHQkNvbG9yLmgiIC8+CkBAIC0yMDU5Nyw5ICsyMDQ5NCw2IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFs
U2NvcGVOb3RpZmljYXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXHBsdWdpbnNcUGx1Z2luUmVwbGFjZW1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xDb3VudFF1ZXVpbmdTdHJhdGVneS5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0
cmVhbXNcUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9u
RGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFz
ZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGZlNGE3OGQ5YjIy
ZWI4ODM3ZjM0MmRjOGI5NGIwYjZkM2VjZWViYWUuLmVmMjI5NjRjNWM1MGU1ODEzN2RiZGQwMjAy
YTUwOGZmN2I2MzE4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTM0LDkgKzM0LDYgQEAKICAgICA8Rmls
dGVyIEluY2x1ZGU9Ik1vZHVsZXNcbm90aWZpY2F0aW9ucyI+CiAgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57YTU5NWZmY2YtZmEyMi00OGE5LTkxYWQtYzUyOGE3NWE2MmU1fTwvVW5pcXVlSWRlbnRp
Zmllcj4KICAgICA8L0ZpbHRlcj4KLSAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcc3RyZWFt
cyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZDY3YmE1YmQtNjU3NC00MmYzLTlkYTMtNTVm
NTUwNzQ3ODYzfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVy
IEluY2x1ZGU9Ik1vZHVsZXNcd2ViZGF0YWJhc2UiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezVlMGU5NTgyLWI0YjQtNDUyZC1hNmRlLTdjNmIzMWY2MTRlN308L1VuaXF1ZUlkZW50aWZpZXI+
CiAgICAgPC9GaWx0ZXI+CkBAIC00NjgsMTIgKzQ2NSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRp
b25zLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcbm90aWZpY2F0aW9uczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJl
YW1zXFJlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcc3RyZWFtczwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1v
ZHVsZXNcc3RyZWFtczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAi
PgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC00NDE5LDE4ICs0NDEwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiPgogICAgICAgPEZpbHRl
cj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAiPgotICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFJlYWRhYmxlSlNTdHJlYW0uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTU3MDQsMTUgKzU2ODMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTUmFuZ2VFeGNlcHRpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZl
ZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAg
ICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVy
PkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWN0LmNwcCI+CiAgICAgICA8
RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzY0
OCwxNSArMTM2MTgsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJj
ZXNcSlNXb3JrZXJOYXZpZ2F0b3IuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbS5oIj4KLSAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTWE1MSHR0cFJlcXVlc3QuaCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNTIyOSwxNSArMTUx
OTAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXENvdW50
UXVldWluZ1N0cmF0ZWd5LmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
c3RyZWFtc1xSZWFkYWJsZVN0cmVhbS5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1z
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiPgotICAgICAgPEZpbHRl
cj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbVJlYWRlci5oIj4K
LSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1zPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBdHRhY2htZW50RWxlbWVudC5o
Ij4KICAgICAgIDxGaWx0ZXI+aHRtbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3
NjhkNTY1YjYwMGM3NjAzNjk2NjJhYjJhZDRmOWI2ZDBlYzc2MDkuLjE0Yjk3M2UwMmMwYzZlOTFi
NTM3MzcwZGQwOWI5M2Y3OTQ0MDc3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzcsNyArMTQ3Nyw2IEBACiAJCTQwRUNB
RTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNE
T01FcnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVD
QUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CiAJCTQxMEI3RTcy
MTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwotCQk0MTE4OUVGOTFBRDgyNzM3
MDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExODlFRjgxQUQ4MjMzQzAw
QjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
NDEyMzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAw
MUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBC
Q0NGQ0EgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1
IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87
IH07CkBAIC0xNTA5LDE2ICsxNTA4LDggQEAKIAkJNDE4QTA2RDExMzNDMDRENTAwQ0QzNzlDIC8q
IEV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNw
cCAqLzsgfTsKIAkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4
MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThG
ODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1
IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKLQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1
IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJl
YW0uY3BwICovOyB9OwotCQk0MTk4QkRGMTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0
cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLzsgfTsKIAkJNDE5
QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0
RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBE
NjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5r
U3RhdGUuaCAqLzsgfTsKLQkJNDE5RkFGQUUxQUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUZBRkFCMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAg
Ki87IH07Ci0JCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFG
QUMxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IH07Ci0JCTQx
OUZBRkIxMUFCQUJERUQwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkIw
MUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLzsg
fTsKLQkJNDFBMDIzRUYxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0VCMUEzOURC
NzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTQxQTAyM0YwMUEzOURC
N0EwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDIzRUMxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxl
U3RyZWFtLmggKi87IH07Ci0JCTQxQTAyM0Y2MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxl
U3RyZWFtQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQTAyM0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAq
LzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVh
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1
OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0
MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1
RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNDgsOCArMjMzOSw2IEBACiAJCTY1RkQ0NjY2MTlC
NTk2RjYwMDFFMkI0RCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODZGRTNEMTlC
NTQ4QkQwMDVDM0M4MiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSAq
LzsgfTsKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwICovOyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0
aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZDNEM5NkRFMUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQTFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQk2QzRDOTZERjFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQk2QzYzODg5NUE5
NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VF
NTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1
MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4
Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CiAJCTZD
RERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlB
NDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjU2NiwxMCArMjU1NSw2IEBACiAJCTdDNDhBNkQwMTkx
QzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdl
YktpdE5hbWVzcGFjZS5jcHAgKi87IH07CiAJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBX
ZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNDhBNkNGMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLzsg
fTsKIAkJN0M0OTAyQTIxOEI4MjVGODAwN0Q5Mjk4IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODU5ODlEQ0EwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5o
ICovOyB9OwotCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTdDNEM5
NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbS5oICovOyB9OwotCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAgKi87IH07Ci0JCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVh
bVJlYWRlci5oICovOyB9OwogCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vy
dmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNEVERDc0MUE3QjYw
NzgwMDE5OEM0RCAvKiBGb250Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1t
ICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0
OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CkBAIC04Njg0
LDkgKzg2NjksNiBAQAogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTE4OUVGNjFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTE4OUVGNzFBRDgy
MzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MTE4OUVGODFBRDgyMzNDMDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyog
RXZlbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzNDEyNDQwNTQ4MDAz
MjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
NzIwLDE4ICs4NzAyLDggQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlz
cGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERp
c3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMjBGRjk1
N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyog
UmVhZGFibGVKU1N0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWFkYWJsZUpTU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5
OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVKU1N0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREQxNjg1MzI5OTAw
RDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlzaXRlZExpbmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTlGQUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIg
LyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUEwMjNFQzFBMzlEQjc5MDBGNzIyQ0Yg
LyogUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
ZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRUQxQTM5
REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTAy
M0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcg
LyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVkaWNhdGVkV29ya2VyVGhy
ZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVF
OERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05NjY1LDggKzk2MzcsNiBAQAogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tF
eGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5
NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRCMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uT3ZlcnNldFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTE2LDEwICs5ODg2LDYgQEAKIAkJN0M0
OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFt
ZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5hbWVzcGFj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZEMjE5MUM5RDhFMDAwMjY2
NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNS
ZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2
RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2REIx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vy
dmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2Vydmlj
ZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0RURENzMxQTdCNjA3ODAw
MTk4QzREIC8qIEZvbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZvbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJE
NDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTMyOSw3ICsxNTI5NSw2IEBACiAJCQkJQkM5ODU0NDYwQ0Qz
REE1RjAwMDY5QkMxIC8qIFJhbmdlcyAqLywKIAkJCQlBQTdGRUU5QjE2QTQ5MUExMDA0QzBDMzMg
LyogU3BlZWNoICovLAogCQkJCUE4M0I3OTE1MENDQjAwNzgwMDBCMDgyNSAvKiBTdG9yYWdlICov
LAotCQkJCTQxQTAyM0ZBMUEzOUYxM0EwMEY3MjJDRiAvKiBTdHJlYW1zICovLAogCQkJCUE4M0I3
OTBBMENDQUZGNDcwMDBCMDgyNSAvKiBTVkcgKi8sCiAJCQkJNDE3REE3MTIxMzczNUQ5MDAwN0M1
N0ZCIC8qIFRlc3RpbmcgKi8sCiAJCQkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdEIC8qIFRocmVh
ZHMgKi8sCkBAIC0xNjEyMiwxNCArMTYwODcsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMTQ4
QjRGRkQxQjY5MDRBQTAwQzk1NEU0IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5LmggKi8sCiAJCQkJ
MTQ4QjRGRkYxQjY5MDRDNTAwQzk1NEU0IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5LmlkbCAqLywK
LQkJCQk0MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwICovLAot
CQkJCTQxQTAyM0VDMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAotCQkJ
CTQxQTAyM0VEMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8sCi0JCQkJ
NDExODlFRjYxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICov
LAotCQkJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaWRsICovLAotCQkJCTQxOUZBRkFCMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAgKi8sCi0JCQkJNDE5RkFGQUMxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxl
U3RyZWFtUmVhZGVyLmggKi8sCi0JCQkJNDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRh
YmxlU3RyZWFtUmVhZGVyLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3RyZWFtczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjEzNywxMiArMTYwOTQsNiBAQAogCQk0MUEwMjNG
QTFBMzlGMTNBMDBGNzIyQ0YgLyogU3RyZWFtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW0uY3BwICovLAotCQkJCTdDNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRh
YmxlU3RyZWFtLmggKi8sCi0JCQkJNkM0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKLQkJCQk2QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLywKLQkJCQk3QzRDOTZEQTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8sCi0JCQkJN0M0Qzk2REIx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gU3RyZWFtczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xODYwNSw3
ICsxODU1Niw2IEBACiAJCQkJMDcyQUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8s
CiAJCQkJODlGNjBCMDgxNTdGNjgzNTAwNzVFMTU3IC8qIHF1b3RhICovLAogCQkJCUFBMkE1QUI3
MTZBNDg1QTQwMDk3NUEyNSAvKiBzcGVlY2ggKi8sCi0JCQkJNDFBMDIzRUExQTM5REI3OTAwRjcy
MkNGIC8qIHN0cmVhbXMgKi8sCiAJCQkJRkQzMTVGQTIxMkIwMjVCMTAwQzFBMzU5IC8qIHdlYmF1
ZGlvICovLAogCQkJCTk3QkM2OUQ1MTUwNUYwNTQwMDFCNzRBQyAvKiB3ZWJkYXRhYmFzZSAqLywK
IAkJCQk5N0FBQkNGNzE0RkEwOUI1MDA3NDU3QUUgLyogd2Vic29ja2V0cyAqLywKQEAgLTIxMzg5
LDExICsyMTMzOSw4IEBACiAJCQkJQzZGNDIwQTExNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRp
b25DYWxsYmFjay5oICovLAogCQkJCTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAv
KiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKLQkJCQk0MTE4OUVGODFBRDgyMzNDMDBC
OTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwICovLAogCQkJCUUx
QzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgKi8s
CiAJCQkJRTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmggKi8sCi0JCQkJNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0u
Y3BwICovLAotCQkJCTQxOThCREVGMUE4MTEyMzYwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFt
LmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5j
cHAgKi8sCiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5o
ICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwICovLApAQCAtMjE1NjQsOCArMjE1MTEsNiBAQAogCQkJCUZEQkQxREZCMTY3RkUyN0Qw
MDUxQTExRSAvKiBKU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhBQTYzRDE2
OTUxNEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlBODVGMjIw
ODE0MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKLQkJCQk0
MUEwMjNGMzFBMzlEQkNCMDBGNzIyQ0YgLyogSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAgKi8s
Ci0JCQkJNDE5RkFGQjAxQUJBQkQ3QjAwNUI4MjhCIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwICovLAogCQkJCTQ5OThBRUQzMTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQk0QUUwQkY4ODE4MzYwODMx
MDBGMzg1MkQgLyogSlNSVENJY2VDYW5kaWRhdGVDdXN0b20uY3BwICovLAogCQkJCTA3Q0ExMjBE
MTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAg
LTI1NjcyLDkgKzI1NjE3LDYgQEAKIAkJCQlCNjU4RkZBMjE1MjJFRjNBMDBERDU1OTUgLyogSlNS
YWRpb05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIwMjA5RDFDQzYwMDAwQkUz
MjUgLyogSlNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDIzQ0E1NUQwQUIwRUFBRTAwNTEw
OEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDNEM5NkREMUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJCQk2
QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZFMkYxMjBDMUI1ODM4MDAyMDIz
NUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTk4QUVDRTEzRjlENkM5MDA5MEIx
QUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM3NERBNDkxMDEzRjQ2ODAwNzk4N0FEIC8qIEpTUkdCQ29sb3IuaCBpbiBIZWFkZXJzICov
LApAQCAtMjYzNzMsOSArMjYzMTUsNiBAQAogCQkJCUY1NUIzRENFMTI1MUYxMkQwMDNFRjI2OSAv
KiBSYW5nZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU4NEU5RTExNzY2OEJGMTAw
ODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODREODI3QzExRDMz
M0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTk4QkRGMTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDFBMDIzRjAxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MTlGQUZBRjFBQkFCRDBDMDA1QjgyOEIgLyogUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1
OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5
N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjkyNjcsMTIgKzI5MjA2LDYgQEAKIAkJCQlCNjU4RkZB
MTE1MjJFRjNBMDBERDU1OTUgLyogSlNSYWRpb05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1REYzMjAxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1JhbmdlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUQyM0NBNTVGMEFCMEVBQjYwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZDNEM5NkRFMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTE4
OUVGOTFBRDgyNzM3MDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDIzRjYxQTM5REJDQjAwRjcyMkNGIC8qIEpTUmVh
ZGFibGVTdHJlYW1DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M0Qzk2REUxQUQ0NDgz
NTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDE5RkFGQjExQUJBQkRFRDAwNUI4MjhCIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGRTJGMTEwQzFCNTgzNzAwMjAyMzVGIC8qIEpT
UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk4QUVDRDEzRjlENkM5MDA5MEIxQUEgLyog
SlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTk4QUVENDEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
a0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTEwLDkgKzI5ODQzLDYgQEAKIAkJCQk5
NzhEMDdCQTE0NUEwRjNDMDA5NjkwOEQgLyogUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjU1QjNEQ0QxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFw
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTk4QkRGMDFBODExNDIyMDBCMjJGQjUgLyogUmVh
ZGFibGVKU1N0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUEwMjNFRjFBMzlEQjdBMDBG
NzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5RkFGQUUx
QUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDNCMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTRBNEY2NTcwMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1l
ZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1RkNDOUZDMUI0REY3RjIwMEU3MjMy
NiAvKiBET01VUkxNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDhkMmU1OWM1
NWRiYTM3ZTNmMGEzYjlkZmFkMjRhYjgwYzFmNmYxZWEuLmE4NTZhODQ1N2UwYjkxYTRmMDU1MGQ2
YzlmZTkxMjQ5MmY5OWRmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTIxLDEyICsxMjEsNiBAQAogI2luY2x1ZGUgIkpT
Tm9kZU9yU3RyaW5nLmNwcCIKICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
IgogI2luY2x1ZGUgIkpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAiCi0jaWYgRU5BQkxFKFNUUkVB
TVNfQVBJKQotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCIK
LSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmNw
cCIKLSNlbmRpZgogI2luY2x1ZGUgIkpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBhMjkwZGRjOWU1ODFhY2Q2MzQzMDE3
MDBiYWY4MjdjYTFhNGVmZDAyLi4yMTk1MmFlZDZhNmVmZTg1MDNjNGJmYzc5M2Q2ZjIyOGQ4ODM1
YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvTWljcm90
YXNrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNzEsNiArNzIsMTAgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01XaW5kb3dT
aGVsbCogc2hlbGwpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHNoZWxsKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlYWRhYmxl
U3RyZWFtLCByZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKCksIERvbnRFbnVtKTsKKyNlbmRpZgor
CiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCBqc051bGwoKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPndpbmRvdywgbV9zaGVsbCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE3
ZTMzYzdjZmJmYmQ4ZjcwMjIzNzU1OGQ3MzBmODAzMmI4MGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIgotCi0jaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVKU1N0
cmVhbS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90
IGJlIGNhbGxlZCBkaXJlY3RseSIpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1DdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDhkMTZiMmZl
YmU3OTg3ZDJkZDY2ZjVjYzg2NjVmNWE3YzBlZTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFi
bGVTdHJlYW1DdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FO
T04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0g
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSAiUmVh
ZGFibGVKU1N0cmVhbS5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAi
UmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1Zh
bHVlIEpTUmVhZGFibGVTdHJlYW06OnBpcGVUbyhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNW
YWx1ZSBlcnJvciA9IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicGlwZVRvIGlzIG5v
dCBpbXBsZW1lbnRlZCIpKTsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBlcnJvcik7Ci19Ci0KLUpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6cGlwZVRocm91Z2go
RXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTVmFsdWUgZXJyb3IgPSBjcmVhdGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoInBpcGVUaHJvdWdoIGlzIG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICBy
ZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZUpTU3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZGNm
NjlmZTJkMjJjODBmYTEwNDNhOTZmZDNmMzAzYjgxYzFjNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDJPMTUgQ2Fub24gSW5jLiAyMDE1Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
SWdhbGlhIFMuTC4gMjAxNQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlYWRhYmxlSlNTdHJlYW1faAotI2RlZmlu
ZSBSZWFkYWJsZUpTU3RyZWFtX2gKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRl
IDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4K
LSNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEpTRnVuY3Rp
b247Ci1jbGFzcyBKU1Byb21pc2U7Ci19Ci0gICAgCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEpTRE9NR2xvYmFsT2JqZWN0OwotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOwot
Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1zdHJ1Y3QgUmVhZGFibGVKU1N0cmVhbVZh
bHVlIHsKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IHZhbHVlOwotICAgIGRvdWJsZSBz
aXplOwotfTsKLQotdGVtcGxhdGU8PiBjbGFzcyBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFk
YWJsZUpTU3RyZWFtVmFsdWU+IDogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKLXB1YmxpYzoKLSAg
ICBkb3VibGUgZGVzaXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hXYXRlck1hcmsgLSBt
X3RvdGFsUXVldWVTaXplOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBSZWFkYWJsZUVucXVldWluZ1N0
cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBkb3VibGUgaGlnaFdhdGVyTWFy
aykKLSAgICAgICAgOiBSZWFkYWJsZVN0cmVhbShjb250ZXh0KQotICAgICAgICAsIG1faGlnaFdh
dGVyTWFyayhoaWdoV2F0ZXJNYXJrKSB7IH0KLQotICAgIHZvaWQgZW5xdWV1ZUNodW5rKFJlYWRh
YmxlSlNTdHJlYW1WYWx1ZSYmKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJW
YWx1ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUuY2xlYXIoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBo
YXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkZXNpcmVkU2l6ZSgpIDw9
IDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3F1ZXVlLnNpemUoKTsgfQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVy
cmlkZTsKLQotICAgIERlcXVlPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT4gbV9xdWV1ZTsKLSAgICBk
b3VibGUgbV90b3RhbFF1ZXVlU2l6ZSB7IDAgfTsKLSAgICBkb3VibGUgbV9oaWdoV2F0ZXJNYXJr
OwotfTsKLQotY2xhc3MgUmVhZGFibGVKU1N0cmVhbSBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZUVu
cXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSwgY29uc3QgRGljdGlvbmFyeSYpOwotCi0gICAgSlNDOjpKU1ZhbHVlIGpzQ29udHJv
bGxlcihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAgdm9pZCBjbG9z
ZShFeGNlcHRpb25Db2RlJik7Ci0KLSAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwotICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fZXJyb3IuZ2V0KCk7IH0KLQotICAgIHZvaWQgZW5xdWV1ZShKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7Ci0gICAgdm9pZCBlcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIFJlYWRhYmxlSlNTdHJlYW0o
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0KiwgZG91YmxlLCBKU0M6OkpTRnVuY3Rpb24q
KTsKLQotICAgIHZvaWQgZG9TdGFydChKU0M6OkV4ZWNTdGF0ZSYpOwotCi0gICAgSlNDOjpKU1By
b21pc2UqIGludm9rZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqLCBKU0M6OkpTVmFsdWUg
cGFyYW1ldGVyKTsKLSAgICB2b2lkIHN0b3JlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlJik7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgZG9QdWxsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGRv
Q2FuY2VsKEpTQzo6SlNWYWx1ZSkgb3ZlcnJpZGU7Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCk7Ci0KLSAgICBkb3VibGUgcmV0cmlldmVDaHVua1NpemUoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY29u
c2lkZXIgbm90IHVzaW5nIEpTQzo6U3Ryb25nLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NjI3OAotICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9l
cnJvcjsKLSAgICBKU0M6OlN0cm9uZzxKU0M6OkpTRnVuY3Rpb24+IG1fZXJyb3JGdW5jdGlvbjsK
LQotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1fc291cmNlOwotICAgIEpTQzo6U3Ry
b25nPEpTQzo6SlNGdW5jdGlvbj4gbV9zaXplRnVuY3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNlbmRpZiAvLyBS
ZWFkYWJsZUpTU3RyZWFtX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNzVjNDhlZTU2YTQ2MzMyZjIwZDI2OTFlYWIwZjA1
MTE4MDljYzFjLi4wMjU2MDg3ZWQ4MDNkZTVhNGE3MTM1MGNjOGIxZWQ1NGM3YWViMWJhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBNaWdyYXRlIHN0cmVhbXMgQVBJIHRvIEpTQwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlZCBl
eHBlY3RhdGlvbnMgYXMgc29tZSB0ZXN0cyBhcmUgbm93IHBhc3NpbmcuCisKKyAgICAgICAgKiBz
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisKIDIwMTUtMDgtMTggIFhhYmllciBS
b2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU3RyZWFt
cyBBUEldIFVwZGF0ZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBsYXRlc3Qgc3BlYwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQt
Y2hlY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKaW5kZXggMzczNTc3ZWI5ODIxZDIw
NzU0ZGU4NzcxYTYwZmFlNTIzOGM5YjVmNi4uOGRmYjMzZDRjMmE5Mzk4ZTUxNmNhYmQ5ZDUzYzY2
MDM4NWM2NjM2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0
CkBAIC0xLDkgKzEsOSBAQAogCiBQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCiBQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotRkFJTCBSZWFkYWJsZVN0cmVhbS5w
cm90b3R5cGUucGlwZVRocm91Z2ggd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0
cyBhcmd1bWVudHMgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbS5waXBlVGhyb3VnaCBvbiBp
bnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1l
bnRzIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9u
IGl0cyBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3Nl
ZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFtZSku
Z2V0JykKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2Fu
Y2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnBy
b3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFt
UmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCBlNjFmN2Q2ZjU4NTk0
MTM5YWZhYzc4NmZhM2I1ZjM1NGZkNWUwOGIzLi44ZGRiMWNlZDUzNWZkZGVhOWJiNjEzZGJkNGY4
OTk5ZDMxYjBkNWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBl
Y3RlZC50eHQKQEAgLTEsMTEgKzEsMTEgQEAKIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUg
Y29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJl
IGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKLUZBSUwgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2Vz
IHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiBzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcyBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgNyBnb3QgNgorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAogUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVu
dHMgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJi
YWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Ig
Y2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycyBh
c3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxz
ZSBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdp
dGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250
cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKIFBBU1MgUmVhZGFibGVTdHJl
YW0gc2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBj
aGFpbiBvZiBpdHMgc291cmNlIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUg
YWJsZSB0byByZXR1cm4gYSBwcm9taXNlIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCAyNjQwY2QyMGEyYmUzMGEwNjQ1
YTAwN2MxNjg0YjVmYjg2MGM1ODc2Li5kNWE0YzVkMGYyMzNhNWRiODA2MDQzNDgyY2VlNGYyZmRh
MjY3YmM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVh
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAogUEFTUyBSZWFkYWJsZVN0
cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0
IGFzIGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9hcnJheV9lcXVhbHM6
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCA0CitQQVNTIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMg
CiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0
aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxv
Y2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAogUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFs
cmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
dGVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0CmluZGV4IGU3NWYyNmYxMTBj
YjJkN2ZiODE0YWVjNGMzNTMwMjM2OTJmYjc1YjIuLmEwMzI0Mzg3ZDdhZWNjNjc0Yzc4N2YwZTNj
OWRmNmVkODcwNTBiMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZWUtZXhwZWN0ZWQudHh0CkBAIC0xLDEyICsxLDEyIEBACiAKLUZBSUwgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVh
bXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMg
dW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRv
IHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciBy
cy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRl
ZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVh
bCBhY3Jvc3MgZWFjaCBicmFuY2ggcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRl
ZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcyBy
cy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRl
ZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hv
dWxkIG5vdCBpbXBhY3QgYnJhbmNoMiBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMu
dGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMSBycy50ZWUgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1G
QUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxk
IGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSBycy50ZWUgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlM
IFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0
cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzIHJzLnRlZSBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkK
LUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQg
aW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9y
IHRoZSBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAn
cnMudGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVl
KCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIGFzc2VydF90cnVlOiBy
ZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJh
bmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmdldFJlYWRlcicpCitGQUlMIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFu
Y2ggdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0UmVh
ZGVyJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBz
aG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0UmVhZGVyJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmNhbmNlbCcpCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBh
Y3QgYnJhbmNoMSB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYnJhbmNo
Mi5jYW5jZWwnKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJy
YW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkg
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuY2FuY2VsJykK
K0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2lu
YWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuY2FuY2VsJykKK0ZB
SUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1t
ZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdicmFuY2gxLmdldFJlYWRlcicpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJh
bmNoZXMgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2JyYW5jaDEuZ2V0
UmVhZGVyJykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
dGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCA3MzAzYmMzZWJhNzhmNzAzNWZkNmY2N2VmOTVm
NjFkMjBkYmVkYWE2Li41MDFmN2Y1MjMyZDcyNDdmZWEyMTU2N2VlNGM4MWExMjM0MWMzNmFjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVk
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJT
RW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAotRkFJTCBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGhhcyBhIHRl
ZSBtZXRob2QgZXhwZWN0ZWQgImZ1bmN0aW9uIiBidXQgZ290ICJ1bmRlZmluZWQiCitQQVNTIGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyIAogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9w
ZXJ0aWVzIAogUEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259611</attachid>
            <date>2015-08-21 06:19:29 -0700</date>
            <delta_ts>2015-10-01 08:52:20 -0700</delta_ts>
            <desc>Trying to fix mac build</desc>
            <filename>bug-147092-20150820215941.patch</filename>
            <type>text/plain</type>
            <size>194984</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Mzk4MTA2MmFjNDZhY2JlZGZmNTExNWY2MDM0YWE4OWM1MTA0N2YxLi5jNjQ4YzhlOGRhMGJkNTIw
NTBlMWMwNGUzNmI0MjY3NWJkNDViNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTUtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KKworICAgICAgICBNaWdyYXRlIHN0cmVhbXMgQVBJIHRvIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBXZWJDb3Jl
IGltcGxlbWVudGF0aW9uIG9mIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBJbXBsZW1lbnRlZCBp
bnRvIEpTQyBhcyB0aHJlZSBjbGFzc2VzIChKU1JlYWRhYmxlU3RyZWFtLCBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGFuZCBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcikuCisgICAgICAgIE1vc3Qg
b2YgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW4gSlNDIGJ1aWx0aW5zLgorICAg
ICAgICBObyBjb25zdHJ1Y3RvciBpcyBzdXJmYWNpbmcgYXQgdGhlIEpTIGxldmVsLCBvbmx5IERP
TSBlbnZpcm9ubWVudHMgZ2V0IGFjY2VzcyB0byBSZWFkYWJsZVN0cmVhbSBvYmplY3RzIGFzIG9m
IG5vdy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanM6IEFkZGVkLgorICAg
ICAgICAoaXNSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChpc1JlYWRhYmxlU3RyZWFtUmVhZGVy
KToKKyAgICAgICAgKGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKC5zdHJh
dGVneS5zaXplKToKKyAgICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAg
IChpbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZVJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChlcnJvclJlYWRhYmxlU3RyZWFtKToK
KyAgICAgICAgKHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwpOgorICAgICAgICAoZ2V0UmVhZGFi
bGVTdHJlYW1EZXNpcmVkU2l6ZSk6CisgICAgICAgIChyZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFk
ZXIpOgorICAgICAgICAoY2FuY2VsUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoZmluaXNoQ2xv
c2luZ1JlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFibGVTdHJlYW0pOgorICAg
ICAgICAoY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChlbnF1ZXVlSW5SZWFk
YWJsZVN0cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAg
ICAgICAgKGludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JOb29wKToKKyAg
ICAgICAgKiBidWlsdGlucy9SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuanM6IEFkZGVkLgorICAg
ICAgICAoY2FuY2VsKToKKyAgICAgICAgKGdldFJlYWRlcik6CisgICAgICAgIChwaXBlVGhyb3Vn
aCk6CisgICAgICAgIChwaXBlVG8pOgorICAgICAgICAodGVlKToKKyAgICAgICAgKGxvY2tlZCk6
CisgICAgICAgICogYnVpbHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChlbnF1ZXVlKToKKyAgICAgICAgKGVycm9yKToKKyAgICAgICAg
KGNsb3NlKToKKyAgICAgICAgKGRlc2lyZWRTaXplKToKKyAgICAgICAgKiBidWlsdGlucy9SZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoY2FuY2VsKToK
KyAgICAgICAgKHJlYWQpOgorICAgICAgICAocmVsZWFzZUxvY2spOgorICAgICAgICAoY2xvc2Vk
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpp
bml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpyZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplUmVhZGFibGVT
dHJlYW1SZWFkZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVD
bG9zZWRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJl
YW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1SZWFkZXJTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bTo6SlNSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW06OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6SlNS
ZWFkYWJsZVN0cmVhbVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVh
bVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3Ry
ZWFtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW1Db25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKEpTQzo6SlNS
ZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChK
U0M6OmpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAg
KEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAg
ICAgKEpTQzo6anNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRGVzaXJlZFNp
emUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXIpOgor
ICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OkpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6
OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChKU0M6OkpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAg
IChKU0M6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgor
ICAgICAgICAoSlNDOjpqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3NlZCk6
CisgICAgICAgICogcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6IEFkZGVkLgorCiAy
MDE1LTA4LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIHByb3RvdHlwaW5nIG1vZHVsZSBsb2FkZXIgaW4gSlNDIHNoZWxsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMzBlYzRkNDdiZjhlMTg2M2FmN2ExYTYzMzgxNWJhMGVmNjcxZGJjZC4uZjZmNTU1ODAx
Yzg2MWViMDgwZTg1MzA2OThjZmU0MzcwN2M2ODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDE1LTA4LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgTWlncmF0ZSBzdHJlYW1zIEFQSSB0byBKU0MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzA5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNlZCB0ZXN0
cy4KKworICAgICAgICBSZW1vdmVkIFdlYkNvcmUgUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50YXRp
b24uCisgICAgICAgIEZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW50byBKYXZhU2NyaXB0
Q29yZS4KKyAgICAgICAgQWRkZWQgUmVhYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGFzIGEgcHJv
cGVydHkgb2YgSlNET01XaW5kb3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0
b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
aDogUmVtb3ZlZC4KKwogMjAxNS0wOC0xOCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2
YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gVXBkYXRlIGltcGxlbWVu
dGF0aW9uIHdpdGggdGhlIGxhdGVzdCBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNDhjNzIxNmZiOTY3NGU0ZmU4Y2RlZjY5MWM2MGUzNWVhNGE5MjY4Zi4uZDEzMThk
N2YyMWQ5NzczNWIzZjYwODZkMGRkYjc2ZmNjNzA4YjlhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNTQzLDYgKzU0Myw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5U
SU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKICAg
ICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCiAgICAgcnVudGltZS9KU1Byb3h5
LmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbS5jcHAKKyAgICBydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXQuY3BwCkBAIC02NjIsNiArNjY1
LDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1JlYWRhYmxlU3Ry
ZWFtLmNwcAorICAgIHJ1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwCisgICAg
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggZTM2NzMwN2NkY2RmZGRlZmNmMzI2YjlmOTlkZjU5MGI5MDQwNGU0Ni4u
YWRiYWY0ZThjODY1NDFmOThkYzdhYjYwYTQ4ODFmOTQ0YTgyMTcyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU0LDYgKzU0LDkgQEAgYWxsIDogXAog
ICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIEpTUHJvbWlzZVBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAorICAgIEpT
UmVhZGFibGVTdHJlYW0ubHV0LmggXAorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIubHV0Lmgg
XAorICAgIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9v
a3VwLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBNb2R1bGVMb2FkZXJPYmplY3QubHV0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNzI5NWZkMDFlZmQ4
MjAwNGYyMjUyYjdlYjY1MDIxMjA2OGU2Nzg5YS4uMzkzYmEzZGFkM2Q4MDFiMzc5NmM5ZWYxMWMx
ZDY2ZTU1MTVjZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBA
IC03OTMsNiArNzkzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTUHJveHkuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU1JlYWRhYmxlU3RyZWFtLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTY29wZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5j
cHAiIC8+CkBAIC05MjYsNiArOTI5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtLmx1dC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJl
YW1SZWFkZXIubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcS2V5d29yZExvb2t1cC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xMZXhlci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTE2NDQsNiArMTY1MCw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJveHkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNSZWFk
YWJsZVN0cmVhbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkMDUzMWZkNmE1NzQ3ZGY3YTlmMTRkNjIzZTZlNGQ4MDRiOTdiNmNmLi44NDQ3NGM2
N2M5ODk1YmNhYjUxOWY0NDdiZmNhNWQ5YzE3MjRiYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtOTUzLDYgKzk1MywxMiBAQAogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFE
ODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBs
aWJ6LmR5bGliICovOyB9OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQy
MTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OworCQk0MUM4
Q0ZGNjFCNzBGNzMwMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGNDFCNzBGNTRFMDBDMzdB
QTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07CisJCTQxQzhDRkY3MUI3MEY3MzYwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZGNTFCNzBGNTRFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0
cmVhbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxQzhDRkZDMUI3MTA3QTQwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4Q0ZG
ODFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9
OworCQk0MUM4Q0ZGRDFCNzEwN0E4MDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhD
RkY5MUI3MTA3OUYwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzhDRkZFMUI3
MTA3QUIwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhDRkZBMUI3MTA3OUYwMEMzN0FB
NyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLzsgfTsKKwkJNDFDOENGRkYxQjcxMDdB
RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzhDRkZCMUI3MTA3OUYwMEMzN0FBNyAvKiBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0
ODIxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovOyB9OwogCQk0MzQwQTQ4NTFB
OTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwpA
QCAtMjczMCw2ICsyNzM2LDEyIEBACiAJCTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUY3Mzgy
QjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGliOyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBz
b3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNDFDOENGRjQxQjcwRjU0RTAwQzM3QUE3IC8qIEpT
UmVhZGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzhD
RkY1MUI3MEY1NEUwMEMzN0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFDOENGRjgxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDOENGRjkxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzhDRkZBMUI3MTA3OUYwMEMz
N0FBNyAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUM4Q0ZGQjFCNzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgyMUE5
MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hdGhDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MzQwQTQ4MzFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0OTA5N0VFMEY4RjgxQjUwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MDgsNiArNDUyMCwxMiBAQAogCQk3
RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFDOENGRjgxQjcxMDc5RjAwQzM3QUE3IC8qIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKKwkJCQk0MUM4Q0ZGOTFCNzEwNzlGMDBD
MzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLywKKwkJCQk0MUM4Q0ZGQTFC
NzEwNzlGMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8sCisJCQkJNDFD
OENGRkIxQjcxMDc5RjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywKKwkJ
CQk0MUM4Q0ZGNDFCNzBGNTRFMDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCisJ
CQkJNDFDOENGRjUxQjcwRjU0RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLywKIAkJ
CQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1
MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKIAkJCQkwRkUwNTAwQzFBQTkwOTEx
MDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oICovLApAQCAtNjA2Niw2ICs2MDg0LDcgQEAKIAkJ
CQkwRkY0Mjc2NTE1OTFBMUNFMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQ4MUFEMzE1NEZCNEYwMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29u
ZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUM4Q0ZGNzFCNzBGNzM2MDBDMzdBQTcgLyog
SlNSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAw
MEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQz
QzgyODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjY2RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02
MTIzLDYgKzYxNDIsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJGMkFBMzgxQjBC
RURFMzAwNjEwQzdBIC8qIERGR0xhenlOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2
QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFD
OENGRkQxQjcxMDdBODAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0Njkz
QUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY3
NzYsNiArNjc5Niw3IEBACiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldp
dGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0
IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzRjE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFDOENGRkYxQjcxMDdB
RTAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBV
bmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzU2LDYgKzczNzcsNyBAQAog
CQkJCUE1RkQwMDc5MTg5QjA1MTAwMDYzMzIzMSAvKiBDb25zb2xlTWVzc2FnZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyQTgzNjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgyRTEwN0VDMDU3MDAxM0U3QjIg
LyogQ29uc3RydWN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUM4Q0ZGQzFCNzEwN0E0
MDBDMzdBQTcgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTU3RDIzRjExODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGll
ZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBQUNFNjNDMThDQTVBMDMwMEVEMDE5MSAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NzgzLDYgKzc4MDUs
NyBAQAogCQkJCTE0NDY5REUwMTA3RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REUxMTA3RUM3RTcwMDY1MDQ0NiAvKiBO
YXRpdmVFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCNzEwN0VD
NTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDOENGRkUxQjcx
MDdBQjAwQzM3QUE3IC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NTI1RkM1MUE2REQ4MDEwMDdCNTQ5NSAvKiBO
dWxsU2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03ODY2LDYgKzc4ODksNyBA
QAogCQkJCUE1NENGMkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzI5OURBNTE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMTIwMkYxQThBRUQxMjAwMEY1MjgwIC8qIEZUTEpT
Q2FsbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDOENGRjYxQjcwRjczMDAwQzM3QUE3
IC8qIEpTUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5NTJBQkMxQjQ4
N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3OTBERDZEMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzI5OURBMTE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1JlYWRhYmxlU3RyZWFtLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1JlYWRhYmxlU3RyZWFtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZTVmODI5Zjg3N2EwZjI5ZWMyZmMwM2Rm
MzQ5ZDVjNzhlOTY3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvUmVhZGFibGVTdHJlYW0uanMKQEAgLTAsMCArMSwzNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KHN0cmVhbSkgJiYgISFzdHJlYW0u
QHVuZGVybHlpbmdTb3VyY2U7Cit9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1SZWFkZXIo
cmVhZGVyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3QocmVh
ZGVyKSAmJiB0eXBlb2YgcmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtICE9PSAidW5kZWZpbmVk
IjsKK30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoY29udHJvbGxlcikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KGNvbnRyb2xsZXIp
ICYmICEhY29udHJvbGxlci5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworfQorCitmdW5jdGlv
biBpbml0aWFsaXplUmVhZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZSwgc3RyYXRlZ3kpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NvdXJjZSA9
PT0gInVuZGVmaW5lZCIpCisgICAgICAgICB1bmRlcmx5aW5nU291cmNlID0geyB9OworICAgICBp
ZiAodHlwZW9mIHN0cmF0ZWd5ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgIHN0cmF0ZWd5ID0g
eyBoaWdoV2F0ZXJNYXJrOiAxLCBzaXplOiBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH0gfTsKKwor
ICAgIGlmICghQGlzT2JqZWN0KHVuZGVybHlpbmdTb3VyY2UpKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFz
IGZpcnN0IGFyZ3VtZW50Iik7CisKKyAgICBpZiAoc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCAmJiAh
QGlzT2JqZWN0KHN0cmF0ZWd5KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBzZWNvbmQgYXJndW1lbnQs
IGlmIGFueSIpOworCisgICAgdGhpcy5AdW5kZXJseWluZ1NvdXJjZSA9IHVuZGVybHlpbmdTb3Vy
Y2U7CisKKyAgICB0aGlzLkBxdWV1ZSA9IFtdOworICAgIHRoaXMuQHF1ZXVlU2l6ZSA9IDA7Cisg
ICAgdGhpcy5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZTsgCisgICAgdGhpcy5Ac3Rh
cnRlZCA9IGZhbHNlOworICAgIHRoaXMuQGNsb3NlUmVxdWVzdGVkID0gZmFsc2U7CisgICAgdGhp
cy5AcHVsbEFnYWluID0gZmFsc2U7CisgICAgdGhpcy5AcHVsbGluZyA9IGZhbHNlOyAKKyAgICB0
aGlzLkByZWFkZXIgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRlZmlu
ZWQ7CisgICAgdGhpcy5AY29udHJvbGxlciA9IG5ldyBAUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
KHRoaXMpOworICAgIHRoaXMuQHN0cmF0ZWd5U2l6ZSA9IHN0cmF0ZWd5LnNpemU7IAorICAgIHRo
aXMuQGhpZ2hXYXRlck1hcmsgPSBOdW1iZXIoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayk7CisKKyAg
ICBpZiAoTnVtYmVyLmlzTmFOKHRoaXMuQGhpZ2hXYXRlck1hcmspKQorICAgICAgICB0aHJvdyBu
ZXcgVHlwZUVycm9yKCJoaWdoV2F0ZXJNYXJrIHBhcmFtZXRlciBpcyBub3QgY29ycmVjdCIpOwor
ICAgIGlmICh0aGlzLkBoaWdoV2F0ZXJNYXJrIDwgMCkKKyAgICAgICAgdGhyb3cgbmV3IFJhbmdl
RXJyb3IoImhpZ2hXYXRlck1hcmsgaXMgbmVnYXRpdmUiKTsKKworICAgIHZhciByZXN1bHQgPSBA
aW52b2tlT3JOb29wKHVuZGVybHlpbmdTb3VyY2UsICJzdGFydCIsIFt0aGlzLkBjb250cm9sbGVy
XSk7CisgICAgdmFyIF90aGlzID0gdGhpczsKKyAgICBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBfdGhpcy5Ac3RhcnRlZCA9IHRydWU7CisgICAgICAg
IEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKF90aGlzKTsKKyAgICB9LCBmdW5jdGlvbihlcnJv
cikgeworICAgICAgICBpZiAoX3RoaXMuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJs
ZSkKKyAgICAgICAgICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKF90aGlzLCBlcnJvcik7CisgICAg
fSk7CisKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24gaW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtUmVhZGVyKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBp
c1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkpCisgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJl
YWRhYmxlU3RyZWFtUmVhZGVyIG5lZWRzIGEgUmVhZGFibGVTdHJlYW0iKTsKKyAgICBpZiAoQGlz
UmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSkKKyAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIik7CisKKyAgICB0aGlzLkBzdGF0ZSA9IHN0cmVh
bS5Ac3RhdGU7CisgICAgdGhpcy5AcmVhZFJlcXVlc3RzID0gW107CisgICAgaWYgKHN0cmVhbS5A
c3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKSB7CisgICAgICAgIHRoaXMuQG93bmVy
UmVhZGFibGVTdHJlYW0gPSBzdHJlYW07CisgICAgICAgIHRoaXMuQHN0b3JlZEVycm9yID0gdW5k
ZWZpbmVkOworICAgICAgICBzdHJlYW0uQHJlYWRlciA9IHRoaXM7CisgICAgICAgIHRoaXMuQGNs
b3NlZFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAg
ICAgICAgICAgIHN0cmVhbS5AcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7
CisgICAgICAgICAgICBzdHJlYW0uQHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlamVjdCA9IHJlamVj
dDsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICBpZiAoc3Ry
ZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKSB7CisgICAgICAgIHRoaXMuQG93
bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOworICAgICAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgp
OworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIHRoaXMuQG93bmVyUmVh
ZGFibGVTdHJlYW0gPSBudWxsOworICAgIHRoaXMuQHN0b3JlZEVycm9yID0gc3RyZWFtLkBzdG9y
ZWRFcnJvcjsKKyAgICB0aGlzLkBjbG9zZWRQcm9taXNlID0gUHJvbWlzZS5yZWplY3Qoc3RyZWFt
LkBzdG9yZWRFcnJvcik7IAorCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGluaXRp
YWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKSkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBuZWVkcyBhIFJlYWRhYmxl
U3RyZWFtIik7CisgICAgaWYgKHR5cGVvZiBzdHJlYW0uQGNvbnRyb2xsZXIgIT09ICJ1bmRlZmlu
ZWQiKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gYWxyZWFk
eSBoYXMgYSBjb250cm9sbGVyIik7CisgICAgdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFt
ID0gc3RyZWFtOworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGVycm9yUmVhZGFi
bGVTdHJlYW0oc3RyZWFtLCBlcnJvcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBU
T0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpOwor
ICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBzdHJlYW0uQHN0b3JlZEVycm9yID0gZXJyb3I7
CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUVycm9yZWQ7CisKKyAgICBpZiAo
IXN0cmVhbS5AcmVhZGVyKQorICAgICAgICByZXR1cm47CisgICAgdmFyIHJlYWRlciA9IHN0cmVh
bS5AcmVhZGVyOworCisgICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7Cisg
ICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwg
bGVuZ3RoOyArK2luZGV4KQorICAgICAgICByZXF1ZXN0c1tpbmRleF0ucmVqZWN0KGVycm9yKTsK
KyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOworCisgICAgQHJlbGVhc2VSZWFkYWJsZVN0
cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRlci5Ac3RvcmVkRXJyb3IgPSBlcnJvcjsKKyAg
ICByZWFkZXIuQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZDsKKworICAgIHJlYWRlci5A
Y2xvc2VkUHJvbWlzZVJlamVjdChlcnJvcik7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RSZWFkYWJs
ZVN0cmVhbVB1bGwoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJl
YW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFzdHJlYW0uQHN0YXJ0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoKCFAaXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZChzdHJlYW0pIHx8ICFzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLmxl
bmd0aCkgJiYgQGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNpemUoc3RyZWFtKSA8PSAwKQorICAg
ICAgICByZXR1cm47CisgCisgICAgaWYgKHN0cmVhbS5AcHVsbGluZykgeworICAgICAgICBzdHJl
YW0uQHB1bGxBZ2FpbiA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJl
YW0uQHB1bGxpbmcgPSB0cnVlOworCisgICAgdmFyIHByb21pc2UgPSBAcHJvbWlzZUludm9rZU9y
Tm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJwdWxsIiwgW3N0cmVhbS5AY29udHJvbGxl
cl0pOworICAgIHByb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgc3RyZWFtLkBwdWxs
aW5nID0gZmFsc2U7CisgICAgICAgIGlmIChzdHJlYW0uQHB1bGxBZ2FpbikgeworICAgICAgICAg
ICAgc3RyZWFtLkBwdWxsQWdhaW4gPSBmYWxzZTsKKyAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFi
bGVTdHJlYW1QdWxsKHN0cmVhbSk7CisgICAgICAgIH0KKyAgICB9LCBmdW5jdGlvbihlcnJvcikg
eworICAgICAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNl
IHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworZnVuY3Rpb24g
Z2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZShzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7
CisKKyAgIHJldHVybiBzdHJlYW0uQGhpZ2hXYXRlck1hcmsgLSBzdHJlYW0uQHF1ZXVlU2l6ZTsK
K30KKworZnVuY3Rpb24gcmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHJlYWRl
ciA9IHVuZGVmaW5lZDsKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOwor
fQorCitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0
cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0g
W107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVy
biBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwi
LCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaENs
b3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
Ly8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgPT09ICBAcmVhZGFibGVTdHJlYW1SZWFkYWJs
ZSk7CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUNsb3NlZDsKKyAgICB2YXIg
cmVhZGVyID0gc3RyZWFtLkByZWFkZXI7CisgICAgaWYgKHJlYWRlcikKKyAgICAgICAgQGNsb3Nl
UmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKTsKK30KKworZnVuY3Rpb24gY2xvc2VSZWFkYWJs
ZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETy4gQVNT
RVJUKCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFt
LkBzdGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgaWYgKHN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuOyAKKyAgICBzdHJl
YW0uQGNsb3NlUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBpZiAoIXN0cmVhbS5AcXVldWUubGVuZ3Ro
KQorICAgICAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7Cit9CisKK2Z1
bmN0aW9uIGNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciByZXF1ZXN0cyA9IHJlYWRlci5AcmVhZFJlcXVlc3RzOworICAgIGZv
ciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcmVxdWVzdHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkKKyAgICAgICAgcmVxdWVzdHNbaW5kZXhdLnJlc29sdmUoe3ZhbHVlOnVuZGVm
aW5lZCwgZG9uZTogdHJ1ZX0pOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzID0gW107CisgICAg
QHJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRlci5Ac3RhdGUg
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQ7CisgICAgcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2
ZSgpOworfQorCitmdW5jdGlvbiBlbnF1ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5r
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRPRE86IEFTU0VSVCghc3RyZWFtLkBj
bG9zZVJlcXVlc3RlZCk7CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgIT09IEBy
ZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgaWYgKEBpc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkgJiYgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0cy5zaGlmdCgp
LnJlc29sdmUoe3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKKyAgICAgICAgQHJlcXVlc3RS
ZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0
cnkgeworICAgICAgICB2YXIgc2l6ZSA9IDE7CisgICAgICAgIGlmIChzdHJlYW0uQHN0cmF0ZWd5
U2l6ZSkgeworICAgICAgICAgICAgc2l6ZSA9IE51bWJlcihzdHJlYW0uQHN0cmF0ZWd5U2l6ZShj
aHVuaykpOworICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihzaXplKSB8fCBzaXplID09PSAr
SW5maW5pdHkgfHwgc2l6ZSA8IDApCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJy
b3IoIkNodW5rIHNpemUgaXMgbm90IHZhbGlkIik7CisgICAgICAgIH0KKyAgICAgICAgc3RyZWFt
LkBxdWV1ZS5wdXNoKHsgdmFsdWU6IGNodW5rLCBzaXplOiBzaXplIH0pOworICAgICAgICBzdHJl
YW0uQHF1ZXVlU2l6ZSArPSBzaXplOworICAgIH0KKyAgICBjYXRjaChlcnJvcikgeworICAgICAg
ICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKKyAgICAgICAgdGhyb3cgZXJy
b3I7CisgICAgfQorICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7Cit9CisK
K2Z1bmN0aW9uIHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmIChyZWFkZXIuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1D
bG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe3ZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWV9KTsKKyAgICBpZiAocmVhZGVyLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFt
RXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYWRlci5Ac3RvcmVkRXJy
b3IpOworICAgIC8vIFRPRE86IEFTU0VSVCghIXJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSk7
CisgICAgLy8gVE9ETzogQVNTRVJUKHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKTsKKyAgICB2YXIgc3RyZWFtID0gcmVhZGVyLkBv
d25lclJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHF1ZXVlLmxlbmd0aCkgeworICAg
ICAgICB2YXIgY2h1bmsgPSBzdHJlYW0uQHF1ZXVlLnNoaWZ0KCk7CisgICAgICAgIHN0cmVhbS5A
cXVldWVTaXplIC09IGNodW5rLnNpemU7CisgICAgICAgIGlmICghc3RyZWFtLkBjbG9zZVJlcXVl
c3RlZCkKKyAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7Cisg
ICAgICAgIGVsc2UgaWYgKCFzdHJlYW0uQHF1ZXVlLmxlbmd0aCkKKyAgICAgICAgICAgIEBmaW5p
c2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSh7dmFsdWU6IGNodW5rLnZhbHVlLCBkb25lOiBmYWxzZX0pOworICAgIH0KKyAgICB2
YXIgcmVhZFJlcXVlc3QgPSB7fTsKKyAgICB2YXIgcmVhZFByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgcmVhZFJlcXVlc3QucmVzb2x2ZSA9
IHJlc29sdmU7CisgICAgICAgIHJlYWRSZXF1ZXN0LnJlamVjdCA9IHJlamVjdDsKKyAgICB9KTsK
KyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cy5wdXNoKHJlYWRSZXF1ZXN0KTsKKyAgICBAcmVxdWVz
dFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworICAgIHJldHVybiByZWFkUHJvbWlzZTsKK30K
KworZnVuY3Rpb24gaW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gbWV0
aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworfQorCitmdW5jdGlvbiBwcm9taXNlSW52b2tlT3JO
b29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7
CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBt
ZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNo
KGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIxMThhZWI1NGMzOGIzNjI1MzA5NmZj
ZjYxZTk4YTMyMTg2ZjdjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw4OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGNhbmNlbChyZWFzb24pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKSk7CisKKyAgICBpZiAoQGlzUmVhZGFibGVT
dHJlYW1Mb2NrZWQodGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5
cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOworCisgICAgcmV0dXJuIEBjYW5j
ZWxSZWFkYWJsZVN0cmVhbSh0aGlzLCByZWFzb24pOworfQorCitmdW5jdGlvbiBnZXRSZWFkZXIo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhp
cykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKTsKKyAKKyAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVh
bSBpcyBsb2NrZWQiKTsKKworICAgIHJldHVybiBuZXcgQFJlYWRhYmxlU3RyZWFtUmVhZGVyKHRo
aXMpOworfQorCitmdW5jdGlvbiBwaXBlVGhyb3VnaChzdHJlYW1zLCBvcHRpb25zKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHRoaXMucGlwZVRvKHN0cmVhbXMud3JpdGFibGUsIG9wdGlv
bnMpOworCisgICAgcmV0dXJuIHN0cmVhbXMucmVhZGFibGU7Cit9CisKK2Z1bmN0aW9uIHBpcGVU
byhkZXN0KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJl
YW0odGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKTsKKworICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJwaXBlVG8gaXMgbm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIHRlZSgpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQg
b24gYSBSZWFkYWJsZVN0cmVhbSIpOworCisgICAgcmV0dXJuIG5ldyBAVHlwZUVycm9yKCJ0ZWUg
aXMgbm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIGxvY2tlZCgpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFk
YWJsZVN0cmVhbSIpOworCisgICAgcmV0dXJuIEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MGMwM2QxZGMzYzQ3ZTkyNDYyZTM1MTQ5YzA4YzJjODQ1NTUyZjk4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K2Z1bmN0aW9uIGVucXVldWUoY2h1bmspCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyIik7CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxl
U3RyZWFtOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVk
KQorICAgICAgICB0aHJvdyBzdHJlYW0uQHN0b3JlZEVycm9yOworCisgICAgaWYgKHN0cmVhbS5A
Y2xvc2VSZXF1ZXN0ZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0
cmVhbSBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UiKTsKKworICAgIHJldHVybiBAZW5xdWV1ZUluUmVh
ZGFibGVTdHJlYW0oc3RyZWFtLCBjaHVuaykKK30KKworZnVuY3Rpb24gZXJyb3IoZXJyb3IpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIik7CisKKyAgICB2YXIgc3Ry
ZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHN0
YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlJlYWFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CisKKyAgICBAZXJyb3JSZWFk
YWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKK30KKworZnVuY3Rpb24gY2xvc2UoKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRo
aXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisgICAgdmFyIHN0cmVhbSA9
IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBjbG9zZVJl
cXVlc3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlz
IGFscmVhZHkgcmVxdWVzdGVkIHRvIGNsb3NlIik7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9
PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IlJlYWRhYmxlU3RyZWFtIGlzIGFscmVhZHkgZXJyb3JlZCIpOworCisgICAgQGNsb3NlUmVhZGFi
bGVTdHJlYW0oc3RyZWFtKTsKK30KKworZnVuY3Rpb24gZGVzaXJlZFNpemUoKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMp
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxl
ZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisgICAgcmV0dXJuIEBnZXRSZWFk
YWJsZVN0cmVhbURlc2lyZWRTaXplKHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk0MGMzMTYzMGEx
YmIzMjY3NDFjYTI1YWJhYjlhZmMwMGJhMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5qcwpA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gY2FuY2Vs
KHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBl
RXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciIpKTsKKworICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICBpZiAodGhpcy5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dCh0aGlzLkBzdG9yZWRFcnJvcik7CisKKyAgICAvLyBUT0RPIEFTU0VSVChAaXNSZWFkYWJsZVN0
cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtKSk7CisgICAgLy8gVE9ETyBBU1NFUlQodGhp
cy5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxl
KTsKKyAgICByZXR1cm4gQGNhbmNlbFJlYWRhYmxlU3RyZWFtKHRoaXMuQG93bmVyUmVhZGFibGVT
dHJlYW0sIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIHJlYWQoKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworCisgICAgcmV0dXJuIEByZWFkRnJv
bVJlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpOworfQorCitmdW5jdGlvbiByZWxlYXNlTG9jaygp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRl
cih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpOworCisgICAgaWYgKCF0aGlzLkBv
d25lclJlYWRhYmxlU3RyZWFtKQorICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRoaXMuQHJl
YWRSZXF1ZXN0cy5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAg
ICBAY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKK30KKworZnVuY3Rpb24gY2xvc2Vk
KCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVh
ZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3Io
IkNhbGxlZSBvZiBjbG9zZWQgaXMgbm90IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisKKyAg
ICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlzZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2M2IxMTYxMDQxY2NkYjM1
YWQ1Mjk3NmNhZmU2YmQxMWRmYzhiNzcuLjkwOTNjODE4YmNhNzY5YTZjYjdiMzU4MDdkYmZmMjAy
M2UzZmZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtNTIsNiArNTIsNyBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAg
IG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSYW5nZUVycm9yKSBcCisgICAgbWFjcm8oUmVh
ZGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhSZWZlcmVuY2VFcnJvcikgXAogICAgIG1hY3JvKFJl
ZmxlY3QpIFwKICAgICBtYWNybyhSZWdFeHApIFwKQEAgLTMwNyw3ICszMDgsMzAgQEAKICAgICBt
YWNybyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pIFwKICAgICBtYWNybyhnZXQpIFwKICAgICBt
YWNybyhzZXQpIFwKLQorICAgIG1hY3JvKHN0YXRlKSBcCisgICAgbWFjcm8odW5kZXJseWluZ1Nv
dXJjZSkgXAorICAgIG1hY3JvKHF1ZXVlKSBcCisgICAgbWFjcm8ocXVldWVTaXplKSBcCisgICAg
bWFjcm8oc3RhcnRlZCkgXAorICAgIG1hY3JvKGNsb3NlUmVxdWVzdGVkKSBcCisgICAgbWFjcm8o
cHVsbEFnYWluKSBcCisgICAgbWFjcm8ocHVsbGluZykgXAorICAgIG1hY3JvKHJlYWRlcikgXAor
ICAgIG1hY3JvKHN0b3JlZEVycm9yKSBcCisgICAgbWFjcm8oY29udHJvbGxlcikgXAorICAgIG1h
Y3JvKHN0cmF0ZWd5U2l6ZSkgXAorICAgIG1hY3JvKGhpZ2hXYXRlck1hcmspIFwKKyAgICBtYWNy
byhyZWFkUmVxdWVzdHMpIFwKKyAgICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBcCisgICAg
bWFjcm8oY2xvc2VkUHJvbWlzZSkgXAorICAgIG1hY3JvKGNsb3NlZFByb21pc2VSZXNvbHZlKSBc
CisgICAgbWFjcm8oY2xvc2VkUHJvbWlzZVJlamVjdCkgXAorICAgIG1hY3JvKGNvbnRyb2xsZWRS
ZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFtQ2xvc2VkKSBcCisgICAg
bWFjcm8ocmVhZGFibGVTdHJlYW1SZWFkYWJsZSkgXAorICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFt
RXJyb3JlZCkgXAorICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtUmVhZGVyKSBcCisgICAgbWFjcm8o
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKSBcCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDkzZWUxZmQ3NGI5OTI1OTA0MWNhMWU4NjJmNjMxMWY2NTA5ODM4OWEuLjBlZWEwZWFlYzRlOGQ5
MWExMjcxZTQ3NTNlYmQ4YzFmNjViYjRhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE1Niw2ICsxNTYsMTIgQEAKICNpbmNs
dWRlICJKU1JlcGxheUlucHV0cy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgorI2Vu
ZGlmCisKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0yODYsNyArMjkyLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKSk7CiAgICAgbV9v
YmplY3RQcm90b3R5cGUtPnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVyc2NvcmVQcm90bywgcHJvdG9BY2Nlc3NvciwgQWNjZXNzb3IgfCBEb250RW51
bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7Ci0gICAgCisKKyNp
ZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5j
dGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwg
cmVhZGFibGVTdHJlYW1Jbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9yKHZtKSwg
dGhpcykpOworICAgIG1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyRnVuY3Rpb24uc2V0
KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxl
U3RyZWFtSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRo
aXMpKTsKKyAgICBtX2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFi
bGVTdHJlYW1Jbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2
bSksIHRoaXMpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2VkR2V0dGVyLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJs
ZVN0cmVhbVByb3RvdHlwZUxvY2tlZENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAgbV9y
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUNsb3NlZEdldHRlci5zZXQodm0sIHRoaXMsIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1SZWFkZXJQ
cm90b3R5cGVDbG9zZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIuc2V0KHZtLCB0aGlzLCBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByb3RvdHlwZURlc2lyZWRTaXplQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyNlbmRp
ZgorCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQ4KV0ucHJvdG90eXBlLnNldCh2
bSwgdGhpcywgSlNJbnQ4QXJyYXlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgSlNJbnQ4QXJy
YXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQxNildLnByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIEpTSW50MTZBcnJheVByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBK
U0ludDE2QXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQzMild
LnByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEpTSW50MzJBcnJheVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBKU0ludDMyQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CkBAIC0zNDcsNiArMzYyLDE1IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkK
KyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUmVhZGFibGVT
dHJlYW06OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlw
ZS5nZXQoKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUuc2V0KHZtLCB0
aGlzLCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywg
SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX3JlYWRhYmxlU3RyZWFtUmVhZGVy
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLmdldCgpKSk7
CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1Db250
cm9sbGVyU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90
b3R5cGUuZ2V0KCkpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1f
d2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzKSk7CiAjZW5kaWYKQEAgLTQwNywxMSArNDMxLDIzIEBAIG1fICMjIGxv
d2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jCiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVF
cnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkp
OwogICAgIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBtX3JlYWRhYmxlU3RyZWFtQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZS5n
ZXQoKSkpOworICAgIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlLmdl
dCgpKSk7CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fcmVhZGFibGVTdHJlYW1Db250cm9s
bGVyUHJvdG90eXBlLmdldCgpKSk7CisjZW5kaWYKKwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9hcnJheVByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIAor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIG1fcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIG1f
cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9yZWFkYWJsZVN0cmVhbVJlYWRl
ckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgbV9yZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rv
ci5nZXQoKSwgRG9udEVudW0pOworI2VuZGlmCisKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlD
b25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNDIyLDggKzQ1OCw3IEBAIG1fICMjIGxvd2VyTmFt
ZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPlN5bnRheEVycm9yLCBtX3N5bnRheEVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+VHlwZUVycm9yLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlVSSUVy
cm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICAKLSAgICAK
KwogI2RlZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yLCBEb250RW51bSk7IFwKIApAQCAtNTIwLDYgKzU1NSwzMCBAQCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93
ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1By
b21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0
ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVhZGFibGVTdHJlYW1SZWFkYWJsZVBy
aXZhdGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNSZWFkYWJsZVN0cmVh
bTo6U3RhdGU6OlJlYWRhYmxlKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkUHJpdmF0ZU5hbWUsIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Jl
YWRhYmxlU3RyZWFtOjpTdGF0ZTo6Q2xvc2VkKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJl
YWRhYmxlU3RyZWFtRXJyb3JlZFByaXZhdGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNSZWFkYWJsZVN0cmVhbTo6U3RhdGU6OkVycm9yZWQpKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1Jc1JlYWRh
YmxlU3RyZWFtQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUlzUmVhZGFi
bGVTdHJlYW1SZWFkZXJDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVh
bUlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFk
YWJsZVN0cmVhbUlzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RSZWFkYWJsZVN0
cmVhbVB1bGxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24o
dm0sIHJlYWRhYmxlU3RyZWFtUmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbENvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZXJyb3JS
ZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgcmVhZGFibGVTdHJlYW1FcnJvclJlYWRhYmxlU3RyZWFtQ29kZUdlbmVyYXRvcih2
bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnZva2VP
ck5vb3BQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IHJlYWRhYmxlU3RyZWFtSW52b2tlT3JOb29wQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlSW52b2tlT3JOb29wUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJs
ZVN0cmVhbVByb21pc2VJbnZva2VPck5vb3BDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFJlYWRhYmxlU3RyZWFtRGVzaXJl
ZFNpemVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IHJlYWRhYmxlU3RyZWFtR2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZUNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FuY2Vs
UmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1GaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJl
YW1Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmNsb3NlUmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFtQ2xvc2VSZWFkYWJsZVN0cmVh
bUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1DbG9zZVJlYWRhYmxl
U3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlYWRhYmxlU3RyZWFt
UmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWFkRnJvbVJlYWRhYmxlU3RyZWFt
UmVhZGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCByZWFkYWJsZVN0cmVhbVJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXJDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVucXVl
dWVJblJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUVucXVldWVJblJlYWRhYmxlU3RyZWFtQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVOYW1lKCksIG1fcmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZU5hbWUoKSwgbV9yZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzY1LDYgKzgy
NCwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3Rv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IpOworI2VuZGlmCisKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CiAKQEAgLTc3OSwxMiArODQ0
LDI3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90
aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlTG9hZGVyKTsKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlv
bik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtUmVhZGVyRnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2luaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2NrZWRHZXR0
ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJvdG90eXBlQ2xvc2VkR2V0dGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVEZXNpcmVkU2l6ZUdldHRlcik7
CisjZW5kaWYKKwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3Rv
dHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5
cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogCisjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKTsKKyNlbmRpZgor
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZSk7CkBAIC04MTksNiArODk5LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CisjaWYgRU5B
QkxFKFNUUkVBTVNfQVBJKQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlYWRh
YmxlU3RyZWFtU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9y
ZWFkYWJsZVN0cmVhbVJlYWRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJlKTsKKyNlbmRpZgogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93
YXNtTW9kdWxlU3RydWN0dXJlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjYxMzE2ZTg1ZDJiYWZiZGVkNzg0MzBiNmY4
ZjhlYmE1YWQ4Nzc2ZS4uM2I0MTk2Y2YxMGY1ODEwMTIzMTA1ZTJlMjI5ZDBhZmU0ZDZhMDE2NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC03NCw2ICs3NCwxNCBAQCBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1
Y3RvcjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNl
OworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1
Y3RvcjsKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU7CitjbGFzcyBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyQ29uc3RydWN0b3I7CitjbGFzcyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJv
dG90eXBlOworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvcjsKK2Ns
YXNzIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOworI2VuZGlmCiBjbGFzcyBK
U1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwpA
QCAtMjA0LDYgKzIxMiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlz
ZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcjsK
IAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0
cmVhbUNvbnN0cnVjdG9yPiBtX3JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I7CisgICAgV3JpdGVC
YXJyaWVyPEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rvcj4gbV9yZWFkYWJsZVN0cmVh
bVJlYWRlckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckNvbnN0cnVjdG9yPiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9y
OworI2VuZGlmCisKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxH
ZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251
bGxTZXR0ZXJGdW5jdGlvbjsKIApAQCAtMjE5LDYgKzIzMywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
V3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsK
IAogICAgIFdyaXRlQmFycmllcjxNb2R1bGVMb2FkZXJPYmplY3Q+IG1fbW9kdWxlTG9hZGVyOwor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9p
bml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbjsKKyAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVhZGFibGVTdHJlYW1Q
cm90b3R5cGVMb2NrZWRHZXR0ZXI7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVh
ZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVDbG9zZWRHZXR0ZXI7CisgICAgV3JpdGVCYXJyaWVy
PEpTRnVuY3Rpb24+IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNp
emVHZXR0ZXI7CisjZW5kaWYKIAogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1f
b2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9m
dW5jdGlvblByb3RvdHlwZTsKQEAgLTIyNiw2ICsyNDgsMTIgQEAgcHJvdGVjdGVkOgogICAgIFdy
aXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKIAorI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbVByb3Rv
dHlwZT4gbV9yZWFkYWJsZVN0cmVhbVByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFk
YWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZT4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU+
IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOworI2VuZGlmCisKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKQEAgLTI2Miw2ICsy
OTAsMTMgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0
b3JSZXN1bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmU7CisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWFkYWJsZVN0cmVhbVN0cnVjdHVyZTsKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3JlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0dXJl
OworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC00MDksNiArNDQ0LDEx
IEBAIHB1YmxpYzoKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAKKyNpZiBFTkFCTEUoU1RSRUFN
U19BUEkpCisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKiByZWFkYWJsZVN0cmVhbUNv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yLmdl
dCgpOyB9CisgICAgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKiByZWFkYWJsZVN0
cmVhbVJlYWRlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJl
YWRlckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3RvciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yLmdldCgpOyB9Cisj
ZW5kaWYKICAgICBOdWxsR2V0dGVyRnVuY3Rpb24qIG51bGxHZXR0ZXJGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbnVsbEdldHRlckZ1bmN0aW9uLmdldCgpOyB9CiAgICAgTnVsbFNldHRlckZ1
bmN0aW9uKiBudWxsU2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxTZXR0ZXJG
dW5jdGlvbi5nZXQoKTsgfQogCkBAIC00MjksNiArNDY5LDE0IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlTG9hZGVyLmdldCgpOyB9CisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIEpTRnVu
Y3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1GdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rp
b24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJGdW5jdGlvbi5nZXQoKTsgfQorICAg
IEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckZ1bmN0
aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFibGVTdHJlYW1Qcm90b3R5cGVMb2Nr
ZWRHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtUHJvdG90eXBlTG9ja2Vk
R2V0dGVyLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90
b3R5cGVDbG9zZWRHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtUmVhZGVy
UHJvdG90eXBlQ2xvc2VkR2V0dGVyLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNpemVHZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZURlc2lyZWRTaXplR2V0dGVyLmdl
dCgpOyB9CisjZW5kaWYKIAogICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBGdW5jdGlvblBy
b3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpOyB9CkBAIC00OTksNiArNTQ3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
cHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKTsgfQog
ICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3Ry
dWN0dXJlLmdldCgpOyB9CisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgU3RydWN0dXJl
KiByZWFkYWJsZVN0cmVhbVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZGFibGVTdHJl
YW1TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlYWRhYmxlU3RyZWFtUmVhZGVy
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlclN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVy
ZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVj
dHVyZS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUmVhZGFibGVTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZjFmM2EzNDFhYzUwZGI5NzVk
Yzc3MDUyODdiNWM5NWEyMjA5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFt
LmgiCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkpTUmVhZGFi
bGVTdHJlYW0ubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKTsKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1JlYWRhYmxlU3RyZWFtUHJvdG90
eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVTdHJlYW06OnNfaW5mbyA9IHsgIlJl
YWRhYmxlU3RyZWFtIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Jl
YWRhYmxlU3RyZWFtKSB9OworCitKU1JlYWRhYmxlU3RyZWFtKiBKU1JlYWRhYmxlU3RyZWFtOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTUmVh
ZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSZWFkYWJsZVN0cmVhbT4odm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW0odm0sIGdsb2JhbE9i
amVjdC0+cmVhZGFibGVTdHJlYW1TdHJ1Y3R1cmUoKSk7CisgICAgcmVhZGFibGVTdHJlYW0tPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW07Cit9CisKK1N0cnVj
dHVyZSogSlNSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitjb25zdCBDbGFzc0luZm8g
SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZTo6c19pbmZvID0geyAiUmVhZGFibGVTdHJlYW1Qcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcmVhZGFibGVTdHJlYW1Qcm90b3R5cGVUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKSB9OworCisvKiBTb3Vy
Y2UgZm9yIEpTUmVhZGFibGVTdHJlYW0ubHV0LmgKK0BiZWdpbiByZWFkYWJsZVN0cmVhbVByb3Rv
dHlwZVRhYmxlCisgIGNhbmNlbCAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY0Nh
bmNlbCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGdldFJlYWRlciAgICBKU1JlYWRhYmxl
U3RyZWFtUHJvdG90eXBlRnVuY0dldFJlYWRlciAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHBp
cGVUaHJvdWdoICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1BpcGVUaHJvdWdoICBEb250
RW51bXxGdW5jdGlvbiAyCisgIHBpcGVUbyAgICAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBl
RnVuY1BpcGVUbyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRlZSAgICAgICAgICBKU1Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlRnVuY1RlZSAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisKKyAgbG9ja2VkICAgICAgIGpzUmVhZGFibGVTdHJlYW1Qcm90b3R5cGVHZXR0ZXJMb2NrZWQg
ICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxlU3RyZWFtUHJvdG90
eXBlKiBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZShzdGF0ZSwgc3RydWN0dXJlKTsKKyAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1
cmUqIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworYm9vbCBKU1Jl
YWRhYmxlU3RyZWFtUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+
KHN0YXRlLCByZWFkYWJsZVN0cmVhbVByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2NvbnN0
IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlJlYWRh
YmxlU3RyZWFtQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcikgfTsKKworSlNSZWFkYWJsZVN0cmVhbUNv
bnN0cnVjdG9yKiBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKiByZWFkYWJsZVN0
cmVhbVByb3RvdHlwZSkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbUNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcmVhZGFibGVTdHJlYW1Q
cm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Jl
YWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBKU1JlYWRhYmxl
U3RyZWFtQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNSZWFkYWJsZVN0cmVh
bVByb3RvdHlwZSogcmVhZGFibGVTdHJlYW1Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0iKSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVh
ZGFibGVTdHJlYW1Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RSZWFkYWJsZVN0
cmVhbShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpOworCisgICAgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVTdHJlYW0gPSBKU1JlYWRh
YmxlU3RyZWFtOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CisKKyAgICBKU0Z1bmN0aW9uKiBp
bml0aWFsaXplUmVhZGFibGVTdHJlYW0gPSBnbG9iYWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJs
ZVN0cmVhbUZ1bmN0aW9uKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpbml0aWFsaXplUmVhZGFibGVTdHJlYW0sIGNhbGxEYXRh
KTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHN0YXRlLT5hcmd1
bWVudCgwKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChzdGF0ZS0+YXJndW1lbnQoMSkpOworICAg
IGNhbGwoc3RhdGUsIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSwgY2FsbFR5cGUsIGNhbGxEYXRh
LCByZWFkYWJsZVN0cmVhbSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVhZGFibGVTdHJlYW0pOworfQorCitDb25zdHJ1Y3RUeXBlIEpTUmVhZGFibGVTdHJlYW1D
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0UmVhZGFibGVTdHJlYW07CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitD
YWxsVHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
b25zdHJ1Y3RSZWFkYWJsZVN0cmVhbTsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbVByb3RvdHlw
ZUdldHRlckxvY2tlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiog
Z2V0dGVyID0gc3RhdGUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1Q
cm90b3R5cGVMb2NrZWRHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VS
VChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1JlYWRhYmxlU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJhZDkzOTdiMTVjNDI4
Mzk4NTVjNjVhMDEyYTBiZDc4ODVkYmIzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDk0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtX2gKKyNkZWZpbmUgSlNSZWFkYWJs
ZVN0cmVhbV9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEpTUmVhZGFibGVTdHJlYW0gOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNS
ZWFkYWJsZVN0cmVhbSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1
bnNpZ25lZCB7CisgICAgICAgIFJlYWRhYmxlID0gMSwKKyAgICAgICAgQ2xvc2VkLAorICAgICAg
ICBFcnJvcmVkCisgICAgfTsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogQmFzZSh2bSwgc3RydWN0dXJlKSB7IH0KK307CisK
K2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0
cmVhbVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAg
ICBKU1JlYWRhYmxlU3RyZWFtUHJvdG90eXBlKEV4ZWNTdGF0ZSogc3RhdGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlKSA6IEJhc2Uoc3RhdGUtPnZtKCksIHN0cnVjdHVyZSkgeyB9CisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1Db25zdHJ1
Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIElu
dGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFtQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTUmVhZGFibGVTdHJlYW1Qcm90b3R5cGUq
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpT
UmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkgeyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZSopOworCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbVByb3RvdHlwZUdldHRlckxv
Y2tlZChKU0M6OkV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2VuZGlmIC8vIEpTUmVhZGFibGVTdHJlYW1faApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZTIyNTIwN2Q2NzMzYTU3YWJmNmQyNDc5
ZDczYTgxNjZmM2FjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5j
bHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUpOworCitjb25z
dCBDbGFzc0luZm8gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OnNfaW5mbyA9IHsgIlJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpIH07CisKK0pTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcih2bSwgZ2xvYmFsT2JqZWN0LT5yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJTdHJ1Y3R1
cmUoKSk7CisgICAgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjsKK30KKworU3RydWN0dXJlKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitjb25zdCBDbGFzc0lu
Zm8gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZyZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlci5sdXQuaAorQGJlZ2luIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByb3RvdHlwZVRhYmxlCisgIGNsb3NlICAgICAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByb3RvdHlwZUZ1bmNDbG9zZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlbnF1ZXVl
ICAgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVGdW5jRW5xdWV1ZSAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgZXJyb3IgICAgICAgIEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlRnVuY0Vycm9yICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGRl
c2lyZWRTaXplICBqc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZUZ1bmNEZXNpcmVk
U2l6ZSAgRG9udEVudW18QWNjZXNzb3IKK0BlbmQKKyovCisKK0pTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyUHJvdG90eXBlKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUoc3RhdGUsIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitib29s
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SlNPYmplY3Q+KHN0YXRlLCByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGVU
YWJsZSwganNDYXN0PEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yKSB9OworCitKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNv
bnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3Rv
dHlwZSkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29u
c3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGUqIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAg
ICBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciogcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0g
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKwor
ICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgPSBnbG9i
YWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJGdW5jdGlvbigpOwor
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciwgY2FsbERhdGEpOworICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
KyAgICBjYWxsKHN0YXRlLCBpbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciwgYXJndW1lbnRzKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVhZGFibGVTdHJlYW1Db250cm9sbGVyKTsKK30K
KworQ29uc3RydWN0VHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXI7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxs
VHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0UmVhZGFibGVTdHJlYW1Db250cm9sbGVyOworICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByb3RvdHlwZUZ1bmNEZXNpcmVkU2l6ZShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiogZ2V0dGVyID0gc3RhdGUtPmNhbGxlZSgpLT5n
bG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRGVzaXJlZFNp
emVHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzYwZmMx
YjZhZGM1NWZhMWRiZGUyMzUwMWY0OWMyMGJmYjdjYzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaApA
QCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcl9oCisjZGVmaW5lIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyX2gKKworI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpIHsgfQorfTsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQ
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUq
IGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIDogQmFzZShzdGF0ZS0+dm0oKSwgc3RydWN0dXJlKSB7IH0KKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworfTsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlclByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3ByaXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uodm0sIHN0cnVjdHVyZSkg
eyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcm90b3R5cGUqKTsKKworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJvdG90eXBlRnVuY0Rlc2ly
ZWRTaXplKEpTQzo6RXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjZW5kaWYgLy8gSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTVhNzc4YzFjZDU5OTc0YThmMDI2
MGRkZjBkNGFmNzA3NzZmNGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKQEAgLTAsMCArMSwxNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVJlYWRlci5oIgorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXJDb25zdHJ1Y3Rvcik7CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRl
cikgfTsKKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkYWJsZVN0cmVhbVJlYWRlciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KHZtLmhlYXApKSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyKHZtLCBnbG9iYWxPYmplY3QtPnJlYWRhYmxlU3RyZWFtUmVhZGVyU3RydWN0
dXJlKCkpOworICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtUmVhZGVyOworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtUmVhZGVy
UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnJlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBl
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmx1dC5oCitAYmVn
aW4gcmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVUYWJsZQorICBjYW5jZWwgICAgICAgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNDYW5jZWwgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgcmVhZCAgICAgICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVG
dW5jUmVhZCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHJlbGVhc2VMb2NrICBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY1JlbGVhc2VMb2NrICAgRG9udEVudW18RnVu
Y3Rpb24gMAorICBjbG9zZWQgICAgICAganNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1
bmNDbG9zZWQgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyUHJvdG90eXBlKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlOjpj
cmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByb3RvdHlwZShzdGF0ZSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworYm9vbCBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KHN0
YXRlLCByZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNSZWFkYWJs
ZVN0cmVhbVJlYWRlclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9
CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3Rv
cikgfTsKKworSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKiByZWFkYWJsZVN0cmVhbVJlYWRlclBy
b3RvdHlwZSkKK3sKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSZWFkYWJsZVN0cmVhbVJlYWRl
ckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcmVh
ZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30K
KworU3RydWN0dXJlKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKwordm9pZCBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZSogcmVhZGFibGVT
dHJlYW1SZWFkZXJQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFT
Q0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVhZGFibGVTdHJl
YW1SZWFkZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RSZWFkYWJsZVN0cmVh
bVJlYWRlcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+Y2FsbGVlKCktPmdsb2Jh
bE9iamVjdCgpOworCisgICAgSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogcmVhZGFibGVTdHJlYW1S
ZWFkZXIgPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7
CisKKyAgICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIgPSBnbG9i
YWxPYmplY3QtPmluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlckZ1bmN0aW9uKCk7CisgICAg
Q2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShp
bml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIsIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgY2Fs
bChzdGF0ZSwgaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHJlYWRhYmxlU3RyZWFtUmVhZGVyLCBhcmd1bWVudHMpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZWFkYWJsZVN0cmVhbVJlYWRlcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RSZWFkYWJsZVN0cmVhbVJlYWRlcjsKKyAgICByZXR1cm4g
Q29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorewor
ICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFJlYWRhYmxlU3RyZWFtUmVh
ZGVyOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlRnVuY0Nsb3NlZChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgSlNGdW5jdGlvbiogZ2V0dGVyID0gc3RhdGUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+cmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGVD
bG9zZWRHZXR0ZXIoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChzdGF0ZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHN0YXRlLT50aGlzVmFsdWUoKSwgYXJndW1lbnRzKTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE0MmNkZmU1ODU0
ZGRjZjk5MDJjZDk1MjQwMGNjN2ZhNjRiMjQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyX2gKKyNk
ZWZpbmUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcl9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0cmVhbVJlYWRlciogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKKworcHJpdmF0ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIDogQmFzZSh2bSwgc3RydWN0dXJlKSB7IH0KK307CisKK2NsYXNz
IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNSZWFkYWJsZVN0
cmVhbVJlYWRlclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0
ZToKKyAgICBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogc3RhdGUs
IFN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uoc3RhdGUtPnZtKCksIHN0cnVjdHVyZSkgeyB9
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK2NsYXNzIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpT
UmVhZGFibGVTdHJlYW1SZWFkZXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uodm0sIHN0cnVjdHVyZSkg
eyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNSZWFkYWJsZVN0cmVhbVJlYWRl
clByb3RvdHlwZSopOworCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNSZWFkYWJsZVN0cmVhbVJlYWRlclByb3RvdHlwZUZ1bmNDbG9zZWQoSlNDOjpF
eGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNU19BUEkpCisKKyNlbmRpZiAvLyBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyX2ggCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDZlZTI1NmM1Yzk3YWI2YzFjY2NhNDRkYTA1ZGZlOWQxNmVhZjdjNDYu
LmMxZDU4NDY2MjZhOTE5MWM4M2VmN2MwZjNkZDViYzA1ZmYyOGY5MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yNzMsOSArMjczLDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMK
ICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGwKIAogICAgIE1vZHVs
ZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5pZGwKLSAgICBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uaWRsCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5pZGwKLSAgICBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRs
CiAKICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCiAKQEAgLTkz
Miw5ICs5MjksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmNwcAogCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAot
ICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKLQogICAgIE1vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKICAgICBNb2R1bGVzL3ZpYnJhdGlv
bi9WaWJyYXRpb24uY3BwCiAKQEAgLTExNjcsOSArMTE2MSw2IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtQ3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
a0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEyMDAs
NyArMTE5MSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAotICAgIGJpbmRp
bmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCiAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKICAgICBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CmluZGV4IDFlODliOTFlYzQyY2U3ZmQ2MTI5MjkzYTMyOGJkMjc4YWM5MzBjYmEuLjAwYjJiNDVj
OWU0ZjQ3OTk1MWQ1NWExM2Q5M2I0OGI0YmE5MDRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKQEAgLTMwNiwxMSArMzA2LDYgQEAKICNpbmNsdWRlICJKU1JhZGlvTm9kZUxpc3QuY3Bw
IgogI2luY2x1ZGUgIkpTUmFuZ2UuY3BwIgogI2luY2x1ZGUgIkpTUmFuZ2VFeGNlcHRpb24uY3Bw
IgotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmNw
cCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAiCi0jaW5jbHVkZSAi
SlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiCi0jZW5kaWYKICNpbmNsdWRlICJKU1JlY3QuY3Bw
IgogI2luY2x1ZGUgIkpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIgogI2luY2x1
ZGUgIkpTUkdCQ29sb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYTNi
OWU5ZWNiYmE5ZDYxZGJkYjkxNTVlOGU0MjQxYTcyYjJhNGE0OC4uZDU4ZjE4MjA5NGMwMzgwMWJi
ZTVjOGRhYTY5OTc4YjdiYjdmZDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xNzUsOSArMTc1LDYgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUmVh
ZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNSZWFkYWJsZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlOWUyZjQ5N2MyOGMzZmJmNTUyNmJmYWE3
MmMwMWRmMGEyMzQ1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfSlNSZWFkYWJsZVN0cmVhbV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X0pTUmVhZGFibGVTdHJlYW1faAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmVhZGFibGVT
dHJlYW0uaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZWRlYmEx
MTAzMjQwOTU4YzNiYTU0ZDYxNjZmZTEwYTIyNzE4MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVk
IHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5P
TiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW0uaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ERUZJTkVfREVCVUdf
T05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291
bnRlciwgKCJSZWFkYWJsZVN0cmVhbSIpKTsKLQotUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBSZWFk
YWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKLXsKLSAgICByZXR1cm4gUmVmUHRyPFJl
YWRhYmxlU3RyZWFtPihSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCBzdHJh
dGVneSkpOwotfQotCi1SZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVj
dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVhZGFi
bGVTdHJlYW1Db3VudGVyLmluY3JlbWVudCgpOwotI2VuZGlmCi0gICAgc3VzcGVuZElmTmVlZGVk
KCk7Ci19Ci0KLVJlYWRhYmxlU3RyZWFtOjp+UmVhZGFibGVTdHJlYW0oKQotewotI2lmbmRlZiBO
REVCVUcKLSAgICByZWFkYWJsZVN0cmVhbUNvdW50ZXIuZGVjcmVtZW50KCk7Ci0jZW5kaWYKLX0K
LQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xlYXJDYWxsYmFja3MoKQotewotICAgIG1fY2xvc2Vk
UHJvbWlzZSA9IE51bGxvcHQ7Ci0gICAgbV9yZWFkUmVxdWVzdHMuY2xlYXIoKTsKLX0KLQotdm9p
ZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCi17Ci0gICAgQVNTRVJUKCFt
X2Nsb3NlUmVxdWVzdGVkKTsKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6RXJyb3JlZCk7
Ci0KLSAgICBtX2Nsb3NlUmVxdWVzdGVkID0gdHJ1ZTsKLQotICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpSZWFkYWJsZSB8fCBoYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgY2xvc2Uo
KTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2UoKQotewotICAgIG1fc3RhdGUgPSBT
dGF0ZTo6Q2xvc2VkOwotICAgIHJlbGVhc2VSZWFkZXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0
cmVhbTo6cmVsZWFzZVJlYWRlcigpCi17Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZWFk
UmVxdWVzdHMpCi0gICAgICAgIHJlcXVlc3QucmVzb2x2ZUVuZCgpOwotICAgIGlmIChtX3JlYWRl
cikKLSAgICAgICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShtX3JlYWRlcikp
OwotCi0gICAgaWYgKG1fY2xvc2VkUHJvbWlzZSkKLSAgICAgICAgbV9jbG9zZWRQcm9taXNlLnZh
bHVlKCkucmVzb2x2ZShudWxscHRyKTsKLSAgICBjbGVhckNhbGxiYWNrcygpOwotfQotCi12b2lk
IFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCi17Ci0gICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OlJlYWRhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjbGVhclZhbHVl
cygpOwotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwotCi0gICAgaWYgKCFtX3JlYWRl
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNDOjpKU1ZhbHVlIGVycm9yID0gdGhpcy0+ZXJy
b3IoKTsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKLSAgICAgICAg
cmVxdWVzdC5yZWplY3QoZXJyb3IpOwotICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6
Om1vdmUobV9yZWFkZXIpKTsKLQotICAgIGlmIChtX2Nsb3NlZFByb21pc2UpCi0gICAgICAgIG1f
Y2xvc2VkUHJvbWlzZS52YWx1ZSgpLnJlamVjdChlcnJvcik7Ci0gICAgY2xlYXJDYWxsYmFja3Mo
KTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6c3RhcnQoKQotewotICAgIG1faXNTdGFydGVk
ID0gdHJ1ZTsKLSAgICBwdWxsKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnB1bGwoKQot
ewotICAgIGlmICghbV9pc1N0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1f
c3RhdGUgPT0gU3RhdGU6OkVycm9yZWQgfHwgbV9jbG9zZVJlcXVlc3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNFbm91Z2hWYWx1
ZXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQdWxsaW5nKSB7Ci0gICAgICAg
IG1fc2hvdWxkUHVsbEFnYWluID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1faXNQdWxsaW5nID0gdHJ1ZTsKLSAgICBpZiAoZG9QdWxsKCkpIHsKLSAgICAgICAgUmVmUHRy
PFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0odGhpcyk7Ci0gICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFN0cmVhbV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFN0cmVhbS0+ZmluaXNoUHVsbGlu
ZygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmZpbmlz
aFB1bGxpbmcoKQotewotICAgIG1faXNQdWxsaW5nID0gZmFsc2U7Ci0gICAgaWYgKG1fc2hvdWxk
UHVsbEFnYWluKSB7Ci0gICAgICAgIG1fc2hvdWxkUHVsbEFnYWluID0gZmFsc2U7Ci0gICAgICAg
IHB1bGwoKTsKLSAgICB9Ci19Ci0KLVJlYWRhYmxlU3RyZWFtUmVhZGVyKiBSZWFkYWJsZVN0cmVh
bTo6Z2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChsb2NrZWQoKSkgewot
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
ICAgIEFTU0VSVCghbV9yZWFkZXIpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyPiBuZXdSZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtUmVh
ZGVyPigqdGhpcyk7Ci0gICAgUmVhZGFibGVTdHJlYW1SZWFkZXImIHJlYWRlciA9ICpuZXdSZWFk
ZXIuZ2V0KCk7Ci0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGUpIHsKLSAgICAg
ICAgbV9yZWFkZXIgPSBXVEY6Om1vdmUobmV3UmVhZGVyKTsKLSAgICAgICAgcmV0dXJuICZyZWFk
ZXI7Ci0gICAgfQotCi0gICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShuZXdS
ZWFkZXIpKTsKLSAgICByZXR1cm4gJnJlYWRlcjsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6
Y2FuY2VsKEpTQzo6SlNWYWx1ZSByZWFzb24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlLCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobG9ja2VkKCkpIHsKLSAgICAgICAgZWMgPSBUeXBl
RXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FuY2VsTm9DaGVjayhyZWFzb24s
IFdURjo6bW92ZShwcm9taXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNhbmNlbE5v
Q2hlY2soSlNDOjpKU1ZhbHVlIHJlYXNvbiwgQ2FuY2VsUHJvbWlzZSYmIHByb21pc2UpCi17Ci0g
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewotICAgICAgICBwcm9taXNlLnJlc29s
dmUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxl
KTsKLQotICAgIGNsZWFyVmFsdWVzKCk7Ci0KLSAgICBtX2NhbmNlbFByb21pc2UgPSBXVEY6Om1v
dmUocHJvbWlzZSk7Ci0KLSAgICBjbG9zZSgpOwotCi0gICAgaWYgKGRvQ2FuY2VsKHJlYXNvbikp
Ci0gICAgICAgIGVycm9yKCkgPyBub3RpZnlDYW5jZWxGYWlsZWQoKSA6IG5vdGlmeUNhbmNlbFN1
Y2NlZWRlZCgpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpub3RpZnlDYW5jZWxTdWNjZWVk
ZWQoKQotewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpOwotICAgIEFTU0VS
VChtX2NhbmNlbFByb21pc2UpOwotCi0gICAgbV9jYW5jZWxQcm9taXNlLnZhbHVlKCkucmVzb2x2
ZShudWxscHRyKTsKLSAgICBtX2NhbmNlbFByb21pc2UgPSBOdWxsb3B0OwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtOjpub3RpZnlDYW5jZWxGYWlsZWQoKQotewotICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpDbG9zZWQpOwotICAgIEFTU0VSVChtX2NhbmNlbFByb21pc2UpOwotCi0gICAg
bV9jYW5jZWxQcm9taXNlLnZhbHVlKCkucmVqZWN0KGVycm9yKCkpOwotICAgIG1fY2FuY2VsUHJv
bWlzZSA9IE51bGxvcHQ7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRQ
cm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewotICAgICAgICBwcm9taXNl
LnJlamVjdChlcnJvcigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Nsb3NlZFBy
b21pc2UgPSBXVEY6Om1vdmUocHJvbWlzZSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnJl
YWQoUmVhZFByb21pc2UmJiByZWFkUHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6Q2xvc2VkKSB7Ci0gICAgICAgIHJlYWRQcm9taXNlLnJlc29sdmVFbmQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewotICAg
ICAgICByZWFkUHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGhhc1ZhbHVlKCkpIHsKLSAgICAgICAgcmVhZFByb21pc2UucmVzb2x2ZShyZWFk
KCkpOwotICAgICAgICBpZiAoIW1fY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgICAgICBwdWxsKCk7
Ci0gICAgICAgIGVsc2UgaWYgKCFoYXNWYWx1ZSgpKQotICAgICAgICAgICAgY2xvc2UoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQoV1RGOjptb3Zl
KHJlYWRQcm9taXNlKSk7Ci0gICAgcHVsbCgpOwotfQotCi1ib29sIFJlYWRhYmxlU3RyZWFtOjpy
ZXNvbHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAobV9yZWFk
UmVxdWVzdHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3JlYWRS
ZXF1ZXN0cy50YWtlRmlyc3QoKS5yZXNvbHZlKHZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotY29uc3QgY2hhciogUmVhZGFibGVTdHJlYW06OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAotewotICAgIHJldHVybiAiUmVhZGFibGVTdHJlYW0iOwotfQotCi1ib29sIFJlYWRhYmxlU3Ry
ZWFtOjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHRyeSBhbmQgZG8gYmV0dGVyIGhlcmUuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU3N2JhNTg5ZWUwMjEwNTcx
MTk1ZDlhM2E1YTdjYmEzNTBkMTY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFJlYWRhYmxlU3RyZWFtX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1faAotCi0j
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0j
aW5jbHVkZSAiRE9NUmVxdWVzdFN0YXRlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEpTVmFsdWU7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgRGljdGlvbmFyeTsKLWNsYXNzIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQotLy8gUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50cyB0aGUgY29yZSBvZiB0aGUg
c3RyZWFtcyBBUEkgUmVhZGFibGVTdHJlYW0gZnVuY3Rpb25hbGl0eS4KLS8vIEl0IGhhbmRsZXMg
aW4gcGFydGljdWxhciB0aGUgYmFja3ByZXNzdXJlIGFjY29yZGluZyB0aGUgcXVldWUgc2l6ZS4K
LS8vIFJlYWRhYmxlU3RyZWFtIGlzIHVzaW5nIGEgUmVhZGFibGVTdHJlYW1Tb3VyY2UgdG8gZ2V0
IGRhdGEgaW4gaXRzIHF1ZXVlLgotLy8gU2VlIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5v
cmcvI3JzCi1jbGFzcyBSZWFkYWJsZVN0cmVhbSA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtPiB7
Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJlYWRhYmxlLAotICAg
ICAgICBDbG9zZWQsCi0gICAgICAgIEVycm9yZWQKLSAgICB9OwotCi0gICAgc3RhdGljIFJlZlB0
cjxSZWFkYWJsZVN0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBj
b25zdCBEaWN0aW9uYXJ5Jik7Ci0gICAgdmlydHVhbCB+UmVhZGFibGVTdHJlYW0oKTsKLQotICAg
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiBnZXRSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOwotICAgIGNv
bnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRl
ci5nZXQoKTsgfQotCi0gICAgYm9vbCBsb2NrZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmVhZGVy
OyB9Ci0KLSAgICB2b2lkIHJlbGVhc2VSZWFkZXIoKTsKLSAgICBib29sIGhhc1JlYWRQZW5kaW5n
UmVxdWVzdHMoKSB7IHJldHVybiAhbV9yZWFkUmVxdWVzdHMuaXNFbXB0eSgpOyB9Ci0KLSAgICBi
b29sIGlzRXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQ7
IH0KLSAgICBib29sIGlzUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRl
OjpSZWFkYWJsZTsgfQotICAgIGJvb2wgaXNDbG9zZVJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xvc2VSZXF1ZXN0ZWQ7IH0KLQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkg
PSAwOwotCi0gICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Nsb3NlZCgp
OwotICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKLSAgICB2b2lkIGZpbmlzaFB1bGxp
bmcoKTsKLSAgICB2b2lkIG5vdGlmeUNhbmNlbFN1Y2NlZWRlZCgpOwotICAgIHZvaWQgbm90aWZ5
Q2FuY2VsRmFpbGVkKCk7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3Qs
IEpTQzo6SlNWYWx1ZT4gQ2FuY2VsUHJvbWlzZTsKLSAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFs
dWUsIENhbmNlbFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY2FuY2VsTm9D
aGVjayhKU0M6OkpTVmFsdWUsIENhbmNlbFByb21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVBy
b21pc2U8c3RkOjpudWxscHRyX3QsIEpTQzo6SlNWYWx1ZT4gQ2xvc2VkUHJvbWlzZTsKLSAgICB2
b2lkIGNsb3NlZChDbG9zZWRQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlSXRl
cmF0b3JXaXRoQ2FsbGJhY2s8SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWU+IFJlYWRQcm9taXNl
OwotICAgIHZvaWQgcmVhZChSZWFkUHJvbWlzZSYmKTsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLQotICAgIGJvb2wg
cmVzb2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUpOwotICAgIHZvaWQgcHVsbCgpOwotCi1w
cml2YXRlOgotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuU3VzcGVuZEZv
clBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBjbGVhckNhbGxiYWNrcygp
OwotICAgIHZvaWQgY2xvc2UoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZhbHVlcygpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1
ZSByZWFkKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkb1B1bGwoKSA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGRvQ2FuY2VsKEpTQzo6SlNWYWx1ZSkgPSAwOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFJlYWRhYmxlU3RyZWFtUmVhZGVyPiBtX3JlYWRlcjsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFJlYWRhYmxlU3RyZWFtUmVhZGVyPj4gbV9yZWxlYXNlZFJlYWRlcnM7Ci0KLSAgICBPcHRp
b25hbDxDYW5jZWxQcm9taXNlPiBtX2NhbmNlbFByb21pc2U7Ci0gICAgT3B0aW9uYWw8Q2xvc2Vk
UHJvbWlzZT4gbV9jbG9zZWRQcm9taXNlOwotCi0gICAgRGVxdWU8UmVhZFByb21pc2U+IG1fcmVh
ZFJlcXVlc3RzOwotCi0gICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2lzUHVsbGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFB1bGxBZ2FpbiB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX2Nsb3NlUmVxdWVzdGVkIHsgZmFsc2UgfTsKLSAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OlJlYWRhYmxlIH07Ci19OwotCi0vLyBUaGlzIGNsYXNzIG1hbmFnZXMgdGhl
IHF1ZXVlIGFuZCBrbm93cyB3aGV0aGVyIHRoZXJlIGlzIHN1ZmZpY2llbnQgZGF0YSBpbiBpdC4K
LS8vICAgU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IGVycm9yIHN0b3JhZ2UsIHB1bGxpbmcg
YW5kIGNhbmNlbGxpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaHVua1R5cGU+Ci1jbGFzcyBSZWFk
YWJsZUVucXVldWluZ1N0cmVhbSBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wcm90
ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgOiBSZWFkYWJsZVN0cmVhbShjb250ZXh0KSB7IH0KLQotICAg
IHZvaWQgZW5xdWV1ZUNodW5rKENodW5rVHlwZSYmIGNodW5rKSB7IG1fcXVldWUuYXBwZW5kKHN0
ZDo6Zm9yd2FyZChjaHVuaykpOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
VmFsdWVzKCkgb3ZlcnJpZGUgeyBtX3F1ZXVlLmNsZWFyKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzRW5vdWdoVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1ZS5zaXplKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3F1ZXVlLnNpemUoKTsgfQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlk
ZTsKLQotICAgIERlcXVlPENodW5rVHlwZT4gbV9xdWV1ZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENodW5rVHlwZT4KLWlubGluZSBKU0M6OkpTVmFsdWUgUmVhZGFibGVFbnF1ZXVpbmdTdHJl
YW08Q2h1bmtUeXBlPjo6cmVhZCgpCi17Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHN0YXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHRvSlMoc3RhdGUuZXhlYygpLCB0b0pT
RE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc3RhdGUuZXhlYygpKSwg
bV9xdWV1ZS5yZWFkKCkpOwotfQotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gUmVhZGFibGVT
dHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2M2MyNjQzMThjNTQxMjBh
NzA4ODkxYTFjZGFjNTNmMDY4Y2IwZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLVsKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAotICAgIENvbnN0cnVj
dG9yKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHNvdXJjZSwgW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBEaWN0aW9uYXJ5IHN0cmF0ZWd5KSwKLSAgICBDb25kaXRpb25hbD1T
VFJFQU1TX0FQSSwKLSAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgotXSBpbnRlcmZhY2UgUmVhZGFi
bGVTdHJlYW0gewotICAgIFtSYWlzZXNFeGNlcHRpb25dIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0g
UmVhZGFibGVTdHJlYW1SZWFkZXIgZ2V0UmVhZGVyKCk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBw
aXBlVG8oYW55IHN0cmVhbXMsIGFueSBvcHRpb25zKTsKLSAgICBbQ3VzdG9tXSBPYmplY3QgcGlw
ZVRocm91Z2goYW55IGRlc3QsIGFueSBvcHRpb25zKTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGxvY2tlZDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE0YzNiZWNiYjFkNzdkMzhjOGU5M2M4NGY0ODYzMzllZjc0ZTNlNmYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJfaAotI2RlZmluZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJfaAot
Ci0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0K
LS8vIFRoaXMgY2xhc3MgaXMgb25seSB1c2VkIGZvciBKUyBzb3VyY2UgcmVhZGFibGUgc3RyZWFt
cyB0byBhbGxvdyBlbnF1ZXVpbmcsIGNsb3Npbmcgb3IgZXJyb3JpbmcgYSByZWFkYWJsZSBzdHJl
YW0uCi0vLyBJdHMgZGVmaW5pdGlvbiBpcyBhdCBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cu
b3JnLyNycy1jb250cm9sbGVyLWNsYXNzLgotLy8gTm90ZSB0aGF0IGl0cyBjb25zdHJ1Y3RvciBp
cyB0YWtpbmcgYSBSZWFkYWJsZUpTU3RyZWFtIGFzIGl0IHNob3VsZCBvbmx5IGJlIHVzZWQgZm9y
IEpTIHNvdXJjZXMuCi1jbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgewotcHVibGljOgot
ICAgIGV4cGxpY2l0IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihSZWFkYWJsZUpTU3RyZWFtJiBz
dHJlYW0pCi0gICAgICAgIDogbV9zdHJlYW0oc3RyZWFtKSB7IH0KLQotICAgIFJlYWRhYmxlSlNT
dHJlYW0mIHN0cmVhbSgpIHsgcmV0dXJuIG1fc3RyZWFtOyB9Ci0KLSAgICB2b2lkIGVycm9yKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBl
YykgeyBtX3N0cmVhbS5lcnJvcigqc3RhdGUsIHZhbHVlLCBlYyk7IH0KLQotICAgIHZvaWQgZW5x
dWV1ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBtX3N0cmVh
bS5lbnF1ZXVlKCpzdGF0ZSwgdmFsdWUpOyB9Ci0KLSAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0u
cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9Ci0KLSAgICB2
b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IG1fc3RyZWFtLmNsb3NlKGVjKTsgfQotICAg
IGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtLmRlc2lyZWRTaXpl
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpTU3RyZWFtJiBtX3N0cmVhbTsKLX07Ci0K
LX0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBSZWFkYWJsZVN0cmVhbV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGI4YzhiNWU5NzcxOGExNGZk
YmJkY2U5YzYzNWE2ZjY3NGU4NTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0
byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04g
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAotICAgIEN1c3RvbUNv
bnN0cnVjdG9yLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKLV0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGVucXVldWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBhbnkgY2h1bmspOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgY2xvc2UoKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBlcnJvcihbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBlcnJvcik7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgZG91YmxlIGRlc2lyZWRTaXplOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZjM3ZDk5YzAxZDljMWFhYWU5ZGM4ZWMyOGNmNzdjNWU2ZWYwZGI5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIElu
Yy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0K
LSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2FuY2VsKEpTQzo6SlNWYWx1ZSByZWFzb24sIFJlYWRhYmxl
U3RyZWFtOjpDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdHJlYW0uaXNS
ZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFt
LmNhbmNlbE5vQ2hlY2socmVhc29uLCBXVEY6Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFByb21pc2Um
JiBwcm9taXNlKQotewotICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYgbV9zdHJlYW0u
cmVhZGVyKCkgIT0gdGhpcykgewotICAgICAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJlYW0uY2xvc2VkKFdURjo6bW92ZShwcm9t
aXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OnJlYWQoUmVhZGFibGVTdHJl
YW06OlJlYWRQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdHJlYW0uaXNSZWFkYWJs
ZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlRW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJlYW0ucmVhZChXVEY6
Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNl
TG9jayhFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobV9zdHJlYW0ucmVhZGVyKCkgIT0g
dGhpcykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3N0cmVhbS5oYXNSZWFkUGVuZGluZ1Jl
cXVlc3RzKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgbV9zdHJlYW0ucmVsZWFzZVJlYWRlcigpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRkMmZiNTNkNTExMGIyZDExNmE1
Mzc1ZWRjNjI4MzVmMzEwNDliOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgUmVhZGFibGVTdHJlYW1SZWFkZXJfaAotI2RlZmluZSBSZWFkYWJsZVN0cmVh
bVJlYWRlcl9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgotI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL1JlZi5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotLy8gUmVhZGFibGVTdHJlYW1SZWFkZXIgaW1w
bGVtZW50cyBhY2Nlc3MgdG8gUmVhZGFibGVTdHJlYW0gZnJvbSBKYXZhU2NyaXB0LgotLy8gSXQg
YmFzaWNhbGx5IGFsbG93cyBhY2Nlc3MgdG8gdGhlIFJlYWRhYmxlU3RyZWFtIGlmZiB0aGUgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2UgaXMgdGhlIGFjdGl2ZSByZWFkZXIKLS8vIG9mIHRo
ZSBSZWFkYWJsZVN0cmVhbS4KLS8vIE1vc3Qgb2YgdGhpcyBoYW5kbGluZyBpcyBoYXBwZW5pbmcg
aW4gdGhlIGN1c3RvbSBKUyBiaW5kaW5nIG9mIFJlYWRhYmxlU3RyZWFtUmVhZGVyLgotLy8gU2Vl
IGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcvI3JlYWRlci1jbGFzcyBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KLWNsYXNzIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHsKLXB1YmxpYzoKLSAgICBS
ZWFkYWJsZVN0cmVhbVJlYWRlcihSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQotICAgICAgICA6IG1f
c3RyZWFtKHN0cmVhbSkgeyB9Ci0KLSAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUsIFJlYWRh
YmxlU3RyZWFtOjpDYW5jZWxQcm9taXNlJiYpOwotICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3Ry
ZWFtOjpDbG9zZWRQcm9taXNlJiYpOwotICAgIHZvaWQgcmVhZChSZWFkYWJsZVN0cmVhbTo6UmVh
ZFByb21pc2UmJik7Ci0gICAgdm9pZCByZWxlYXNlTG9jayhFeGNlcHRpb25Db2RlJik7Ci0KLSAg
ICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBtX3N0
cmVhbS5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVhZGFibGVTdHJlYW0mIG1fc3RyZWFt
OwotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJlYWRhYmxlU3RyZWFtX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWFmZTI1ZGI1OWZkYmFkNzE5
YWM5NDIwY2VkOGE0ZjhmYmNhYTI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FO
T04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCi0gICAgQ3VzdG9tQ29uc3Ry
dWN0b3IoYW55IHByb3BlcnRpZXMpLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIFNraXBW
VGFibGVWYWxpZGF0aW9uCi1dIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbVJlYWRlciB7Ci0gICAg
UHJvbWlzZSByZWFkKCk7Ci0gICAgUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBhbnkgcmVhc29uKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbGVhc2VM
b2NrKCk7Ci0KLSAgICBbQ3VzdG9tR2V0dGVyLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBQcm9taXNlIGNsb3NlZDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IGQyOGU1ZDcwZTJiZWYzNDhiZDc5NzNhNmE5OGM0NGI0MjhmMGRiYTkuLjJjN2YzOThhOTA3MjFm
NjcyZmVjNjZhNGIxZWZmYWFlNmEzODMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC02MTcsOCArNjE3LDYgQEAgbGlzdChSRU1PVkVfSVRFTSBXZWJDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NUGFubmVyTm9kZS5tbQogICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01Qb3BTdGF0ZUV2ZW50Lm1tCiAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTVJhZGlvTm9kZUxpc3QubW0KLSAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NUmVhZGFibGVTdHJlYW0ubW0KLSAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NUmVhZGFibGVTdHJlYW1SZWFkZXIubW0KICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NU2NyaXB0UHJvY2Vzc29yTm9kZS5tbQog
ICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01TY3JpcHRQcm9maWxlLm1tCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTVNjcmlwdFByb2ZpbGVOb2RlLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCAzM2RmYjBkZTA4ZTYwMDg2ZmY0YWRiYTFjOTkwMDEwNGIwNDY2ZDI2Li43ZGNlNWM5ZWM5NGNm
MGY0NzM1ODc0NzI2Y2Y5YmMxYjZlNDg1MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTM5NDYsNDggKzM5NDYsNiBAQAogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU1JlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
Y3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZp
eHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZm
aXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWN0LmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC02ODE3LDgg
KzY3NzUsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRp
b25zXE5vdGlmaWNhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9iYWxTY29wZU5v
dGlmaWNhdGlvbnMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xz
dHJlYW1zXFJlYWRhYmxlU3RyZWFtLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXENoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIiAvPgpAQCAtMTg1NDgsNjIgKzE4NTA0LDYg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3Rv
bS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcUmVhZGFibGVKU1N0cmVhbS5jcHAiPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMjAwNzMsOSArMTk5NzMsNiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmFkaW9Ob2RlTGlz
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUmFuZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU1JhbmdlRXhjZXB0aW9uLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbS5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVjdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU1JHQkNvbG9yLmgiIC8+CkBAIC0yMDU5Nyw5ICsyMDQ5NCw2IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFs
U2NvcGVOb3RpZmljYXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXHBsdWdpbnNcUGx1Z2luUmVwbGFjZW1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xDb3VudFF1ZXVpbmdTdHJhdGVneS5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0
cmVhbXNcUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9u
RGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFz
ZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGZlNGE3OGQ5YjIy
ZWI4ODM3ZjM0MmRjOGI5NGIwYjZkM2VjZWViYWUuLmVmMjI5NjRjNWM1MGU1ODEzN2RiZGQwMjAy
YTUwOGZmN2I2MzE4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTM0LDkgKzM0LDYgQEAKICAgICA8Rmls
dGVyIEluY2x1ZGU9Ik1vZHVsZXNcbm90aWZpY2F0aW9ucyI+CiAgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57YTU5NWZmY2YtZmEyMi00OGE5LTkxYWQtYzUyOGE3NWE2MmU1fTwvVW5pcXVlSWRlbnRp
Zmllcj4KICAgICA8L0ZpbHRlcj4KLSAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcc3RyZWFt
cyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZDY3YmE1YmQtNjU3NC00MmYzLTlkYTMtNTVm
NTUwNzQ3ODYzfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVy
IEluY2x1ZGU9Ik1vZHVsZXNcd2ViZGF0YWJhc2UiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezVlMGU5NTgyLWI0YjQtNDUyZC1hNmRlLTdjNmIzMWY2MTRlN308L1VuaXF1ZUlkZW50aWZpZXI+
CiAgICAgPC9GaWx0ZXI+CkBAIC00NjgsMTIgKzQ2NSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRp
b25zLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcbm90aWZpY2F0aW9uczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJl
YW1zXFJlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcc3RyZWFtczwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1v
ZHVsZXNcc3RyZWFtczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAi
PgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC00NDE5LDE4ICs0NDEwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiPgogICAgICAgPEZpbHRl
cj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAiPgotICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFJlYWRhYmxlSlNTdHJlYW0uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTU3MDQsMTUgKzU2ODMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTUmFuZ2VFeGNlcHRpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZl
ZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAg
ICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVy
PkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWN0LmNwcCI+CiAgICAgICA8
RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzY0
OCwxNSArMTM2MTgsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJj
ZXNcSlNXb3JrZXJOYXZpZ2F0b3IuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNSZWFkYWJsZVN0cmVhbS5oIj4KLSAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTWE1MSHR0cFJlcXVlc3QuaCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNTIyOSwxNSArMTUx
OTAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXENvdW50
UXVldWluZ1N0cmF0ZWd5LmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
c3RyZWFtc1xSZWFkYWJsZVN0cmVhbS5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1z
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiPgotICAgICAgPEZpbHRl
cj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbVJlYWRlci5oIj4K
LSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xzdHJlYW1zPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBdHRhY2htZW50RWxlbWVudC5o
Ij4KICAgICAgIDxGaWx0ZXI+aHRtbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3
NjhkNTY1YjYwMGM3NjAzNjk2NjJhYjJhZDRmOWI2ZDBlYzc2MDkuLjJhNzgxM2YzMWE5ZWNiMjY5
NDU3N2YzZmFlZGU4YzhjZGFhMDI2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzcsNyArMTQ3Nyw2IEBACiAJCTQwRUNB
RTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNE
T01FcnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVD
QUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CiAJCTQxMEI3RTcy
MTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwotCQk0MTE4OUVGOTFBRDgyNzM3
MDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExODlFRjgxQUQ4MjMzQzAw
QjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
NDEyMzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAw
MUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBC
Q0NGQ0EgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1
IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87
IH07CkBAIC0xNTA5LDE2ICsxNTA4LDggQEAKIAkJNDE4QTA2RDExMzNDMDRENTAwQ0QzNzlDIC8q
IEV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNw
cCAqLzsgfTsKIAkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4
MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThG
ODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1
IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKLQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1
IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJl
YW0uY3BwICovOyB9OwotCQk0MTk4QkRGMTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0
cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLzsgfTsKIAkJNDE5
QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0
RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBE
NjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5r
U3RhdGUuaCAqLzsgfTsKLQkJNDE5RkFGQUUxQUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUZBRkFCMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAg
Ki87IH07Ci0JCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFG
QUMxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IH07Ci0JCTQx
OUZBRkIxMUFCQUJERUQwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkIw
MUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLzsg
fTsKLQkJNDFBMDIzRUYxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0VCMUEzOURC
NzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTQxQTAyM0YwMUEzOURC
N0EwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDIzRUMxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxl
U3RyZWFtLmggKi87IH07Ci0JCTQxQTAyM0Y2MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxl
U3RyZWFtQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQTAyM0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAq
LzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVh
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1
OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0
MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1
RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNDgsOCArMjMzOSw2IEBACiAJCTY1RkQ0NjY2MTlC
NTk2RjYwMDFFMkI0RCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODZGRTNEMTlC
NTQ4QkQwMDVDM0M4MiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSAq
LzsgfTsKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwICovOyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0
aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZDNEM5NkRFMUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQTFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQk2QzRDOTZERjFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQk2QzYzODg5NUE5
NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VF
NTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1
MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4
Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CiAJCTZD
RERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlB
NDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjU2NiwxMCArMjU1NSw2IEBACiAJCTdDNDhBNkQwMTkx
QzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdl
YktpdE5hbWVzcGFjZS5jcHAgKi87IH07CiAJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBX
ZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNDhBNkNGMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLzsg
fTsKIAkJN0M0OTAyQTIxOEI4MjVGODAwN0Q5Mjk4IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODU5ODlEQ0EwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5o
ICovOyB9OwotCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTdDNEM5
NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbS5oICovOyB9OwotCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAgKi87IH07Ci0JCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVh
bVJlYWRlci5oICovOyB9OwogCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vy
dmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNEVERDc0MUE3QjYw
NzgwMDE5OEM0RCAvKiBGb250Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1t
ICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0
OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CkBAIC04Njg0
LDkgKzg2NjksNiBAQAogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTE4OUVGNjFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTE4OUVGNzFBRDgy
MzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MTE4OUVGODFBRDgyMzNDMDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyog
RXZlbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzNDEyNDQwNTQ4MDAz
MjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
NzIwLDE4ICs4NzAyLDggQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlz
cGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERp
c3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMjBGRjk1
N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyog
UmVhZGFibGVKU1N0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWFkYWJsZUpTU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5
OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVKU1N0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREQxNjg1MzI5OTAw
RDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlzaXRlZExpbmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTlGQUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIg
LyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUEwMjNFQzFBMzlEQjc5MDBGNzIyQ0Yg
LyogUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
ZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRUQxQTM5
REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTAy
M0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcg
LyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVkaWNhdGVkV29ya2VyVGhy
ZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVF
OERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05NjY1LDggKzk2MzcsNiBAQAogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tF
eGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5
NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRCMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uT3ZlcnNldFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTE2LDEwICs5ODg2LDYgQEAKIAkJN0M0
OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFt
ZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5hbWVzcGFj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZEMjE5MUM5RDhFMDAwMjY2
NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNS
ZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2
RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2REIx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vy
dmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2Vydmlj
ZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0RURENzMxQTdCNjA3ODAw
MTk4QzREIC8qIEZvbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZvbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJE
NDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNjEyMiwxNCArMTYwODgsNiBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJMTQ4QjRGRkQxQjY5MDRBQTAwQzk1NEU0IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5Lmgg
Ki8sCiAJCQkJMTQ4QjRGRkYxQjY5MDRDNTAwQzk1NEU0IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5
LmlkbCAqLywKLQkJCQk0MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0u
Y3BwICovLAotCQkJCTQxQTAyM0VDMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5o
ICovLAotCQkJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwg
Ki8sCi0JCQkJNDExODlFRjYxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5oICovLAotCQkJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuaWRsICovLAotCQkJCTQxOUZBRkFCMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAgKi8sCi0JCQkJNDE5RkFGQUMxQUJBQkNENTAwNUI4MjhCIC8q
IFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8sCi0JCQkJNDE5RkFGQUQxQUJBQkNENTAwNUI4MjhC
IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3RyZWFt
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjEzNywxMiArMTYwOTUsNiBAQAog
CQk0MUEwMjNGQTFBMzlGMTNBMDBGNzIyQ0YgLyogU3RyZWFtcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTUmVhZGFibGVTdHJlYW0uY3BwICovLAotCQkJCTdDNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAv
KiBKU1JlYWRhYmxlU3RyZWFtLmggKi8sCi0JCQkJNkM0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKLQkJCQk2QzRDOTZEQjFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLywKLQkJCQk3QzRDOTZE
QTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8sCi0JCQkJ
N0M0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gU3RyZWFtczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yMTM4OSwxMSArMjEzNDEsOCBAQAogCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBK
U011dGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQk5M0I3MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyog
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAqLywKIAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5
RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggKi8sCi0JCQkJNDExODlFRjgxQUQ4
MjMzQzAwQjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLywK
IAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZS5oICovLAotCQkJCTQxOThCREVFMUE4MTEyMzYwMEIyMkZCNSAvKiBSZWFkYWJsZUpT
U3RyZWFtLmNwcCAqLywKLQkJCQk0MTk4QkRFRjFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVK
U1N0cmVhbS5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRB
Y3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRB
Y3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcCAqLywKQEAgLTIxNTY0LDggKzIxNTEzLDYgQEAKIAkJCQlGREJEMURGQjE2
N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkQ4
QUE2M0QxNjk1MTRBNzAwRDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJ
QTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8s
Ci0JCQkJNDFBMDIzRjMxQTM5REJDQjAwRjcyMkNGIC8qIEpTUmVhZGFibGVTdHJlYW1DdXN0b20u
Y3BwICovLAotCQkJCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ3VzdG9tLmNwcCAqLywKIAkJCQk0OTk4QUVEMzEzRkM0MTdGMDA5MEIxQUEgLyogSlNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJNEFFMEJGODgx
ODM2MDgzMTAwRjM4NTJEIC8qIEpTUlRDSWNlQ2FuZGlkYXRlQ3VzdG9tLmNwcCAqLywKIAkJCQkw
N0NBMTIwRDE4MkQ2N0Q4MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAg
Ki8sCkBAIC0yNTY3Miw5ICsyNTYxOSw2IEBACiAJCQkJQjY1OEZGQTIxNTIyRUYzQTAwREQ1NTk1
IC8qIEpTUmFkaW9Ob2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDIwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUQyM0NBNTVEMEFCMEVB
QUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzRD
OTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRTJGMTIwQzFCNTgz
ODAwMjAyMzVGIC8qIEpTUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5OEFFQ0UxM0Y5RDZD
OTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNzREQTQ5MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2MzczLDkgKzI2MzE3LDYgQEAKIAkJCQlGNTVCM0RDRTEyNTFGMTJEMDAz
RUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFODRFOUUxMTc2
NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgy
N0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNDE5OEJERjExQTgxMTQzMTAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCBp
biBIZWFkZXJzICovLAotCQkJCTQxQTAyM0YwMUEzOURCN0EwMEY3MjJDRiAvKiBSZWFkYWJsZVN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5RkFGQUYxQUJBQkQwQzAwNUI4MjhCIC8qIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2
MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1
NzExQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRBNEY2NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MjY3LDEyICsyOTIwOCw2IEBACiAJCQkJ
QjY1OEZGQTExNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2NURGMzIwMTA5RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlEMjNDQTU1RjBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNS
ZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2QzRDOTZERTFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDExODlFRjkxQUQ4MjczNzAwQjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxQTAyM0Y2MUEzOURCQ0IwMEY3MjJDRiAv
KiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNEM5NkRF
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxOUZBRkIxMUFCQUJERUQwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkUyRjExMEMxQjU4MzcwMDIwMjM1
RiAvKiBKU1JlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5OEFFQ0QxM0Y5RDZDOTAwOTBC
MUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDk5OEFFRDQxM0ZDNDE3RjAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTkxMCw5ICsyOTg0NSw2IEBA
CiAJCQkJOTc4RDA3QkExNDVBMEYzQzAwOTY5MDhEIC8qIFJhbmdlRXhjZXB0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY1NUIzRENEMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTg0RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFz
dGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1
IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDIzRUYxQTM5
REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQx
OUZBRkFFMUFCQUJEMDgwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDMxNjAzQjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNUZDQzlGQzFCNERGN0Yy
MDBFNzIzMjYgLyogRE9NVVJMTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA4
ZDJlNTljNTVkYmEzN2UzZjBhM2I5ZGZhZDI0YWI4MGMxZjZmMWVhLi5hODU2YTg0NTdlMGI5MWE0
ZjA1NTBkNmM5ZmU5MTI0OTJmOTlkZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTEyMSwxMiArMTIxLDYgQEAKICNpbmNs
dWRlICJKU05vZGVPclN0cmluZy5jcHAiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcCIKICNpbmNsdWRlICJKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIgotI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3Rv
bS5jcHAiCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAiCi0jaW5jbHVkZSAi
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiUmVhZGFibGVKU1N0
cmVhbS5jcHAiCi0jZW5kaWYKICNpbmNsdWRlICJKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYTI5MGRkYzllNTgxYWNk
NjM0MzAxNzAwYmFmODI3Y2ExYTRlZmQwMi4uMjE5NTJhZWQ2YTZlZmU4NTAzYzRiZmM3OTNkNmYy
MjhkODgzNWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
KyNpbmNsdWRlIDxydW50aW1lL0pTUmVhZGFibGVTdHJlYW0uaD4KICNpbmNsdWRlIDxydW50aW1l
L01pY3JvdGFzay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTcxLDYgKzcy
LDEwIEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9N
V2luZG93U2hlbGwqIHNoZWxsKQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBzaGVsbCk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJ
KQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5S
ZWFkYWJsZVN0cmVhbSwgcmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcigpLCBEb250RW51bSk7Cisj
ZW5kaWYKKwogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5kb2N1bWVudCwganNOdWxs
KCksIERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT53aW5kb3csIG1fc2hlbGwsIERvbnREZWxldGUgfCBSZWFkT25seSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzgxN2UzM2M3Y2ZiZmJkOGY3MDIyMzc1NThkNzMwZjgwMzJiODBhZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAq
IENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKLQotI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlJlYWRh
YmxlSlNTdHJlYW0uaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hv
dWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Jl
YWRhYmxlU3RyZWFtQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4
ZDE2YjJmZWJlNzk4N2QyZGQ2NmY1Y2M4NjY1ZjVhN2MwZWU0YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAy
MDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCi0KLSNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotI2luY2x1
ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgotI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtOjpwaXBlVG8oRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIEpTVmFsdWUgZXJyb3IgPSBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInBpcGVU
byBpcyBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgZXJyb3IpOwotfQotCi1KU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW06OnBpcGVU
aHJvdWdoKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJwaXBlVGhyb3VnaCBpcyBub3QgaW1wbGVtZW50ZWQiKSk7
Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4M2RjZjY5ZmUyZDIyYzgwZmExMDQzYTk2ZmQzZjMwM2I4MWMxYzU0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyTzE1IENhbm9uIEluYy4gMjAxNQotICogQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuIDIwMTUKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJsZUpTU3RyZWFtX2gK
LSNkZWZpbmUgUmVhZGFibGVKU1N0cmVhbV9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0K
LSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0j
aW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1Zh
bHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Qcml2YXRlTmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBK
U0Z1bmN0aW9uOwotY2xhc3MgSlNQcm9taXNlOwotfQotICAgIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLWNsYXNzIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcjsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotc3RydWN0IFJlYWRhYmxlSlNT
dHJlYW1WYWx1ZSB7Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiB2YWx1ZTsKLSAgICBk
b3VibGUgc2l6ZTsKLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3MgUmVhZGFibGVFbnF1ZXVpbmdTdHJl
YW08UmVhZGFibGVKU1N0cmVhbVZhbHVlPiA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wdWJs
aWM6Ci0gICAgZG91YmxlIGRlc2lyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoV2F0ZXJN
YXJrIC0gbV90b3RhbFF1ZXVlU2l6ZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVhZGFibGVFbnF1
ZXVpbmdTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91YmxlIGhpZ2hX
YXRlck1hcmspCi0gICAgICAgIDogUmVhZGFibGVTdHJlYW0oY29udGV4dCkKLSAgICAgICAgLCBt
X2hpZ2hXYXRlck1hcmsoaGlnaFdhdGVyTWFyaykgeyB9Ci0KLSAgICB2b2lkIGVucXVldWVDaHVu
ayhSZWFkYWJsZUpTU3RyZWFtVmFsdWUmJik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IGNsZWFyVmFsdWVzKCkgb3ZlcnJpZGUgeyBtX3F1ZXVlLmNsZWFyKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNp
emUoKSA8PSAwOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9xdWV1ZS5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFk
KCkgb3ZlcnJpZGU7Ci0KLSAgICBEZXF1ZTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+IG1fcXVldWU7
Ci0gICAgZG91YmxlIG1fdG90YWxRdWV1ZVNpemUgeyAwIH07Ci0gICAgZG91YmxlIG1faGlnaFdh
dGVyTWFyazsKLX07Ci0KLWNsYXNzIFJlYWRhYmxlSlNTdHJlYW0gZmluYWwgOiBwdWJsaWMgUmVh
ZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0cmVhbVZhbHVlPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUsIGNvbnN0IERpY3Rpb25hcnkmKTsKLQotICAgIEpTQzo6SlNWYWx1ZSBq
c0NvbnRyb2xsZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAgIHZv
aWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9Ci0KLSAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotICAgIHZvaWQgZXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpT
U3RyZWFtKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCosIGRvdWJsZSwgSlNDOjpKU0Z1
bmN0aW9uKik7Ci0KLSAgICB2b2lkIGRvU3RhcnQoSlNDOjpFeGVjU3RhdGUmKTsKLQotICAgIEpT
Qzo6SlNQcm9taXNlKiBpbnZva2UoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiwgSlNDOjpK
U1ZhbHVlIHBhcmFtZXRlcik7Ci0gICAgdm9pZCBzdG9yZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0
ZSYpOwotCi0gICAgdmlydHVhbCBib29sIGRvUHVsbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBkb0NhbmNlbChKU0M6OkpTVmFsdWUpIG92ZXJyaWRlOwotCi0gICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCgpOwotCi0gICAgZG91YmxlIHJldHJpZXZlQ2h1bmtTaXplKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIGNvbnNpZGVyIG5vdCB1c2luZyBKU0M6OlN0cm9uZywgc2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyNzgKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IG1fZXJyb3I7Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBtX2Vycm9yRnVu
Y3Rpb247Ci0KLSAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKLSAgICBK
U0M6OlN0cm9uZzxKU0M6OkpTRnVuY3Rpb24+IG1fc2l6ZUZ1bmN0aW9uOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jZW5k
aWYgLy8gUmVhZGFibGVKU1N0cmVhbV9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTc1YzQ4ZWU1NmE0NjMzMmYyMGQyNjkx
ZWFiMGYwNTExODA5Y2MxYy4uMDI1NjA4N2VkODAzZGU1YTRhNzEzNTBjYzhiMWVkNTRjN2FlYjFi
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA4LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTWlncmF0ZSBzdHJlYW1zIEFQSSB0
byBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NzA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
YmFzZWQgZXhwZWN0YXRpb25zIGFzIHNvbWUgdGVzdHMgYXJlIG5vdyBwYXNzaW5nLgorCisgICAg
ICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA4LTE4ICBY
YWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1N0cmVhbXMgQVBJXSBVcGRhdGUgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgbGF0ZXN0IHNwZWMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CmluZGV4IDM3MzU3N2Vi
OTgyMWQyMDc1NGRlODc3MWE2MGZhZTUyMzhjOWI1ZjYuLjhkZmIzM2Q0YzJhOTM5OGU1MTZjYWJk
OWQ1M2M2NjAzODVjNjYzNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVj
dGVkLnR4dApAQCAtMSw5ICsxLDkgQEAKIAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVh
bVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLUZBSUwgUmVhZGFibGVT
dHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlz
IGFuZCBpdHMgYXJndW1lbnRzIENhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW0ucGlwZVRocm91
Z2ggb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5waXBlVGhyb3VnaCB3b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRz
IGFyZ3VtZW50cyAKIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayBvbiBpdHMgYXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlw
ZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRl
ck5hbWUpLmdldCcpCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggZTYxZjdk
NmY1ODU5NDEzOWFmYWM3ODZmYTNiNWYzNTRmZDVlMDhiMy4uOGRkYjFjZWQ1MzVmZGRlYTliYjYx
M2RiZDRmODk5OWQzMWIwZDViOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDExIEBACiAKIFBBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBj
YW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGlu
c3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0
X2FycmF5X2VxdWFsczogc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhvZHMgbGVuZ3Ro
cyBkaWZmZXIsIGV4cGVjdGVkIDcgZ290IDYKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2Vz
IHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyAKIFBBU1MgUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQg
YXJndW1lbnRzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRp
YWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0
cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgCi1GQUlMIFJl
YWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFt
ZXRlcnMgYXNzZXJ0X2ZhbHNlOiBjbG9zZSBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0
ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNh
bGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycyAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc3Rh
cnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUgCiBQQVNTIFJlYWRh
YmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90
b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKaW5kZXggMjY0MGNkMjBhMmJl
MzBhMDY0NWEwMDdjMTY4NGI1ZmI4NjBjNTg3Ni4uZDVhNGM1ZDBmMjMzYTVkYjgwNjA0MzQ4MmNl
ZTRmMmZkYTI2N2JjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIFBBU1MgQ2FuIGdldCB0
aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKIFBBU1MgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFt
IG9iamVjdCBhcyBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2Vz
IHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgNSBnb3QgNAorUEFTUyBSZWFkYWJsZVN0
cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9w
ZXJ0aWVzIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyBy
ZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxy
ZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKIFBBU1MgR2V0dGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVh
bSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLXRlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dAppbmRleCBlNzVm
MjZmMTEwY2IyZDdmYjgxNGFlYzRjMzUzMDIzNjkyZmI3NWIyLi5hMDMyNDM4N2Q3YWVjYzY3NGM3
ODdmMGUzYzlkZjZlZDg3MDUwYjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwxMiBAQAogCi1GQUlMIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFi
bGVTdHJlYW1zIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50
ZWUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUg
YWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUg
b3RoZXIgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScg
aXMgdW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQg
YmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJh
bmNoZXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScg
aXMgdW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFu
Y2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQotRkFJTCBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDEgcnMu
dGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZp
bmVkKQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVz
IHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgcnMudGVl
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVk
KQotRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmln
aW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyBy
cy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRl
ZmluZWQpCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwg
c2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVs
eSBlcnJvciB0aGUgYnJhbmNoZXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRl
ZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyBhc3NlcnRf
dHJ1ZTogcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBhbiBhcnJheSBleHBlY3RlZCB0cnVlIGdvdCBm
YWxzZQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQg
b25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYnJhbmNoMS5nZXRSZWFkZXInKQorRkFJ
TCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVh
Y2ggYnJhbmNoIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gx
LmdldFJlYWRlcicpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBz
b3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmdldFJlYWRlcicpCitGQUlMIFJlYWRhYmxl
U3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNo
MiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYnJhbmNoMS5jYW5jZWwn
KQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBu
b3QgaW1wYWN0IGJyYW5jaDEgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J2JyYW5jaDIuY2FuY2VsJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcg
Ym90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFu
IGFycmF5IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmNh
bmNlbCcpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhl
IG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5j
aGVzIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFuY2gxLmNhbmNl
bCcpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hv
dWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnYnJhbmNoMS5nZXRSZWFkZXInKQorRkFJTCBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3Ig
dGhlIGJyYW5jaGVzIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdicmFu
Y2gxLmdldFJlYWRlcicpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKaW5kZXggNzMwM2JjM2ViYTc4ZjcwMzVmZDZm
NjdlZjk1ZjYxZDIwZGJlZGFhNi4uNTAxZjdmNTIzMmQ3MjQ3ZmVhMjE1NjdlZTRjODFhMTIzNDFj
MzZhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRl
bXBsYXRlZC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAKIFBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLUZBSUwgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBo
YXMgYSB0ZWUgbWV0aG9kIGV4cGVjdGVkICJmdW5jdGlvbiIgYnV0IGdvdCAidW5kZWZpbmVkIgor
UEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAog
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZW1wdHkpIHJlYWRlciAKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBh
bmQgcHJvcGVydGllcyAKIFBBU1MgbG9ja2VkIHNob3VsZCBiZSB0cnVlIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262255</attachid>
            <date>2015-10-01 08:52:27 -0700</date>
            <delta_ts>2015-10-02 03:08:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147092-20151001125200.patch</filename>
            <type>text/plain</type>
            <size>126608</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyZGNiMTViYTU5MWM2
YmFjM2NlZDc3YzZjZTIyYWYzZWE4MTQ3ZC4uYWI1YjZiYThhZTg1OWI4MzQ1YWMyNDBiMDM2MDVm
ZmEwMGQyMDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4IEBACiAyMDE1LTEwLTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgTWlncmF0
ZSBzdHJlYW1zIEFQSSB0byBKUyBCdWlsdGlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50YXRpb24g
ZnJvbSBDKysgdG8gSlMgQnVpbHRpbnMuCisgICAgICAgIENyZWF0ZWQgc3BlY2lmaWMgcHJpdmF0
ZSBjb25zdHJ1Y3RvcnMgZm9yIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGFuZCBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuCisgICAgICAgIEFkZGVkIHRoZXNlIGNvbnN0cnVjdG9ycyB0byAgSlNET01X
aW5kb3dCYXNlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChzdHJhdGVneS5zaXplKToKKyAg
ICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChjYW5jZWwpOgorICAg
ICAgICAoZ2V0UmVhZGVyKToKKyAgICAgICAgKHBpcGVUbyk6CisgICAgICAgICh0ZWUpOgorICAg
ICAgICAobG9ja2VkKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5qczogQWRkZWQuCisgICAgICAgIChlbnF1ZXVlKToKKyAgICAgICAgKGVycm9yKToK
KyAgICAgICAgKGNsb3NlKToKKyAgICAgICAgKGRlc2lyZWRTaXplKToKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChwcml2YXRl
SW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKHByaXZhdGVJbml0aWFs
aXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKGlzUmVhZGFibGVTdHJlYW0p
OgorICAgICAgICAoaXNSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChpc1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChlcnJvclJlYWRhYmxlU3RyZWFtKToKKyAgICAg
ICAgKHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwpOgorICAgICAgICAoZ2V0UmVhZGFibGVTdHJl
YW1EZXNpcmVkU2l6ZSk6CisgICAgICAgIChyZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXIpOgor
ICAgICAgICAoY2FuY2VsUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoZmluaXNoQ2xvc2luZ1Jl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAo
Y2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChlbnF1ZXVlSW5SZWFkYWJsZVN0
cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAg
KGludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JOb29wKToKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMuCisgICAgICAgIChjYW5j
ZWwpOgorICAgICAgICAocmVhZCk6CisgICAgICAgIChyZWxlYXNlTG9jayk6CisgICAgICAgIChj
bG9zZWQpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ckN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OkpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRl
clByaXZhdGVDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRl
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29yZUJ1aWx0aW5OYW1lczo6V2ViQ29yZUJ1aWx0aW5OYW1lcyk6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6V2ViQ29yZUpTQ2xpZW50RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpidWlsdGluTmFtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6cmVhZGFibGVTdHJlYW1Db250cm9sbGVy
QnVpbHRpbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6cmVhZGFi
bGVTdHJlYW1SZWFkZXJCdWlsdGlucyk6CisKKzIwMTUtMTAtMDEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKwogICAgICAgICBSZWZhY3RvciBiaW5kaW5nIGdl
bmVyYXRvciB0byBmYWN0b3IgSlMgRE9NIGNsYXNzIG1faW1wbCBoYW5kbGluZwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjYwCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOWUzNzZjY2ExYTQwMDE2ZWNkZDkxMmM4YjkxOWRkYjFmZDA0ZWFiYi4u
MDcyZDNhZWM5MTNlNTQ2YjU4NTIwNzA0OGNjODU4OWRlNGE3YjBmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTk3OSw5ICs5NzksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogICAgIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAogCi0gICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmNwcAotICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAK
LQogICAgIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKICAgICBNb2R1
bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwCiAKQEAgLTEyMDgsMTMgKzEyMDUsMTEgQEAgc2V0
KFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCiAgICAg
YmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
UlRDSWNlQ2FuZGlkYXRlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDUGVlckNvbm5l
Y3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSVENTZXNzaW9uRGVzY3JpcHRpb25D
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcAot
ICAgIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAotICAg
IGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlv
bkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAKQEAgLTEy
NDEsNyArMTIzNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1hN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAotICAgIGJp
bmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCiAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzM1NSw3ICszMzQ5LDkgQEAg
c2V0KFdFQkNPUkVfSlNfQlVJTFRJTlMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVh
bXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKICAgICAke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKyAgICAke1dFQkNP
UkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKICkKIAogV0VC
S0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAwZWY1NzkyNjJkMTY2MGE5M2Q2NjA3MWMzOWMzNjA5ZTg3ZGEyZWZhLi43
ZTNjNDA5YjlkYTAwZTUzMmM4NDkzYmQ3NTE0OWQxOThmZDA0ZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNTMsNyArMTI1Myw5IEBAIFdFQkNPUkVfSlNfQlVJTFRJTlMg
PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3Ry
YXRlZ3kuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmpzIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzLmpzIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVJlYWRlci5qcyBcCiAjCiAKIGFsbCA6ICQoV0VCQ09SRV9KU19CVUlMVElOUzolLmpzPSVC
dWlsdGlucy5jcHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlZGViYTExMDMy
NDA5NThjM2JhNTRkNjE2NmZlMTBhMjI3MTgwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8g
YmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBD
QU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5o
IgotCi0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bVJlYWRlci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURFRklORV9ERUJVR19PTkxZ
X0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcmVhZGFibGVTdHJlYW1Db3VudGVy
LCAoIlJlYWRhYmxlU3RyZWFtIikpOwotCi1SZWZQdHI8UmVhZGFibGVTdHJlYW0+IFJlYWRhYmxl
U3RyZWFtOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUs
IGNvbnN0IERpY3Rpb25hcnkmIHN0cmF0ZWd5KQotewotICAgIHJldHVybiBSZWZQdHI8UmVhZGFi
bGVTdHJlYW0+KFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIHN0cmF0ZWd5
KSk7Ci19Ci0KLVJlYWRhYmxlU3RyZWFtOjpSZWFkYWJsZVN0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KCZz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQotewotI2lmbmRlZiBOREVCVUcKLSAgICByZWFkYWJsZVN0
cmVhbUNvdW50ZXIuaW5jcmVtZW50KCk7Ci0jZW5kaWYKLSAgICBzdXNwZW5kSWZOZWVkZWQoKTsK
LX0KLQotUmVhZGFibGVTdHJlYW06On5SZWFkYWJsZVN0cmVhbSgpCi17Ci0jaWZuZGVmIE5ERUJV
RwotICAgIHJlYWRhYmxlU3RyZWFtQ291bnRlci5kZWNyZW1lbnQoKTsKLSNlbmRpZgotfQotCi12
b2lkIFJlYWRhYmxlU3RyZWFtOjpjbGVhckNhbGxiYWNrcygpCi17Ci0gICAgbV9jbG9zZWRQcm9t
aXNlID0gTnVsbG9wdDsKLSAgICBtX3JlYWRSZXF1ZXN0cy5jbGVhcigpOwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKLXsKLSAgICBBU1NFUlQoIW1fY2xv
c2VSZXF1ZXN0ZWQpOwotICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpFcnJvcmVkKTsKLQot
ICAgIG1fY2xvc2VSZXF1ZXN0ZWQgPSB0cnVlOwotCi0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OlJlYWRhYmxlIHx8IGhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBjbG9zZSgpOwot
fQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZSgpCi17Ci0gICAgbV9zdGF0ZSA9IFN0YXRl
OjpDbG9zZWQ7Ci0gICAgcmVsZWFzZVJlYWRlcigpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFt
OjpyZWxlYXNlUmVhZGVyKCkKLXsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1
ZXN0cykKLSAgICAgICAgcmVxdWVzdC5yZXNvbHZlRW5kKCk7Ci0gICAgaWYgKG1fcmVhZGVyKQot
ICAgICAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBlbmQoV1RGOjptb3ZlKG1fcmVhZGVyKSk7Ci0K
LSAgICBpZiAobV9jbG9zZWRQcm9taXNlKQotICAgICAgICBtX2Nsb3NlZFByb21pc2UudmFsdWUo
KS5yZXNvbHZlKG51bGxwdHIpOwotICAgIGNsZWFyQ2FsbGJhY2tzKCk7Ci19Ci0KLXZvaWQgUmVh
ZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKLXsKLSAgICBpZiAobV9zdGF0ZSAh
PSBTdGF0ZTo6UmVhZGFibGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNsZWFyVmFsdWVzKCk7
Ci0KLSAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9yZWQ7Ci0KLSAgICBpZiAoIW1fcmVhZGVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBKU0M6OkpTVmFsdWUgZXJyb3IgPSB0aGlzLT5lcnJvcigp
OwotICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVhZFJlcXVlc3RzKQotICAgICAgICByZXF1
ZXN0LnJlamVjdChlcnJvcik7Ci0gICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92
ZShtX3JlYWRlcikpOwotCi0gICAgaWYgKG1fY2xvc2VkUHJvbWlzZSkKLSAgICAgICAgbV9jbG9z
ZWRQcm9taXNlLnZhbHVlKCkucmVqZWN0KGVycm9yKTsKLSAgICBjbGVhckNhbGxiYWNrcygpOwot
fQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCi17Ci0gICAgbV9pc1N0YXJ0ZWQgPSB0
cnVlOwotICAgIHB1bGwoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6cHVsbCgpCi17Ci0g
ICAgaWYgKCFtX2lzU3RhcnRlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6RXJyb3JlZCB8fCBtX2Nsb3NlUmVxdWVzdGVkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAobV9yZWFkUmVxdWVzdHMuaXNFbXB0eSgpICYmIGhhc0Vub3VnaFZhbHVlcygp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1B1bGxpbmcpIHsKLSAgICAgICAgbV9z
aG91bGRQdWxsQWdhaW4gPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9p
c1B1bGxpbmcgPSB0cnVlOwotICAgIGlmIChkb1B1bGwoKSkgewotICAgICAgICBSZWZQdHI8UmVh
ZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSh0aGlzKTsKLSAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU3RyZWFtXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewotICAgICAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5maW5pc2hQdWxsaW5nKCk7
Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6ZmluaXNoUHVs
bGluZygpCi17Ci0gICAgbV9pc1B1bGxpbmcgPSBmYWxzZTsKLSAgICBpZiAobV9zaG91bGRQdWxs
QWdhaW4pIHsKLSAgICAgICAgbV9zaG91bGRQdWxsQWdhaW4gPSBmYWxzZTsKLSAgICAgICAgcHVs
bCgpOwotICAgIH0KLX0KLQotUmVhZGFibGVTdHJlYW1SZWFkZXIqIFJlYWRhYmxlU3RyZWFtOjpn
ZXRSZWFkZXIoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKGxvY2tlZCgpKSB7Ci0gICAg
ICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAg
QVNTRVJUKCFtX3JlYWRlcik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1S
ZWFkZXI+IG5ld1JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZGFibGVTdHJlYW1SZWFkZXI+
KCp0aGlzKTsKLSAgICBSZWFkYWJsZVN0cmVhbVJlYWRlciYgcmVhZGVyID0gKm5ld1JlYWRlci5n
ZXQoKTsKLQotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJsZSkgewotICAgICAgICBt
X3JlYWRlciA9IFdURjo6bW92ZShuZXdSZWFkZXIpOwotICAgICAgICByZXR1cm4gJnJlYWRlcjsK
LSAgICB9Ci0KLSAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBlbmQoV1RGOjptb3ZlKG5ld1JlYWRl
cikpOwotICAgIHJldHVybiAmcmVhZGVyOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjYW5j
ZWwoSlNDOjpKU1ZhbHVlIHJlYXNvbiwgQ2FuY2VsUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGlmIChsb2NrZWQoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJv
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYW5jZWxOb0NoZWNrKHJlYXNvbiwgV1RG
Ojptb3ZlKHByb21pc2UpKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2FuY2VsTm9DaGVj
ayhKU0M6OkpTVmFsdWUgcmVhc29uLCBDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShu
dWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6RXJyb3JlZCkgewotICAgICAgICBwcm9taXNlLnJlamVjdChlcnJvcigpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGUpOwot
Ci0gICAgY2xlYXJWYWx1ZXMoKTsKLQotICAgIG1fY2FuY2VsUHJvbWlzZSA9IFdURjo6bW92ZShw
cm9taXNlKTsKLQotICAgIGNsb3NlKCk7Ci0KLSAgICBpZiAoZG9DYW5jZWwocmVhc29uKSkKLSAg
ICAgICAgZXJyb3IoKSA/IG5vdGlmeUNhbmNlbEZhaWxlZCgpIDogbm90aWZ5Q2FuY2VsU3VjY2Vl
ZGVkKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06Om5vdGlmeUNhbmNlbFN1Y2NlZWRlZCgp
Ci17Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCk7Ci0gICAgQVNTRVJUKG1f
Y2FuY2VsUHJvbWlzZSk7Ci0KLSAgICBtX2NhbmNlbFByb21pc2UudmFsdWUoKS5yZXNvbHZlKG51
bGxwdHIpOwotICAgIG1fY2FuY2VsUHJvbWlzZSA9IE51bGxvcHQ7Ci19Ci0KLXZvaWQgUmVhZGFi
bGVTdHJlYW06Om5vdGlmeUNhbmNlbEZhaWxlZCgpCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OkNsb3NlZCk7Ci0gICAgQVNTRVJUKG1fY2FuY2VsUHJvbWlzZSk7Ci0KLSAgICBtX2Nh
bmNlbFByb21pc2UudmFsdWUoKS5yZWplY3QoZXJyb3IoKSk7Ci0gICAgbV9jYW5jZWxQcm9taXNl
ID0gTnVsbG9wdDsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFByb21p
c2UmJiBwcm9taXNlKQotewotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKLSAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAgIHByb21pc2UucmVq
ZWN0KGVycm9yKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY2xvc2VkUHJvbWlz
ZSA9IFdURjo6bW92ZShwcm9taXNlKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVhZChS
ZWFkUHJvbWlzZSYmIHJlYWRQcm9taXNlKQotewotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
bG9zZWQpIHsKLSAgICAgICAgcmVhZFByb21pc2UucmVzb2x2ZUVuZCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAg
IHJlYWRQcm9taXNlLnJlamVjdChlcnJvcigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoaGFzVmFsdWUoKSkgewotICAgICAgICByZWFkUHJvbWlzZS5yZXNvbHZlKHJlYWQoKSk7
Ci0gICAgICAgIGlmICghbV9jbG9zZVJlcXVlc3RlZCkKLSAgICAgICAgICAgIHB1bGwoKTsKLSAg
ICAgICAgZWxzZSBpZiAoIWhhc1ZhbHVlKCkpCi0gICAgICAgICAgICBjbG9zZSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1fcmVhZFJlcXVlc3RzLmFwcGVuZChXVEY6Om1vdmUocmVh
ZFByb21pc2UpKTsKLSAgICBwdWxsKCk7Ci19Ci0KLWJvb2wgUmVhZGFibGVTdHJlYW06OnJlc29s
dmVSZWFkQ2FsbGJhY2soSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChtX3JlYWRSZXF1
ZXN0cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fcmVhZFJlcXVl
c3RzLnRha2VGaXJzdCgpLnJlc29sdmUodmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1j
b25zdCBjaGFyKiBSZWFkYWJsZVN0cmVhbTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICJSZWFkYWJsZVN0cmVhbSI7Ci19Ci0KLWJvb2wgUmVhZGFibGVTdHJlYW06
OmNhblN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgdHJ5IGFuZCBkbyBiZXR0ZXIgaGVyZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTc3YmE1ODllZTAyMTA1NzExOTVk
OWEzYTVhN2NiYTM1MGQxNjY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fu
b24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgUmVhZGFibGVTdHJlYW1faAotI2RlZmluZSBSZWFkYWJsZVN0cmVhbV9oCi0KLSNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNs
dWRlICJET01SZXF1ZXN0U3RhdGUuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKLSNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgotI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgSlNWYWx1ZTsKLX0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBEaWN0aW9uYXJ5OwotY2xhc3MgUmVhZGFibGVTdHJlYW1SZWFkZXI7
Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi10eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwotCi0vLyBSZWFkYWJsZVN0cmVhbSBpbXBsZW1lbnRzIHRoZSBjb3JlIG9mIHRoZSBzdHJl
YW1zIEFQSSBSZWFkYWJsZVN0cmVhbSBmdW5jdGlvbmFsaXR5LgotLy8gSXQgaGFuZGxlcyBpbiBw
YXJ0aWN1bGFyIHRoZSBiYWNrcHJlc3N1cmUgYWNjb3JkaW5nIHRoZSBxdWV1ZSBzaXplLgotLy8g
UmVhZGFibGVTdHJlYW0gaXMgdXNpbmcgYSBSZWFkYWJsZVN0cmVhbVNvdXJjZSB0byBnZXQgZGF0
YSBpbiBpdHMgcXVldWUuCi0vLyBTZWUgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8j
cnMKLWNsYXNzIFJlYWRhYmxlU3RyZWFtIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW0+IHsKLXB1
YmxpYzoKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsKLSAgICAgICAgUmVhZGFibGUsCi0gICAgICAg
IENsb3NlZCwKLSAgICAgICAgRXJyb3JlZAotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmUHRyPFJl
YWRhYmxlU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNvbnN0
IERpY3Rpb25hcnkmKTsKLSAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbSgpOwotCi0gICAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIqIGdldFJlYWRlcihFeGNlcHRpb25Db2RlJik7Ci0gICAgY29uc3Qg
UmVhZGFibGVTdHJlYW1SZWFkZXIqIHJlYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZGVyLmdl
dCgpOyB9Ci0KLSAgICBib29sIGxvY2tlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9yZWFkZXI7IH0K
LQotICAgIHZvaWQgcmVsZWFzZVJlYWRlcigpOwotICAgIGJvb2wgaGFzUmVhZFBlbmRpbmdSZXF1
ZXN0cygpIHsgcmV0dXJuICFtX3JlYWRSZXF1ZXN0cy5pc0VtcHR5KCk7IH0KLQotICAgIGJvb2wg
aXNFcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZDsgfQot
ICAgIGJvb2wgaXNSZWFkYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OlJl
YWRhYmxlOyB9Ci0gICAgYm9vbCBpc0Nsb3NlUmVxdWVzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9j
bG9zZVJlcXVlc3RlZDsgfQotCi0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZXJyb3IoKSA9IDA7
Ci0KLSAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCk7Ci0g
ICAgdm9pZCBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwotICAgIHZvaWQgZmluaXNoUHVsbGluZygp
OwotICAgIHZvaWQgbm90aWZ5Q2FuY2VsU3VjY2VlZGVkKCk7Ci0gICAgdm9pZCBub3RpZnlDYW5j
ZWxGYWlsZWQoKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdCwgSlND
OjpKU1ZhbHVlPiBDYW5jZWxQcm9taXNlOwotICAgIHZvaWQgY2FuY2VsKEpTQzo6SlNWYWx1ZSwg
Q2FuY2VsUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBjYW5jZWxOb0NoZWNr
KEpTQzo6SlNWYWx1ZSwgQ2FuY2VsUHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlz
ZTxzdGQ6Om51bGxwdHJfdCwgSlNDOjpKU1ZhbHVlPiBDbG9zZWRQcm9taXNlOwotICAgIHZvaWQg
Y2xvc2VkKENsb3NlZFByb21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2VJdGVyYXRv
cldpdGhDYWxsYmFjazxKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZT4gUmVhZFByb21pc2U7Ci0g
ICAgdm9pZCByZWFkKFJlYWRQcm9taXNlJiYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQg
UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotCi0gICAgYm9vbCByZXNv
bHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSk7Ci0gICAgdm9pZCBwdWxsKCk7Ci0KLXByaXZh
dGU6Ci0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5TdXNwZW5kRm9yUGFn
ZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGNsZWFyQ2FsbGJhY2tzKCk7Ci0g
ICAgdm9pZCBjbG9zZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyVmFsdWVzKCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGhhc1ZhbHVlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJl
YWQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGRvUHVsbCgpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgZG9DYW5jZWwoSlNDOjpKU1ZhbHVlKSA9IDA7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVh
ZGFibGVTdHJlYW1SZWFkZXI+IG1fcmVhZGVyOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
UmVhZGFibGVTdHJlYW1SZWFkZXI+PiBtX3JlbGVhc2VkUmVhZGVyczsKLQotICAgIE9wdGlvbmFs
PENhbmNlbFByb21pc2U+IG1fY2FuY2VsUHJvbWlzZTsKLSAgICBPcHRpb25hbDxDbG9zZWRQcm9t
aXNlPiBtX2Nsb3NlZFByb21pc2U7Ci0KLSAgICBEZXF1ZTxSZWFkUHJvbWlzZT4gbV9yZWFkUmVx
dWVzdHM7Ci0KLSAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNQ
dWxsaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fc2hvdWxkUHVsbEFnYWluIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fY2xvc2VSZXF1ZXN0ZWQgeyBmYWxzZSB9OwotICAgIFN0YXRlIG1fc3RhdGUg
eyBTdGF0ZTo6UmVhZGFibGUgfTsKLX07Ci0KLS8vIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgcXVl
dWUgYW5kIGtub3dzIHdoZXRoZXIgdGhlcmUgaXMgc3VmZmljaWVudCBkYXRhIGluIGl0LgotLy8g
ICBTdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgZXJyb3Igc3RvcmFnZSwgcHVsbGluZyBhbmQg
Y2FuY2VsbGluZy4KLXRlbXBsYXRlPHR5cGVuYW1lIENodW5rVHlwZT4KLWNsYXNzIFJlYWRhYmxl
RW5xdWV1aW5nU3RyZWFtIGZpbmFsIDogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKLXByb3RlY3Rl
ZDoKLSAgICBleHBsaWNpdCBSZWFkYWJsZUVucXVldWluZ1N0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSA6IFJlYWRhYmxlU3RyZWFtKGNvbnRleHQpIHsgfQotCi0gICAgdm9p
ZCBlbnF1ZXVlQ2h1bmsoQ2h1bmtUeXBlJiYgY2h1bmspIHsgbV9xdWV1ZS5hcHBlbmQoc3RkOjpm
b3J3YXJkKGNodW5rKSk7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1
ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUuY2xlYXIoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNF
bm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3F1ZXVlLnNpemUoKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcXVl
dWUuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpIG92ZXJyaWRlOwot
Ci0gICAgRGVxdWU8Q2h1bmtUeXBlPiBtX3F1ZXVlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2h1bmtUeXBlPgotaW5saW5lIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxD
aHVua1R5cGU+OjpyZWFkKCkKLXsKLSAgICBET01SZXF1ZXN0U3RhdGUgc3RhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gdG9KUyhzdGF0ZS5leGVjKCksIHRvSlNET01H
bG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzdGF0ZS5leGVjKCkpLCBtX3F1
ZXVlLnJlYWQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBSZWFkYWJsZVN0cmVh
bV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmlkbAppbmRleCBjNmVmOGFhNDBmYzVmNzNkMWU0YWIwMjZlYjU4MWFkMjY4OGY4Zjg0Li4wNDlj
YzlmM2I2ZjRmZGE2MjhiMjE4NjAwYzI2MzhkNjFhYzgwMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTI4LDE2ICsyOCwx
NCBAQAogICovCiAKIFsKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAotICAg
IENvbnN0cnVjdG9yKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHNvdXJjZSwgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBEaWN0aW9uYXJ5IHN0cmF0ZWd5KSwKICAgICBDb25k
aXRpb25hbD1TVFJFQU1TX0FQSSwKLSAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgorICAgIEpTQnVp
bHRpbkNvbnN0cnVjdG9yCiBdIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbSB7Ci0gICAgW1JhaXNl
c0V4Y2VwdGlvbl0gUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBh
bnkgcmVhc29uKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBSZWFkYWJsZVN0cmVhbVJlYWRlciBn
ZXRSZWFkZXIoKTsKLSAgICBbQ3VzdG9tXSBQcm9taXNlIHBpcGVUbyhhbnkgc3RyZWFtcywgYW55
IG9wdGlvbnMpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7CisgICAgW0pTQnVpbHRpbl0gT2JqZWN0IGdldFJl
YWRlcigpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgcGlwZVRvKGFueSBzdHJlYW1zLCBhbnkg
b3B0aW9ucyk7CiAgICAgW0pTQnVpbHRpbl0gT2JqZWN0IHBpcGVUaHJvdWdoKGFueSBkZXN0LCBh
bnkgb3B0aW9ucyk7CiAgICAgW0pTQnVpbHRpbl0gT2JqZWN0IHRlZSgpOwogCi0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gbG9ja2VkOworICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGxvY2tlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKaW5kZXggNjZiMThkNGFkZjIzZTkwZmEwOGJmZjdi
NDA2ZmZhZDRlMmE2ZTg5MS4uZDM2NjkzYTQ1MTM2MmVmZGM4YWY5NzE0YThlNjM5MDk1MzVlYTVi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5qcwpAQCAtMjMsNiArMjMsODAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorZnVuY3Rpb24g
aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5KQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdTb3VyY2UgPT09
ICJ1bmRlZmluZWQiKQorICAgICAgICAgdW5kZXJseWluZ1NvdXJjZSA9IHsgfTsKKyAgICAgaWYg
KHR5cGVvZiBzdHJhdGVneSA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICBzdHJhdGVneSA9IHsg
aGlnaFdhdGVyTWFyazogMSwgc2l6ZTogZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9IH07CisKKyAg
ICBpZiAoIUBpc09iamVjdCh1bmRlcmx5aW5nU291cmNlKSkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBm
aXJzdCBhcmd1bWVudCIpOworCisgICAgaWYgKHN0cmF0ZWd5ICE9PSB1bmRlZmluZWQgJiYgIUBp
c09iamVjdChzdHJhdGVneSkpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJs
ZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvYmplY3QgYXMgc2Vjb25kIGFyZ3VtZW50LCBp
ZiBhbnkiKTsKKworICAgIHRoaXMuQHVuZGVybHlpbmdTb3VyY2UgPSB1bmRlcmx5aW5nU291cmNl
OworCisgICAgdGhpcy5AcXVldWUgPSBbXTsKKyAgICB0aGlzLkBxdWV1ZVNpemUgPSAwOworICAg
IHRoaXMuQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGU7CisgICAgdGhpcy5Ac3RhcnRl
ZCA9IGZhbHNlOworICAgIHRoaXMuQGNsb3NlUmVxdWVzdGVkID0gZmFsc2U7CisgICAgdGhpcy5A
cHVsbEFnYWluID0gZmFsc2U7CisgICAgdGhpcy5AcHVsbGluZyA9IGZhbHNlOworICAgIHRoaXMu
QHJlYWRlciA9IHVuZGVmaW5lZDsKKyAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHVuZGVmaW5lZDsK
KyAgICB0aGlzLkBjb250cm9sbGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhp
cyk7CisgICAgdGhpcy5Ac3RyYXRlZ3lTaXplID0gc3RyYXRlZ3kuc2l6ZTsKKyAgICB0aGlzLkBo
aWdoV2F0ZXJNYXJrID0gTnVtYmVyKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmspOworCisgICAgaWYg
KE51bWJlci5pc05hTih0aGlzLkBoaWdoV2F0ZXJNYXJrKSkKKyAgICAgICAgdGhyb3cgbmV3IFR5
cGVFcnJvcigiaGlnaFdhdGVyTWFyayBwYXJhbWV0ZXIgaXMgbm90IGNvcnJlY3QiKTsKKyAgICBp
ZiAodGhpcy5AaGlnaFdhdGVyTWFyayA8IDApCisgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9y
KCJoaWdoV2F0ZXJNYXJrIGlzIG5lZ2F0aXZlIik7CisKKyAgICB2YXIgcmVzdWx0ID0gQGludm9r
ZU9yTm9vcCh1bmRlcmx5aW5nU291cmNlLCAic3RhcnQiLCBbdGhpcy5AY29udHJvbGxlcl0pOwor
ICAgIHZhciBfdGhpcyA9IHRoaXM7CisgICAgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihm
dW5jdGlvbigpIHsKKyAgICAgICAgX3RoaXMuQHN0YXJ0ZWQgPSB0cnVlOworICAgICAgICBAcmVx
dWVzdFJlYWRhYmxlU3RyZWFtUHVsbChfdGhpcyk7CisgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsK
KyAgICAgICAgaWYgKF90aGlzLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpCisg
ICAgICAgICAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShfdGhpcywgZXJyb3IpOworICAgIH0pOwor
CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9uIGNhbmNlbChyZWFzb24pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKSk7CisKKyAgICBpZiAoQGlzUmVhZGFibGVT
dHJlYW1Mb2NrZWQodGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5
cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOworCisgICAgcmV0dXJuIEBjYW5j
ZWxSZWFkYWJsZVN0cmVhbSh0aGlzLCByZWFzb24pOworfQorCitmdW5jdGlvbiBnZXRSZWFkZXIo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhp
cykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCh0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFt
IGlzIGxvY2tlZCIpOworCisgICAgcmV0dXJuIG5ldyBAUmVhZGFibGVTdHJlYW1SZWFkZXIodGhp
cyk7Cit9CisKIGZ1bmN0aW9uIHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9wdGlvbnMpCiB7CiAgICAg
InVzZSBzdHJpY3QiOwpAQCAtMzEsMTAgKzEwNSwyOSBAQCBmdW5jdGlvbiBwaXBlVGhyb3VnaChz
dHJlYW1zLCBvcHRpb25zKQogICAgIHJldHVybiBzdHJlYW1zLnJlYWRhYmxlOwogfQogCitmdW5j
dGlvbiBwaXBlVG8oZGVzdCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigicGlwZVRvIGlzIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCiBmdW5jdGlvbiB0
ZWUoKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIC8vIFRPRE86IGNoZWNrIHRoaXMgaXMg
YSBSZWFkYWJsZVN0cmVhbQotICAgIHJldHVybiBAdGVlUmVhZGFibGVTdHJlYW0odGhpcywgZmFs
c2UpCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVh
bSIpOworCisgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInRlZSBpcyBub3QgaW1wbGVtZW50ZWQi
KTsKK30KKworZnVuY3Rpb24gbG9ja2VkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBp
ZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtIik7CisKKyAg
ICByZXR1cm4gQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmgKaW5kZXggYWE3YWIzYzZjZjI1ZTJlYWI3N2RiNjEyYjcwZGQ3ZDUzODNjYmU4MS4uOGZjNDc4
YzM5Nzc1MTlmMGZhZDQ4MmMxYmY1OWIwNjlmMDMzZDg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaApA
QCAtMzIsMzQgKzMyLDE4IEBACiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKLSNpbmNsdWRl
ICJSZWFkYWJsZUpTU3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0vLyBUaGlz
IGNsYXNzIGlzIG9ubHkgdXNlZCBmb3IgSlMgc291cmNlIHJlYWRhYmxlIHN0cmVhbXMgdG8gYWxs
b3cgZW5xdWV1aW5nLCBjbG9zaW5nIG9yIGVycm9yaW5nIGEgcmVhZGFibGUgc3RyZWFtLgotLy8g
SXRzIGRlZmluaXRpb24gaXMgYXQgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcnMt
Y29udHJvbGxlci1jbGFzcy4KLS8vIE5vdGUgdGhhdCBpdHMgY29uc3RydWN0b3IgaXMgdGFraW5n
IGEgUmVhZGFibGVKU1N0cmVhbSBhcyBpdCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBKUyBzb3Vy
Y2VzLgotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHsKKy8vIFRoaXMgaXMgYSBkdW1t
eSBjbGFzcyBuZWVkZWQgYXMgd2UgY2Fubm90IHlldCB1c2UgSlNCdWlsdGluQ29uc3RydWN0b3Ig
d2l0aCBOb0ludGVyZmFjZU9iamVjdC4KKy8vIEltcGxlbWVudGF0aW9uIG9mIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciBmdW5jdGlvbmFsaXR5IGlzIGRvbmUgaW4gUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLmpzCisvLyBGSVhNRTogRmluZCBhIHdheSB0byByZW1vdmUgdGhhdCBjbGFzcy4KK2Ns
YXNzIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcihSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pCi0gICAgICAgIDogbV9z
dHJlYW0oc3RyZWFtKSB7IH0KLQotICAgIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSgpIHsgcmV0
dXJuIG1fc3RyZWFtOyB9Ci0KLSAgICB2b2lkIGVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyBtX3N0cmVhbS5lcnJvcihz
dGF0ZSwgdmFsdWUsIGVjKTsgfQotCi0gICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IG1fc3RyZWFtLmVucXVldWUoc3RhdGUsIHZhbHVl
KTsgfQotCi0gICAgdm9pZCByZWYoKSB7IG1fc3RyZWFtLnJlZigpOyB9Ci0gICAgdm9pZCBkZXJl
ZigpIHsgbV9zdHJlYW0uZGVyZWYoKTsgfQotCi0gICAgdm9pZCBjbG9zZShFeGNlcHRpb25Db2Rl
JiBlYykgeyBtX3N0cmVhbS5jbG9zZShlYyk7IH0KLSAgICBkb3VibGUgZGVzaXJlZFNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0cmVhbS5kZXNpcmVkU2l6ZSgpOyB9Ci0KKyAgICBzdGF0aWMgUmVm
PFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKiBu
ZXcgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKTsgfQogcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpT
U3RyZWFtJiBtX3N0cmVhbTsKKyAgICBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSB7IH0KIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwKaW5kZXggMzBiOGM4YjVlOTc3MThhMTRmZGJiZGNl
OWM2MzVhNmY2NzRlODU1NS4uMjM3YjE1NGM5ZGQ2MzRmYzIxM2NiMzU4MmI2OWRmMzlmNGFlYzAz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwKQEAgLTMzLDkgKzMzLDkgQEAKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIE5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgewotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9p
ZCBlbnF1ZXVlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IGNodW5rKTsKLSAgICBb
UmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNsb3NlKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgZXJyb3IoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBhbnkgZXJyb3IpOworICAgIFtKU0J1aWx0aW5dIHZvaWQgZW5xdWV1ZShbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIGFueSBjaHVuayk7CisgICAgW0pTQnVpbHRpbl0gdm9pZCBjbG9zZSgp
OworICAgIFtKU0J1aWx0aW5dIHZvaWQgZXJyb3IoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBhbnkgZXJyb3IpOwogCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBkZXNpcmVkU2l6
ZTsKKyAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGRlc2lyZWRTaXpl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYzAzZDFkYzNjNDdlOTI0NjJl
MzUxNDljMDhjMmM4NDU1NTJmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBlbnF1ZXVlKGNodW5rKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
KHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJl
IGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisgICAgdmFyIHN0cmVh
bSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0
ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgdGhyb3cgc3RyZWFtLkBzdG9y
ZWRFcnJvcjsKKworICAgIGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgcmVxdWVzdGVkIHRvIGNsb3NlIik7
CisKKyAgICByZXR1cm4gQGVucXVldWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1bmspCit9
CisKK2Z1bmN0aW9uIGVycm9yKGVycm9yKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciIpOworCisgICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJs
ZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFi
bGUpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFhYmxlU3RyZWFtIGlzIG5vdCBy
ZWFkYWJsZSIpOworCisgICAgQGVycm9yUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJvcik7Cit9
CisKK2Z1bmN0aW9uIGNsb3NlKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBp
c1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIiKTsKKworICAgIHZhciBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJl
YW07CisgICAgaWYgKHN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBhbHJlYWR5IHJlcXVlc3RlZCB0byBjbG9zZSIp
OworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBhbHJlYWR5IGVy
cm9yZWQiKTsKKworICAgIEBjbG9zZVJlYWRhYmxlU3RyZWFtKHN0cmVhbSk7Cit9CisKK2Z1bmN0
aW9uIGRlc2lyZWRTaXplKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIiKTsKKworICAgIHJldHVybiBAZ2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZSh0aGlzLkBj
b250cm9sbGVkUmVhZGFibGVTdHJlYW0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IDRmYzdl
MmVmN2Y0ZTIwNTUzOTkzOTgyNGViNDc1OTNjOWRhOGVmNjQuLmViZDdmOTk1MDdjODQyMDUzZTg0
NWFlNjI1YjczZmVmZmFjNmM3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKQEAgLTIzLDkgKzIzLDI5
MyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitmdW5jdGlvbiBwcml2YXRlSW5pdGlhbGl6ZVJl
YWRhYmxlU3RyZWFtUmVhZGVyKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBp
ZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkpCisgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIG5lZWRzIGEgUmVhZGFibGVTdHJlYW0iKTsKKyAgICBp
ZiAoQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSkKKyAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIik7CisKKyAgICB0aGlzLkBzdGF0ZSA9
IHN0cmVhbS5Ac3RhdGU7CisgICAgdGhpcy5AcmVhZFJlcXVlc3RzID0gW107CisgICAgaWYgKHN0
cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKSB7CisgICAgICAgIHRoaXMu
QG93bmVyUmVhZGFibGVTdHJlYW0gPSBzdHJlYW07CisgICAgICAgIHRoaXMuQHN0b3JlZEVycm9y
ID0gdW5kZWZpbmVkOworICAgICAgICBzdHJlYW0uQHJlYWRlciA9IHRoaXM7CisgICAgICAgIHRo
aXMuQGNsb3NlZFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3Qp
IHsKKyAgICAgICAgICAgIHN0cmVhbS5AcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVzb2x2ZSA9IHJl
c29sdmU7CisgICAgICAgICAgICBzdHJlYW0uQHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlamVjdCA9
IHJlamVjdDsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKSB7CisgICAgICAgIHRo
aXMuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOworICAgICAgICB0aGlzLkBzdG9yZWRFcnJv
ciA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisgICAgLy8gVE9ETzogQVNTRVJU
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIHRoaXMuQG93
bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOworICAgIHRoaXMuQHN0b3JlZEVycm9yID0gc3RyZWFt
LkBzdG9yZWRFcnJvcjsKKyAgICB0aGlzLkBjbG9zZWRQcm9taXNlID0gUHJvbWlzZS5yZWplY3Qo
c3RyZWFtLkBzdG9yZWRFcnJvcik7CisKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24g
cHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoc3RyZWFtKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBuZWVk
cyBhIFJlYWRhYmxlU3RyZWFtIik7CisgICAgaWYgKHR5cGVvZiBzdHJlYW0uQGNvbnRyb2xsZXIg
IT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW0gYWxyZWFkeSBoYXMgYSBjb250cm9sbGVyIik7CisgICAgdGhpcy5AY29udHJvbGxlZFJl
YWRhYmxlU3RyZWFtID0gc3RyZWFtOworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKIGZ1bmN0aW9u
IHRlZVJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgc2hvdWxkQ2xvbmUpCiB7CiAgICAgInVzZSBzdHJp
Y3QiOwogCiAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInRlZSBpcyBub3QgaW1wbGVtZW50ZWQi
KTsKIH0KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBz
dHJpY3QiOworCisgICAgcmV0dXJuIEBpc09iamVjdChzdHJlYW0pICYmICEhc3RyZWFtLkB1bmRl
cmx5aW5nU291cmNlOworfQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRl
cikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KHJlYWRlcikg
JiYgdHlwZW9mIHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSAhPT0gInVuZGVmaW5lZCI7Cit9
CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKGNvbnRyb2xsZXIpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBpc09iamVjdChjb250cm9sbGVyKSAmJiAh
IWNvbnRyb2xsZXIuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKK30KKworZnVuY3Rpb24gZXJy
b3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIC8vIFRPRE86IEFTU0VSVChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFk
YWJsZSk7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIHN0cmVhbS5Ac3RvcmVkRXJyb3Ig
PSBlcnJvcjsKKyAgICBzdHJlYW0uQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZDsKKwor
ICAgIGlmICghc3RyZWFtLkByZWFkZXIpCisgICAgICAgIHJldHVybjsKKyAgICB2YXIgcmVhZGVy
ID0gc3RyZWFtLkByZWFkZXI7CisKKyAgICB2YXIgcmVxdWVzdHMgPSByZWFkZXIuQHJlYWRSZXF1
ZXN0czsKKyAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IHJlcXVlc3RzLmxlbmd0aDsg
aW5kZXggPCBsZW5ndGg7ICsraW5kZXgpCisgICAgICAgIHJlcXVlc3RzW2luZGV4XS5yZWplY3Qo
ZXJyb3IpOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzID0gW107CisKKyAgICBAcmVsZWFzZVJl
YWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcik7CisgICAgcmVhZGVyLkBzdG9yZWRFcnJvciA9IGVy
cm9yOworICAgIHJlYWRlci5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkOworCisgICAg
cmVhZGVyLkBjbG9zZWRQcm9taXNlUmVqZWN0KGVycm9yKTsKK30KKworZnVuY3Rpb24gcmVxdWVz
dFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKHN0cmVhbS5Ac3RhdGUgIT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKHN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoIXN0cmVhbS5Ac3RhcnRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgoIUBp
c1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkgfHwgIXN0cmVhbS5AcmVhZGVyLkByZWFkUmVx
dWVzdHMubGVuZ3RoKSAmJiBAZ2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZShzdHJlYW0pIDw9
IDApCisgICAgICAgIHJldHVybjsKKyAKKyAgICBpZiAoc3RyZWFtLkBwdWxsaW5nKSB7CisgICAg
ICAgIHN0cmVhbS5AcHVsbEFnYWluID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHN0cmVhbS5AcHVsbGluZyA9IHRydWU7CisKKyAgICB2YXIgcHJvbWlzZSA9IEBwcm9taXNl
SW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgInB1bGwiLCBbc3RyZWFtLkBj
b250cm9sbGVyXSk7CisgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBzdHJl
YW0uQHB1bGxpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKHN0cmVhbS5AcHVsbEFnYWluKSB7Cisg
ICAgICAgICAgICBzdHJlYW0uQHB1bGxBZ2FpbiA9IGZhbHNlOworICAgICAgICAgICAgQHJlcXVl
c3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICAgICAgfQorICAgIH0sIGZ1bmN0aW9u
KGVycm9yKSB7CisgICAgICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgZXJyb3IpOwor
ICAgIH0pOworfQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sK
KyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCitm
dW5jdGlvbiBnZXRSZWFkYWJsZVN0cmVhbURlc2lyZWRTaXplKHN0cmVhbSkKK3sKKyAgICJ1c2Ug
c3RyaWN0IjsKKworICAgcmV0dXJuIHN0cmVhbS5AaGlnaFdhdGVyTWFyayAtIHN0cmVhbS5AcXVl
dWVTaXplOworfQorCitmdW5jdGlvbiByZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVy
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVh
bS5AcmVhZGVyID0gdW5kZWZpbmVkOworICAgIHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSA9
IG51bGw7Cit9CisKK2Z1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29u
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAg
ICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5A
cXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7Cisg
ICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwg
ImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworZnVuY3Rpb24g
ZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gIEByZWFkYWJsZVN0cmVh
bVJlYWRhYmxlKTsKKyAgICBzdHJlYW0uQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkOwor
ICAgIHZhciByZWFkZXIgPSBzdHJlYW0uQHJlYWRlcjsKKyAgICBpZiAocmVhZGVyKQorICAgICAg
ICBAY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworfQorCitmdW5jdGlvbiBjbG9z
ZVJlYWRhYmxlU3RyZWFtKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBU
T0RPLiBBU1NFUlQoIXN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQpOworICAgIC8vIFRPRE86IEFTU0VS
VChzdHJlYW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKTsKKyAgICBpZiAoc3Ry
ZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm47IAor
ICAgIHN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQgPSB0cnVlOworICAgIGlmICghc3RyZWFtLkBxdWV1
ZS5sZW5ndGgpCisgICAgICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsK
K30KKworZnVuY3Rpb24gY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7
CisgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4
IDwgbGVuZ3RoOyArK2luZGV4KQorICAgICAgICByZXF1ZXN0c1tpbmRleF0ucmVzb2x2ZSh7dmFs
dWU6dW5kZWZpbmVkLCBkb25lOiB0cnVlfSk7CisgICAgcmVhZGVyLkByZWFkUmVxdWVzdHMgPSBb
XTsKKyAgICBAcmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcik7CisgICAgcmVhZGVy
LkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUNsb3NlZDsKKyAgICByZWFkZXIuQGNsb3NlZFByb21p
c2VSZXNvbHZlKCk7Cit9CisKK2Z1bmN0aW9uIGVucXVldWVJblJlYWRhYmxlU3RyZWFtKHN0cmVh
bSwgY2h1bmspCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETzogQVNTRVJUKCFz
dHJlYW0uQGNsb3NlUmVxdWVzdGVkKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0
ZSAhPT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICBp
ZiAoQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSAmJiBzdHJlYW0uQHJlYWRlci5AcmVh
ZFJlcXVlc3RzLmxlbmd0aCkgeworICAgICAgICBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3Rz
LnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6IGNodW5rLCBkb25lOiBmYWxzZX0pOworICAgICAgICBA
cmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHRyeSB7CisgICAgICAgIHZhciBzaXplID0gMTsKKyAgICAgICAgaWYgKHN0cmVhbS5A
c3RyYXRlZ3lTaXplKSB7CisgICAgICAgICAgICBzaXplID0gTnVtYmVyKHN0cmVhbS5Ac3RyYXRl
Z3lTaXplKGNodW5rKSk7CisgICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpIHx8IHNp
emUgPT09ICtJbmZpbml0eSB8fCBzaXplIDwgMCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
UmFuZ2VFcnJvcigiQ2h1bmsgc2l6ZSBpcyBub3QgdmFsaWQiKTsKKyAgICAgICAgfQorICAgICAg
ICBzdHJlYW0uQHF1ZXVlLnB1c2goeyB2YWx1ZTogY2h1bmssIHNpemU6IHNpemUgfSk7CisgICAg
ICAgIHN0cmVhbS5AcXVldWVTaXplICs9IHNpemU7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7
CisgICAgICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgZXJyb3IpOworICAgICAgICB0
aHJvdyBlcnJvcjsKKyAgICB9CisgICAgQHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFt
KTsKK30KKworZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHJlYWRlci5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7dmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZX0pOworICAgIGlmIChyZWFkZXIuQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhZGVyLkBz
dG9yZWRFcnJvcik7CisgICAgLy8gVE9ETzogQVNTRVJUKCEhcmVhZGVyLkBvd25lclJlYWRhYmxl
U3RyZWFtKTsKKyAgICAvLyBUT0RPOiBBU1NFUlQocmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFt
LkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpOworICAgIHZhciBzdHJlYW0gPSBy
ZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW07CisgICAgaWYgKHN0cmVhbS5AcXVldWUubGVuZ3Ro
KSB7CisgICAgICAgIHZhciBjaHVuayA9IHN0cmVhbS5AcXVldWUuc2hpZnQoKTsKKyAgICAgICAg
c3RyZWFtLkBxdWV1ZVNpemUgLT0gY2h1bmsuc2l6ZTsKKyAgICAgICAgaWYgKCFzdHJlYW0uQGNs
b3NlUmVxdWVzdGVkKQorICAgICAgICAgICAgQHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3Ry
ZWFtKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmVhbS5AcXVldWUubGVuZ3RoKQorICAgICAgICAg
ICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTogY2h1bmsudmFsdWUsIGRvbmU6IGZhbHNlfSk7CisgICAg
fQorICAgIHZhciByZWFkUmVxdWVzdCA9IHt9OworICAgIHZhciByZWFkUHJvbWlzZSA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICByZWFkUmVxdWVzdC5y
ZXNvbHZlID0gcmVzb2x2ZTsKKyAgICAgICAgcmVhZFJlcXVlc3QucmVqZWN0ID0gcmVqZWN0Owor
ICAgIH0pOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzLnB1c2gocmVhZFJlcXVlc3QpOworICAg
IEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7CisgICAgcmV0dXJuIHJlYWRQcm9t
aXNlOworfQorCitmdW5jdGlvbiBpbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgIGlm
ICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgcmV0dXJuOworICAgIHJl
dHVybiBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VJ
bnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAo
dHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwg
YXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9Cisg
ICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Yz
N2Q5OWMwMWQ5YzFhYWFlOWRjOGVjMjhjZjc3YzVlNmVmMGRiOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJl
YWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotCi0jaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6
OmNhbmNlbChKU0M6OkpTVmFsdWUgcmVhc29uLCBSZWFkYWJsZVN0cmVhbTo6Q2FuY2VsUHJvbWlz
ZSYmIHByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVh
bS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShudWxscHRyKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3N0cmVhbS5jYW5jZWxOb0NoZWNrKHJlYXNv
biwgV1RGOjptb3ZlKHByb21pc2UpKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBp
ZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsK
LSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIG1fc3RyZWFtLmNsb3NlZChXVEY6Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkUHJvbWlzZSYmIHBy
b21pc2UpCi17Ci0gICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFk
ZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZUVuZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLnJlYWQoV1RGOjptb3ZlKHByb21pc2UpKTsKLX0K
LQotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVsZWFzZUxvY2soRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgaWYgKG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAobV9zdHJlYW0uaGFzUmVhZFBlbmRpbmdSZXF1ZXN0cygpKSB7Ci0gICAgICAg
IGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLnJl
bGVhc2VSZWFkZXIoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXggYjRkMmZiNTNk
NTExMGIyZDExNmE1Mzc1ZWRjNjI4MzVmMzEwNDliOS4uMzkyMmM5MjcyM2U2YTdmODQ1MGUwNzNj
MzdlOTEyZjliYzUwMWYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTMyLDM3ICszMiwxOCBAQAogCiAjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5j
bHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7Ci0KLS8vIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGltcGxlbWVudHMgYWNjZXNzIHRv
IFJlYWRhYmxlU3RyZWFtIGZyb20gSmF2YVNjcmlwdC4KLS8vIEl0IGJhc2ljYWxseSBhbGxvd3Mg
YWNjZXNzIHRvIHRoZSBSZWFkYWJsZVN0cmVhbSBpZmYgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGluc3RhbmNlIGlzIHRoZSBhY3RpdmUgcmVhZGVyCi0vLyBvZiB0aGUgUmVhZGFibGVTdHJlYW0u
Ci0vLyBNb3N0IG9mIHRoaXMgaGFuZGxpbmcgaXMgaGFwcGVuaW5nIGluIHRoZSBjdXN0b20gSlMg
YmluZGluZyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlci4KLS8vIFNlZSBodHRwczovL3N0cmVhbXMu
c3BlYy53aGF0d2cub3JnLyNyZWFkZXItY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi1jbGFz
cyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7CisvLyBUaGlzIGlzIGEgZHVtbXkgY2xhc3MgbmVlZGVk
IGFzIHdlIGNhbm5vdCB5ZXQgdXNlIEpTQnVpbHRpbkNvbnN0cnVjdG9yIHdpdGggTm9JbnRlcmZh
Y2VPYmplY3QuCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlciBmdW5j
dGlvbmFsaXR5IGlzIGRvbmUgaW4gUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKKy8vIEZJWE1FOiBG
aW5kIGEgd2F5IHRvIHJlbW92ZSB0aGF0IGNsYXNzLgorY2xhc3MgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gewogcHVi
bGljOgotICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyKFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCi0g
ICAgICAgIDogbV9zdHJlYW0oc3RyZWFtKSB7IH0KLQotICAgIHZvaWQgY2FuY2VsKEpTQzo6SlNW
YWx1ZSwgUmVhZGFibGVTdHJlYW06OkNhbmNlbFByb21pc2UmJik7Ci0gICAgdm9pZCBjbG9zZWQo
UmVhZGFibGVTdHJlYW06OkNsb3NlZFByb21pc2UmJik7Ci0gICAgdm9pZCByZWFkKFJlYWRhYmxl
U3RyZWFtOjpSZWFkUHJvbWlzZSYmKTsKLSAgICB2b2lkIHJlbGVhc2VMb2NrKEV4Y2VwdGlvbkNv
ZGUmKTsKLQotICAgIHZvaWQgcmVmKCkgeyBtX3N0cmVhbS5yZWYoKTsgfQotICAgIHZvaWQgZGVy
ZWYoKSB7IG1fc3RyZWFtLmRlcmVmKCk7IH0KLQorICAgIHN0YXRpYyBSZWY8UmVhZGFibGVTdHJl
YW1SZWFkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFJlYWRhYmxlU3RyZWFt
UmVhZGVyKTsgfQogcHJpdmF0ZToKLSAgICBSZWFkYWJsZVN0cmVhbSYgbV9zdHJlYW07CisgICAg
UmVhZGFibGVTdHJlYW1SZWFkZXIoKSB7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCmluZGV4IDQx
YWZlMjVkYjU5ZmRiYWQ3MTlhYzk0MjBjZWQ4YTRmOGZiY2FhMjcuLjNmZThiZWMyY2IwODU5ZDM5
MDQzZTljNWRiZjMyMzIzMDU2Mjc1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbApAQCAtMjksMTMgKzI5LDEz
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKLSAgICBDdXN0b21Db25zdHJ1
Y3RvcihhbnkgcHJvcGVydGllcyksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgU2tpcFZU
YWJsZVZhbGlkYXRpb24KKyAgICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICBJbXBsZW1lbnRhdGlv
bkxhY2tzVlRhYmxlLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciB7Ci0gICAgUHJvbWlzZSByZWFkKCk7Ci0gICAgUHJvbWlzZSBjYW5jZWwo
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgcmVhc29uKTsKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkIHJlbGVhc2VMb2NrKCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSByZWFk
KCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBhbnkgcmVhc29uKTsKKyAgICBbSlNCdWlsdGluXSB2b2lkIHJlbGVhc2VMb2NrKCk7
CiAKLSAgICBbQ3VzdG9tR2V0dGVyLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBQcm9taXNlIGNsb3NlZDsKKyAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgUHJv
bWlzZSBjbG9zZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTQwYzMxNjMwYTFiYjMy
Njc0MWNhMjVhYmFiOWFmYzAwYmEyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGNhbmNlbChyZWFzb24pCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlz
KSkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlv
biBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisKKyAgICBp
ZiAodGhpcy5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpOworCisgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAcmVhZGFibGVT
dHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5Ac3RvcmVk
RXJyb3IpOworCisgICAgLy8gVE9ETyBBU1NFUlQoQGlzUmVhZGFibGVTdHJlYW0odGhpcy5Ab3du
ZXJSZWFkYWJsZVN0cmVhbSkpOworICAgIC8vIFRPRE8gQVNTRVJUKHRoaXMuQG93bmVyUmVhZGFi
bGVTdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSk7CisgICAgcmV0dXJu
IEBjYW5jZWxSZWFkYWJsZVN0cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtLCByZWFzb24p
OworfQorCitmdW5jdGlvbiByZWFkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAo
IUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciIpKTsKKworICAgIHJldHVybiBAcmVhZEZyb21SZWFkYWJsZVN0cmVh
bVJlYWRlcih0aGlzKTsKK30KKworZnVuY3Rpb24gcmVsZWFzZUxvY2soKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIiKTsKKworICAgIGlmICghdGhpcy5Ab3duZXJSZWFkYWJsZVN0
cmVhbSkKKyAgICAgICAgIHJldHVybjsKKworICAgIGlmICh0aGlzLkByZWFkUmVxdWVzdHMubGVu
Z3RoKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigpOworCisgICAgQGNsb3NlUmVhZGFi
bGVTdHJlYW1SZWFkZXIodGhpcyk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlZCgpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYWxsZWUgb2YgY2xv
c2VkIGlzIG5vdCBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworCisgICAgcmV0dXJuIHRoaXMu
QGNsb3NlZFByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagppbmRleCBlYjU5MDMwMjg5MjY0Zjg5MzFhNjQyZmE2ODNlYmIzZWIyOWJl
MDAxLi5iMjI0ZTBlNTQxZDAzNGMwYTdiODk2YmE0MzY1MGNmNTlkZmI3MTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTM5NDYsMjAg
KzM5NDYsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCI+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTY4MzEsOCArNjgxNyw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xO
b3RpZmljYXRpb25DZW50ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xub3RpZmljYXRpb25zXFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5jcHAiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJl
YW0uY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0
aG9yaXplci5jcHAiIC8+CkBAIC0xODUzOSw0OSArMTg1MjMsNyBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1D
dXN0b20uY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5D
YWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdf
V2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xSZWFkYWJsZUpTU3RyZWFtLmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5j
cHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAg
LTIwNTYxLDkgKzIwNTAzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
bm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9iYWxTY29wZU5vdGlmaWNh
dGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccGx1Z2luc1xQ
bHVnaW5SZXBsYWNlbWVudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1SZWFkZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJz
dHJhY3REYXRhYmFzZVNlcnZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIiAv
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCmluZGV4IDMyMDdlOTg0NzgzMTMwMDIyMzZlYzRlNGY5YjJmYThlYTM4MDRk
MjcuLjBlOGU1MTJjMjg2NWU5YWUxZDZkODU5MWQ0MzkxNDFjNDYwMTVkNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKQEAgLTEsNSArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5t
aWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgor77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgog
ICA8SXRlbUdyb3VwPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRGVyaXZlZFNvdXJjZXMiPgogICAg
ICAgPFVuaXF1ZUlkZW50aWZpZXI+ezk1NTQ4N2U4LTk0YWQtNDVjMS05Y2M4LWNiODg5MTFlOWQ3
Y308L1VuaXF1ZUlkZW50aWZpZXI+CkBAIC00NjgsMTIgKzQ2Nyw2IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFsU2NvcGVOb3Rp
ZmljYXRpb25zLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcbm90aWZpY2F0aW9uczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcc3Ry
ZWFtczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8Rmls
dGVyPk1vZHVsZXNcc3RyZWFtczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBl
ci5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC00NDA0LDE2ICs0Mzk3LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiPgogICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAi
PgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGlu
Z3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXFJlYWRhYmxlSlNTdHJlYW0uY3BwIj4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3Jz
LmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1NRTFJlc3VsdFNl
dFJvd0xpc3RDdXN0b20uY3BwIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZjJlNDg4YzViYTY5NWQyY2U4YTAzNmYyM2RmZjVm
ZWE1NmU3OTYxLi45MDM1M2NiY2ZkNGFmNDE0ODEzYThhY2JmMTM4NTMzZjQyNDU5MzNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDkwLDYgKzE0OTAsOCBAQAogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07
CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5
OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0
MTI3RDUzNzBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1
IC8qIFNjcmlwdFN0YXRlLmNwcCAqLzsgfTsKKwkJNDEyOURGODUxQkI1QjgwNzAwMzIyQTE2IC8q
IEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlERjgzMUJCNUI3RjcwMDMyMkExNiAv
KiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgKi87IH07CisJCTQxMjlE
Rjg2MUJCNUI4MEMwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9y
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOURG
ODQxQkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3Jz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEz
OEQzMzUxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8q
IEV2ZW50Q29udGV4dC5oICovOyB9OwogCQk0MTM4RDMzNjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwICovOyB9Owog
CQk0MTUwNzE1NzE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTUxNjg1MDY3MzAw
QzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCAqLzsgfTsKQEAgLTE1MjEsMTYgKzE1MjMsOCBA
QAogCQk0MThBMDZEMTEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNGMTMzQzA0
RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuY3BwICovOyB9OwogCQk0MThGODgwNDBGRjk1
N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNB
YnN0cmFjdFdvcmtlci5jcHAgKi87IH07CiAJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICov
OyB9OwotCQk0MTk4QkRGMDFBODExNDIyMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTk4QkRFRTFB
ODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5jcHAgKi87IH07Ci0JCTQxOThCREYx
MUE4MTE0MzEwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTk4QkRFRjFBODExMjM2MDBCMjJGQjUgLyog
UmVhZGFibGVKU1N0cmVhbS5oICovOyB9OwogCQk0MTlCQzJERTE2ODUzMjk5MDBENjRENkQgLyog
VmlzaXRlZExpbmtTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5j
cHAgKi87IH07CiAJCTQxOUJDMkRGMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCQzJE
RDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovOyB9OwotCQk0MTlGQUZB
RTFBQkFCRDA4MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFGQUIxQUJBQkNENTAwNUI4
MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLzsgfTsKLQkJNDE5RkFGQUYxQUJBQkQw
QzAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlGQUZBQzFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaCAqLzsgfTsKLQkJNDE5RkFGQjExQUJBQkRFRDAwNUI4MjhCIC8q
IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFGQjAxQUJBQkQ3QjAwNUI4MjhCIC8qIEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwICovOyB9OwotCQk0MUEwMjNFRjFBMzlEQjdBMDBG
NzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFBMDIzRUIxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3Ry
ZWFtLmNwcCAqLzsgfTsKLQkJNDFBMDIzRjAxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEw
MjNFQzFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uaCAqLzsgfTsKLQkJNDFBMDIz
RjYxQTM5REJDQjAwRjcyMkNGIC8qIEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDIzRjMxQTM5REJDQjAw
RjcyMkNGIC8qIEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwICovOyB9OwogCQk0MUEzRDU4RTEw
MUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTNENThDMTAxQzE1MkQwMDMxNkQw
NyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovOyB9OwogCQk0MUEzRDU4RjEwMUMxNTJE
MDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmggKi87IH07CiAJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAv
KiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
ODc2OCwxMSArODc2MiwxNCBAQAogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01F
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBK
U0RPTUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9N
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MTE4OUVGNjFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVG
NzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGODFBRDgyMzNDMDBCOTBBMEQgLyogSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTFBOTA0MTFCQkFCNDZEMDAwQ0YxNTYgLyogV2ViQ29yZUpT
QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29y
ZUpTQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3RDUzNjBG
OEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTI5REY4MTFCQjVCNzlCMDAzMjJBMTYgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTI5REY4MjFCQjVCN0E2MDAz
MjJBMTYgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDEyOURGODMxQkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRl
Q29uc3RydWN0b3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDEyOURGODQxQkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Q
cml2YXRlQ29uc3RydWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1MDcxNTUxNjg1MDY3MzAwQzND
N0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlbGVjdG9yRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg4MDUsMTggKzg4MDIsMTAgQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50
RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVu
dERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMjBG
Rjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3Jr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUg
LyogUmVhZGFibGVKU1N0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWFkYWJsZUpTU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVKU1N0cmVhbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtT
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVkTGlu
a1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREQxNjg1MzI5
OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlzaXRlZExpbmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MTlGQUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZBQzFBQkFCQ0Q1MDA1Qjgy
OEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MUEwMjNFQjFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUEwMjNFQzFBMzlEQjc5MDBGNzIy
Q0YgLyogUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDIzRUQx
QTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQx
QTAyM0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1DdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZE
MDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkw
MDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNjI3NywxNCArMTYyNjYsMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJMTQ4QjRGRkYxQjY5MDRDNTAwQzk1NEU1IC8qIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kuaWRsICovLAorCQkJCTQxMjlERjgyMUJCNUI3QTYwMDMyMkExNiAvKiBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5oICovLAorCQkJCTQxMjlERjgxMUJCNUI3OUIwMDMyMkExNiAvKiBSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLywKIAkJCQkxNDhCNEZGRjFCNjkwNEM1MDBDOTU0RTQg
LyogQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsICovLAotCQkJCTQxQTAyM0VCMUEzOURCNzkwMEY3
MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCi0JCQkJNDFBMDIzRUMxQTM5REI3OTAwRjcy
MkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCiAJCQkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkNG
IC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLywKLQkJCQk0MTE4OUVGNjFBRDgyMzI4MDBCOTBBMEQg
LyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCiAJCQkJNDExODlFRjcxQUQ4MjMyODAw
QjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8sCi0JCQkJNDE5RkFGQUIx
QUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAqLywKLQkJCQk0MTlG
QUZBQzFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywKIAkJCQk0
MTlGQUZBRDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsICovLAog
CQkJKTsKIAkJCXBhdGggPSBzdHJlYW1zOwpAQCAtMjE2NTYsNyArMjE2NDIsOCBAQAogCQkJCTdD
OTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovLAogCQkJCTkzQjcw
RDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwICovLAog
CQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
aCAqLywKLQkJCQk0MTE4OUVGODFBRDgyMzNDMDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDdXN0b20uY3BwICovLAorCQkJCTQxMjlERjgzMUJCNUI3RjcwMDMyMkExNiAvKiBK
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgKi8sCisJCQkJNDEyOURGODQx
QkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgg
Ki8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuaCAqLywKIAkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1
bGVMb2FkZXIuY3BwICovLApAQCAtMjE4MzEsOCArMjE4MTgsNiBAQAogCQkJCUZEQkQxREZCMTY3
RkUyN0QwMDUxQTExRSAvKiBKU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhB
QTYzRDE2OTUxNEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlB
ODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywK
LQkJCQk0MUEwMjNGMzFBMzlEQkNCMDBGNzIyQ0YgLyogSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5j
cHAgKi8sCi0JCQkJNDE5RkFGQjAxQUJBQkQ3QjAwNUI4MjhCIC8qIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXJDdXN0b20uY3BwICovLAogCQkJCTRBRTBCRjg4MTgzNjA4MzEwMEYzODUyRCAvKiBKU1JU
Q0ljZUNhbmRpZGF0ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdDQTEyMEQxODJENjdEODAwRDEyMTk3
IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTA3RDA3QjEzMTgzNDE1
ODgwMEFCREQzQyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0y
NjQxNiw2ICsyNjQwMSw3IEBACiAJCQkJQ0UxMjUyNDkxQTE2QzNCQzAwODY0NDgwIC8qIE1vYmls
ZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDExMTgyMDU0MDYwMEYyQjQy
NCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
MjlERjg2MUJCNUI4MEMwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTUxODIwNTQwNjAwRjJCNDI0IC8qIE1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NjgzLDkgKzI2NjY5LDYgQEAKIAkJCQlGNTVCM0RD
RTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5OEJERjExQTgxMTQzMTAwQjIyRkI1IC8qIFJlYWRhYmxl
SlNTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxQTAyM0YwMUEzOURCN0EwMEY3MjJDRiAv
KiBSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5RkFGQUYxQUJBQkQwQzAw
NUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEE0RjY1NzExQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNEY2NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NTkyLDEwICsyOTU3
NSw3IEBACiAJCQkJNjVERjMyMDEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkM0Qzk2REUxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMTg5RUY5
MUFEODI3MzcwMEI5MEEwRCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk0MUEwMjNGNjFBMzlEQkNCMDBGNzIyQ0YgLyogSlNSZWFkYWJs
ZVN0cmVhbUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzRDOTZERTFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0
MTlGQUZCMTFBQkFCREVEMDA1QjgyOEIgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ZFMkYxMTBDMUI1ODM3MDAyMDIzNUYgLyogSlNSZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OThBRUNEMTNGOUQ2QzkwMDkwQjFBQSAvKiBKU1Jl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzRE
QTQ4MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzAxMDYsNiArMzAwODYsNyBAQAogCQkJCTI2NzcyNjAwMUE1QjNBRDkwMDNDMjRERCAvKiBORkFU
b0RGQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VGNDNFMDBFNjc0MTEwMDAxQzEyODcgLyog
TmluZVBpZWNlSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDNEE4MDAwOUQ1NjMyNzAw
MDNBQzhEIC8qIE5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEyOURGODUxQkI1QjgwNzAw
MzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1NEZFNzMyMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM0MEEyMjk3QkUwMDU4RDdBRCAvKiBO
b2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFQUMxMDkxQjQ4M0Q3RjAwMzM0
NDgyIC8qIE5vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMjQ4LDkgKzMwMjI5
LDYgQEAKIAkJCQk5M0YxOUFCOTA4MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjU1QjNEQ0QxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTk4QkRGMDFBODExNDIyMDBCMjJGQjUgLyog
UmVhZGFibGVKU1N0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUEwMjNFRjFBMzlEQjdB
MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5RkFG
QUUxQUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEMzE2MDNCMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTRBNEY2NTcwMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBMEZGQUExMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5k
ZXggMTljOTUxYjA5NGJkMDhkNzdmNGYxNzNjMjlhMzNiZWI1ZmFjN2FmMC4uMGE0YTgzNjdlMmM2
NThkOTFkYjc1ZTcxY2QzMjRkN2I5MWVkMDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMTcsMTIgKzExNyw3IEBACiAj
aW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5jcHAiCiAjaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCIKLSNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
dXN0b20uY3BwIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIgotI2luY2x1
ZGUgIkpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIlJlYWRhYmxl
SlNTdHJlYW0uY3BwIgotI2VuZGlmCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVD
b25zdHJ1Y3RvcnMuY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNT
VkdMZW5ndGhDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKaW5kZXggMzA2Y2U0YjQ4NzY1ZGI0NjYwYjIzOWY5ZjQ0N2ZlZGFkOGNm
MGRkNi4uNzZjZjhmOGZhMzI5ODljOGNkM2E5MGNmNjNiZTkwMTY2NzFiOGVhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyNpbmNsdWRlICJKU1Jl
YWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCIKICNlbmRpZgogCkBAIC04OCw2ICs4OSwxMSBAQCB2b2lk
IEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTVdpbmRvd1NoZWxs
KiBzaGVsbCkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmRv
Y3VtZW50LCBqc051bGwoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPndpbmRvdywgbV9zaGVsbCwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyhzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLnJlYWRhYmxlU3RyZWFtQ2xvc2VkUHJpdmF0ZU5hbWUoKSwganNO
dW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyhzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLnJlYWRhYmxlU3RyZWFtRXJyb3JlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVy
KDIpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
c3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5yZWFkYWJsZVN0cmVhbVJlYWRhYmxlUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoMyks
IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhzdGF0
aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1l
cygpLlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVOYW1lKCksIGdldERPTUNvbnN0cnVj
dG9yPEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yPih2bSwgdGhp
cyksIERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhz
dGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpLlJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZU5hbWUoKSwgZ2V0RE9NQ29uc3RydWN0
b3I8SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcj4odm0sIHRoaXMpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogI2RlZmluZSBERUNMQVJFX0dMT0JBTF9TVEFUSUMobmFt
ZSlcCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhcCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPnJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgxN2UzM2M3Y2ZiZmJk
OGY3MDIyMzc1NThkNzMwZjgwMzJiODBhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0g
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLSNp
bmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hvdWxkIG5vdCBiZSBjYWxsZWQg
ZGlyZWN0bHkiKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9t
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2NjNjZTc4ZGVkZjczNmIyMmZj
MzkxMDU1MjRiMmRhM2JlZDAxMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3Vz
dG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNpbmNs
dWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0jaW5j
bHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJl
YW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU1JlYWRh
YmxlU3RyZWFtOjpwaXBlVG8oRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBKU1ZhbHVlIGVycm9y
ID0gY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoInBpcGVUbyBpcyBub3QgaW1wbGVt
ZW50ZWQiKSk7Ci0gICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBl
cnJvcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFt
UHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZkYWYzZDBlZmM0ZjVlY2QwZmM5
MzNkMGIzZWQ0ZGYzMTJjNjA3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtMCww
ICsxLDExNyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3Jz
LmgiCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3Ry
ZWFtLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQ2FsbERhdGEuaD4KKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlVHlwZUVy
cm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1
Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbVJlYWRlcihFeGVjU3Rh
dGUqIHN0YXRlKQoreworICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nh
c3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFzdHJl
YW0pCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcihz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBwYXJh
bWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0iKSkpOworCisgICAgSlNWYWx1ZSBqc0Z1bmN0
aW9uID0gc3RyZWFtLT5nZXQoc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJn
ZXRSZWFkZXIiKSk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBub0FyZ3VtZW50czsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwo
c3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgc3RyZWFtLCBub0FyZ3VtZW50
cykpOworfQorCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0lu
Zm8gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3RvciIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQ
cml2YXRlQ29uc3RydWN0b3IpIH07CisKK0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0
ZUNvbnN0cnVjdG9yOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rv
cihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCit7Cit9CisKK3ZvaWQgSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHNldElu
aXRpYWxpemVGdW5jdGlvbih2bSwgKkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoRXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKKyAgICBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpOworICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IEpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyPihn
bG9iYWxPYmplY3Qudm0oKSwgJmdsb2JhbE9iamVjdCksICZnbG9iYWxPYmplY3QsIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlKCkpOworICAgIGNhbGxGdW5jdGlvbldpdGhDdXJyZW50
QXJndW1lbnRzKCpzdGF0ZSwgKm9iamVjdCwgKmNhc3RlZFRoaXMtPmluaXRpYWxpemVGdW5jdGlv
bigpKTsKKyAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKK30KKworQ29u
c3RydWN0VHlwZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQor
eworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByaXZhdGVDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJl
YWRlclByaXZhdGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3RvcikgfTsKKworSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByaXZhdGVDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
Cit7Cit9CisKK3ZvaWQgSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CisgICAgc2V0SW5pdGlhbGl6ZUZ1bmN0aW9uKHZtLCAqSlNGdW5jdGlvbjo6Y3JlYXRl
QnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFs
aXplUmVhZGFibGVTdHJlYW1SZWFkZXJDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNSZWFkYWJsZVN0cmVhbVJlYWRl
clByaXZhdGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbVJlYWRlcihFeGVj
U3RhdGUqIHN0YXRlKQoreworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNSZWFkYWJs
ZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CisgICAg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
OjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KGdsb2JhbE9i
amVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0KSwgJmdsb2JhbE9iamVjdCwgUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OmNyZWF0ZSgpKTsKKyAgICBjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFyZ3VtZW50cygq
c3RhdGUsICpvYmplY3QsICpjYXN0ZWRUaGlzLT5pbml0aWFsaXplRnVuY3Rpb24oKSk7CisgICAg
cmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7Cit9CisKK0NvbnN0cnVjdFR5cGUg
SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Jl
YWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZTdhZDc4MGIzZWQyY2JhZWY1ZDQwMzY2ZTVmMzk0NmRlOGVmZmNiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25z
dHJ1Y3RvcnMuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaWZuZGVmIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzX2gKKyNk
ZWZpbmUgSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnNfaAorCisjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3QgQmFzZTsKKworICAgIHN0
YXRpYyBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcml2YXRlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKK3By
aXZhdGU6CisgICAgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3Io
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6Q29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3RE
YXRhJik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihKU0M6OkV4ZWNTdGF0ZSopOworfTsKKwor
Y2xhc3MgSlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBE
T01Db25zdHJ1Y3RvckpTQnVpbHRpbk9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBET01D
b25zdHJ1Y3RvckpTQnVpbHRpbk9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAg
ICB7CisgICAgICAgIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNSZWFkYWJsZVN0cmVhbVJl
YWRlclByaXZhdGVDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUmVhZGFibGVTdHJlYW1SZWFk
ZXJQcml2YXRlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKEpTQzo6RXhl
Y1N0YXRlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5k
aWYgLy8gUmVhZGFibGVTdHJlYW1Db25zdHJ1Y3RvcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRiMTY5NzJlOTc4ODU5MmE0NDIzNmJkOTI1
ZDVlNTllYzM0ODUyMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3Vz
dG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNpbmNs
dWRlICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVh
bS5oIgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1KU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZChF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAotewotICAgIGlmICghbV9jbG9zZWQpIHsKLSAgICAgICAg
SlNQcm9taXNlRGVmZXJyZWQqIGNsb3NlZFByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBtX2Nsb3NlZC5zZXQoc3RhdGUu
dm0oKSwgdGhpcywgY2xvc2VkUHJvbWlzZS0+cHJvbWlzZSgpKTsKLSAgICAgICAgaW1wbCgpLmNs
b3NlZChEZWZlcnJlZFdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgY2xvc2VkUHJvbWlz
ZSkpOwotICAgIH0KLSAgICByZXR1cm4gbV9jbG9zZWQuZ2V0KCk7Ci19Ci0KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbVJlYWRlcihFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgdGFrZXMgYSBSZWFkYWJsZVN0cmVh
bSBhcyBwYXJhbWV0ZXIiKSkpOwotCi0gICAgSlNSZWFkYWJsZVN0cmVhbSogc3RyZWFtID0ganNE
eW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4oZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlm
ICghc3RyZWFtKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9y
IHBhcmFtZXRlciBpcyBub3QgYSBSZWFkYWJsZVN0cmVhbSIpKSk7Ci0KLSAgICBpZiAoc3RyZWFt
LT5pbXBsKCkubG9ja2VkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3IgcGFyYW1ldGVyIGlzIGEgbG9ja2VkIFJlYWRhYmxlU3RyZWFtIikpKTsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywgc3RyZWFtLT5nbG9iYWxPYmplY3QoKSwgc3RyZWFtLT5pbXBs
KCkuZ2V0UmVhZGVyKGVjKSkpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHJldHVybiB2YWx1ZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRjYzc3ZmU3ZmYxMjY2MjA3ZjBkM2U4NDNmOGQ0ZjhiZjk4NTE4MjYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKLSNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0jaW5jbHVk
ZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNQcm9taXNlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjYWxsRnVuY3Rpb24o
RXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGpzRnVuY3Rpb24sIEpTVmFsdWUgdGhpc1ZhbHVlLCBj
b25zdCBBcmdMaXN0JiBhcmd1bWVudHMpCi17Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7Ci0g
ICAgcmV0dXJuIGNhbGwoJmV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmd1bWVudHMpOwotfQotCi1KU1Byb21pc2UqIFJlYWRhYmxlSlNTdHJlYW06Omlu
dm9rZShFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
cGFyYW1ldGVyKQotewotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZyb21PYmpl
Y3Qoc3RhdGUsICptX3NvdXJjZS5nZXQoKSwgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKCFmdW5j
dGlvbi5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKCFmdW5jdGlvbi5pc1VuZGVmaW5lZCgp
KQotICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2FsbCBhIHByb3BlcnR5
IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5h
cHBlbmQocGFyYW1ldGVyKTsKLQotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IGpzRHluYW1pY0Nh
c3Q8SlNQcm9taXNlKj4oY2FsbEZ1bmN0aW9uKHN0YXRlLCBmdW5jdGlvbiwgbV9zb3VyY2UuZ2V0
KCksIGFyZ3VtZW50cykpOwotCi0gICAgQVNTRVJUKCEocHJvbWlzZSAmJiBzdGF0ZS5oYWRFeGNl
cHRpb24oKSkpOwotICAgIHJldHVybiBwcm9taXNlOwotfQotCi1zdGF0aWMgdm9pZCB0aGVuUHJv
bWlzZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Byb21pc2UqIGRlZmVycmVkUHJvbWlzZSwgSlNWYWx1
ZSBmdWxsZmlsRnVuY3Rpb24sIEpTVmFsdWUgcmVqZWN0RnVuY3Rpb24pCi17Ci0gICAgSlNWYWx1
ZSB0aGVuVmFsdWUgPSBkZWZlcnJlZFByb21pc2UtPmdldCgmc3RhdGUsIHN0YXRlLnZtKCkucHJv
cGVydHlOYW1lcy0+dGhlbik7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJn
dW1lbnRzLmFwcGVuZChmdWxsZmlsRnVuY3Rpb24pOwotICAgIGFyZ3VtZW50cy5hcHBlbmQocmVq
ZWN0RnVuY3Rpb24pOwotCi0gICAgY2FsbEZ1bmN0aW9uKHN0YXRlLCB0aGVuVmFsdWUsIGRlZmVy
cmVkUHJvbWlzZSwgYXJndW1lbnRzKTsKLX0KLQotSlNET01HbG9iYWxPYmplY3QqIFJlYWRhYmxl
SlNTdHJlYW06Omdsb2JhbE9iamVjdCgpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihtX3NvdXJjZS0+Z2xvYmFsT2JqZWN0KCkpOwotfQotCi1zdGF0aWMg
aW5saW5lIEpTRnVuY3Rpb24qIGNyZWF0ZUdlbmVyaWNFcnJvclJlamVjdGVkRnVuY3Rpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgUmVhZGFibGVKU1N0cmVhbSYgcmVhZGFibGVTdHJlYW0pCi17Ci0gICAg
UmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJsZVN0cmVhbTsKLSAgICBy
ZXR1cm4gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHN0YXRlLmNhbGxl
ZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtzdHJlYW1dKEV4ZWNTdGF0ZSogc3Rh
dGUpIHsKLSAgICAgICAgc3RyZWFtLT5zdG9yZUVycm9yKCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICB9KTsKLX0KLQotc3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVTdGFydFJlc3VsdEZ1
bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlYWRhYmxlU3RyZWFtJiByZWFkYWJs
ZVN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJs
ZVN0cmVhbTsKLSAgICByZXR1cm4gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZt
KCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtzdHJlYW1d
KEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgc3RyZWFtLT5zdGFydCgpOwotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0pOwotfQotCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0p
Ci17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAmc3RyZWFt
OwotICAgIHN0cmVhbS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtwcm90ZWN0
ZWRTdHJlYW1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIHByb3RlY3RlZFN0
cmVhbS0+c3RhcnQoKTsKLSAgICB9KTsKLX0KLQotSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5xdWV1
aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQoKQotewotICAgIFJlYWRhYmxl
SlNTdHJlYW1WYWx1ZSBjaHVuayA9IG1fcXVldWUudGFrZUZpcnN0KCk7Ci0gICAgbV90b3RhbFF1
ZXVlU2l6ZSAtPSBjaHVuay5zaXplOwotICAgIHJldHVybiBjaHVuay52YWx1ZS5nZXQoKTsKLX0K
LQotdm9pZCBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+Ojpl
bnF1ZXVlQ2h1bmsoUmVhZGFibGVKU1N0cmVhbVZhbHVlJiYgY2h1bmspCi17Ci0gICAgbV90b3Rh
bFF1ZXVlU2l6ZSArPSBjaHVuay5zaXplOwotICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZShj
aHVuaykpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBl
eGVjKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKCZleGVjKTsKLQotICAgIEpTUHJvbWlzZSog
cHJvbWlzZSA9IGludm9rZShleGVjLCAic3RhcnQiLCBqc0NvbnRyb2xsZXIoZXhlYywgZ2xvYmFs
T2JqZWN0KCkpKTsKLQotICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIXByb21pc2UpIHsKLSAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFz
eW5jKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRoZW5Qcm9taXNlKGV4
ZWMsIHByb21pc2UsIGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oZXhlYywgKnRo
aXMpLCBjcmVhdGVHZW5lcmljRXJyb3JSZWplY3RlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgSlNGdW5jdGlvbiogY3JlYXRlUHVsbFJlc3VsdEZ1bGZpbGxlZEZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSA9ICZzdHJlYW07Ci0gICAgcmV0
dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhlY1N0YXRl
KikgewotICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPmZpbmlzaFB1bGxpbmcoKTsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9KTsKLX0KLQotYm9v
bCBSZWFkYWJsZUpTU3RyZWFtOjpkb1B1bGwoKQotewotICAgIEV4ZWNTdGF0ZSYgc3RhdGUgPSAq
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jaygmc3Rh
dGUpOwotCi0gICAgSlNQcm9taXNlKiBwcm9taXNlID0gaW52b2tlKHN0YXRlLCAicHVsbCIsIGpz
Q29udHJvbGxlcihzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpKTsKLQotICAgIGlmIChwcm9taXNlKQot
ICAgICAgICB0aGVuUHJvbWlzZShzdGF0ZSwgcHJvbWlzZSwgY3JlYXRlUHVsbFJlc3VsdEZ1bGZp
bGxlZEZ1bmN0aW9uKHN0YXRlLCAqdGhpcyksIGNyZWF0ZUdlbmVyaWNFcnJvclJlamVjdGVkRnVu
Y3Rpb24oc3RhdGUsICp0aGlzKSk7Ci0KLSAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpIHsK
LSAgICAgICAgc3RvcmVFeGNlcHRpb24oc3RhdGUpOwotICAgICAgICBBU1NFUlQoIXN0YXRlLmhh
ZEV4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJu
ICFwcm9taXNlOwotfQotCi1zdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVzdWx0RnVs
ZmlsbGVkRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQot
ewotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gcHJvdGVjdGVkU3RyZWFtID0gJnN0cmVhbTsK
LSAgICByZXR1cm4gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMudm0oKSwgZXhlYy5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbcHJvdGVjdGVkU3RyZWFtXShF
eGVjU3RhdGUqKSB7Ci0gICAgICAgIHByb3RlY3RlZFN0cmVhbS0+bm90aWZ5Q2FuY2VsU3VjY2Vl
ZGVkKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgfSk7Ci19Ci0KLXN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVDYW5jZWxSZXN1bHRSZWplY3Rl
ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKQotewot
ICAgIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAmc3RyZWFtOwot
ICAgIHJldHVybiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy52bSgpLCBleGVjLmNh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtwcm90ZWN0ZWRTdHJlYW1dKEV4
ZWNTdGF0ZSogZXhlYykgewotICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPnN0b3JlRXJyb3IoKmV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5ub3RpZnlD
YW5jZWxGYWlsZWQoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFkYWJsZUpTU3RyZWFtOjpkb0NhbmNlbChKU1Zh
bHVlIHJlYXNvbikKLXsKLSAgICBFeGVjU3RhdGUmIGV4ZWMgPSAqZ2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jaygmZXhlYyk7Ci0KLSAgICBKU1Byb21p
c2UqIHByb21pc2UgPSBpbnZva2UoZXhlYywgImNhbmNlbCIsIHJlYXNvbik7Ci0KLSAgICBpZiAo
cHJvbWlzZSkKLSAgICAgICAgdGhlblByb21pc2UoZXhlYywgcHJvbWlzZSwgY3JlYXRlQ2FuY2Vs
UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oZXhlYywgKnRoaXMpLCBjcmVhdGVDYW5jZWxSZXN1bHRS
ZWplY3RlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSk7Ci0KLSAgICBpZiAoZXhlYy5oYWRFeGNlcHRp
b24oKSkgewotICAgICAgICBzdG9yZUV4Y2VwdGlvbihleGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
eGVjLmhhZEV4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiAhcHJvbWlzZTsKLX0KLQotUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNT
dHJlYW06OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBzb3VyY2Us
IGNvbnN0IERpY3Rpb25hcnkmIHN0cmF0ZWd5KQotewotICAgIEpTT2JqZWN0KiBqc1NvdXJjZTsK
LSAgICBpZiAoc291cmNlLmlzT2JqZWN0KCkpCi0gICAgICAgIGpzU291cmNlID0gc291cmNlLmdl
dE9iamVjdCgpOwotICAgIGVsc2UgaWYgKCFzb3VyY2UuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIkFyZ3VtZW50IDEgb2YgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgbXVzdCBiZSBhbiBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGpzU291cmNlID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKHN0
YXRlLnZtKCksIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS52bSgpLCBzdGF0
ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpLCAxKSk7Ci0KLSAgICBkb3VibGUg
aGlnaFdhdGVyTWFyayA9IDE7Ci0gICAgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9uID0gbnVsbHB0
cjsKLSAgICBpZiAoIXN0cmF0ZWd5LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgaWYg
KHN0cmF0ZWd5LmdldCgiaGlnaFdhdGVyTWFyayIsIGhpZ2hXYXRlck1hcmspKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RkOjppc25hbihoaWdoV2F0ZXJNYXJrKSkgewotICAgICAgICAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoJnN0YXRlLCAiJ2hpZ2hXYXRlck1hcmsnIG9mIEFyZ3VtZW50IDIgb2Yg
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2Fubm90IGJlIE5hTiIpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGhpZ2hX
YXRlck1hcmsgPCAwKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dWTVJhbmdlRXJyb3IoJnN0YXRl
LCAiJ2hpZ2hXYXRlck1hcmsnIG9mIEFyZ3VtZW50IDIgb2YgUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0b3IgY2Fubm90IGJlIG5lZ2F0aXZlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGlmIChzdHJhdGVn
eS5nZXQoInNpemUiLCBzaXplRnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICBpZiAoIXNpemVGdW5j
dGlvbikgewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCAiJ3NpemUn
IG9mIEFyZ3VtZW50IDIgb2YgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgbXVzdCBiZSBhIGZ1
bmN0aW9uIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcmVh
ZGFibGVTdHJlYW0gPSBhZG9wdFJlZigqbmV3IFJlYWRhYmxlSlNTdHJlYW0oc3RhdGUsIGpzU291
cmNlLCBoaWdoV2F0ZXJNYXJrLCBzaXplRnVuY3Rpb24pKTsKLSAgICByZWFkYWJsZVN0cmVhbS0+
ZG9TdGFydChzdGF0ZSk7Ci0KLSAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtOwotfQotCi1SZWFk
YWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0
KiBzb3VyY2UsIGRvdWJsZSBoaWdoV2F0ZXJNYXJrLCBKU0Z1bmN0aW9uKiBzaXplRnVuY3Rpb24p
Ci0gICAgOiBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpLCBoaWdoV2F0ZXJNYXJr
KQotewotICAgIG1fc291cmNlLnNldChzdGF0ZS52bSgpLCBzb3VyY2UpOwotICAgIGlmIChzaXpl
RnVuY3Rpb24pCi0gICAgICAgIG1fc2l6ZUZ1bmN0aW9uLnNldChzdGF0ZS52bSgpLCBzaXplRnVu
Y3Rpb24pOwotfQotCi1KU1ZhbHVlIFJlYWRhYmxlSlNTdHJlYW06OmpzQ29udHJvbGxlcihFeGVj
U3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgaWYg
KCFtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPigqdGhpcyk7Ci0gICAgcmV0dXJuIHRvSlMoJmV4ZWMs
IGdsb2JhbE9iamVjdCwgbV9jb250cm9sbGVyLmdldCgpKTsKLX0KLQotdm9pZCBSZWFkYWJsZUpT
U3RyZWFtOjpjbG9zZShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoaXNDbG9zZVJlcXVl
c3RlZCgpIHx8IGlzRXJyb3JlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKLX0KLQotdm9pZCBS
ZWFkYWJsZUpTU3RyZWFtOjplcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFpc1JlYWRhYmxlKCkpIHsK
LSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3Rv
cmVFcnJvcihzdGF0ZSwgdmFsdWUpOwotfQotCi12b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3Jl
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBKU1ZhbHVlIGV4Y2VwdGlv
biA9IHN0YXRlLmV4Y2VwdGlvbigpLT52YWx1ZSgpOwotICAgIHN0YXRlLmNsZWFyRXhjZXB0aW9u
KCk7Ci0gICAgc3RvcmVFcnJvcihzdGF0ZSwgZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBSZWFkYWJs
ZUpTU3RyZWFtOjpzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGVycm9y
KQotewotICAgIGlmIChtX2Vycm9yKQotICAgICAgICByZXR1cm47Ci0gICAgbV9lcnJvci5zZXQo
ZXhlYy52bSgpLCBlcnJvcik7Ci0KLSAgICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwotfQotCi12
b2lkIFJlYWRhYmxlSlNTdHJlYW06OmVucXVldWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgY2h1bmspCi17Ci0gICAgaWYgKGlzRXJyb3JlZCgpKSB7Ci0gICAgICAgIHRocm93
Vk1FcnJvcigmc3RhdGUsIGVycm9yKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChpc0Nsb3NlUmVxdWVzdGVkKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgVHlwZUVycm9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKCFpc1JlYWRhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChy
ZXNvbHZlUmVhZENhbGxiYWNrKGNodW5rKSkgewotICAgICAgICBwdWxsKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBkb3VibGUgc2l6ZSA9IHJldHJpZXZlQ2h1bmtTaXplKHN0YXRl
LCBjaHVuayk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBlbnF1ZXVlQ2h1bmsoeyBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+KHN0YXRlLnZt
KCksIGNodW5rKSwgc2l6ZSB9KTsKLQotICAgIHB1bGwoKTsKLX0KLQotZG91YmxlIFJlYWRhYmxl
SlNTdHJlYW06OnJldHJpZXZlQ2h1bmtTaXplKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgY2h1
bmspCi17Ci0gICAgaWYgKCFtX3NpemVGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChj
aHVuayk7Ci0KLSAgICBKU1ZhbHVlIHNpemVWYWx1ZSA9IGNhbGxGdW5jdGlvbihzdGF0ZSwgbV9z
aXplRnVuY3Rpb24uZ2V0KCksIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0gICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHN0b3JlRXJyb3Ioc3RhdGUsIHN0YXRlLmV4
Y2VwdGlvbigpLT52YWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZG91
YmxlIHNpemUgPSBzaXplVmFsdWUudG9OdW1iZXIoJnN0YXRlKTsKLSAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpIHsKLSAgICAgICAgc3RvcmVFcnJvcihzdGF0ZSwgc3RhdGUuZXhjZXB0aW9u
KCktPnZhbHVlKCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUoc2l6ZSkgfHwgc2l6ZSA8IDApIHsKLSAgICAgICAgc3RvcmVFcnJvcihzdGF0ZSwg
Y3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgUmFuZ2VFcnJvcikpOwotICAgICAgICB0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBlcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHNpemU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY4MzFiODkxNjNkNTVhMjk3NzViNTEzYWFkMzc4MGY4N2RlZDI0
OGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDJPMTUgQ2Fub24gSW5jLiAyMDE1
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4gMjAxNQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0g
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJl
YWRhYmxlSlNTdHJlYW1faAotI2RlZmluZSBSZWFkYWJsZUpTU3RyZWFtX2gKLQotI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSA8
aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+
Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLWNsYXNzIEpTRnVuY3Rpb247Ci1jbGFzcyBKU1Byb21pc2U7Ci19Ci0gICAgCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OwotY2xhc3MgUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1z
dHJ1Y3QgUmVhZGFibGVKU1N0cmVhbVZhbHVlIHsKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IHZhbHVlOwotICAgIGRvdWJsZSBzaXplOwotfTsKLQotdGVtcGxhdGU8PiBjbGFzcyBSZWFk
YWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+IDogcHVibGljIFJlYWRh
YmxlU3RyZWFtIHsKLXB1YmxpYzoKLSAgICBkb3VibGUgZGVzaXJlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX3RvdGFsUXVldWVTaXplOyB9Ci0KLXByb3RlY3RlZDoK
LSAgICBSZWFkYWJsZUVucXVldWluZ1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBkb3VibGUgaGlnaFdhdGVyTWFyaykKLSAgICAgICAgOiBSZWFkYWJsZVN0cmVhbShjb250
ZXh0KQotICAgICAgICAsIG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKSB7IH0KLQotICAg
IHZvaWQgZW5xdWV1ZUNodW5rKFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSYmKTsKLQotcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUuY2xlYXIo
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBkZXNpcmVkU2l6ZSgpIDw9IDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3F1ZXVlLnNpemUoKTsgfQotICAgIHZpcnR1YWwg
SlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlkZTsKLQotICAgIERlcXVlPFJlYWRhYmxlSlNTdHJl
YW1WYWx1ZT4gbV9xdWV1ZTsKLSAgICBkb3VibGUgbV90b3RhbFF1ZXVlU2l6ZSB7IDAgfTsKLSAg
ICBkb3VibGUgbV9oaWdoV2F0ZXJNYXJrOwotfTsKLQotY2xhc3MgUmVhZGFibGVKU1N0cmVhbSBm
aW5hbCA6IHB1YmxpYyBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFs
dWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgRGljdGlvbmFyeSYpOwotCi0g
ICAgSlNDOjpKU1ZhbHVlIGpzQ29udHJvbGxlcihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFs
T2JqZWN0Kik7Ci0gICAgdm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJik7Ci0KLSAgICB2b2lkIHN0
b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotICAgIEpTQzo6SlNWYWx1
ZSBlcnJvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KLQotICAgIHZvaWQg
ZW5xdWV1ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgdm9pZCBlcnJvcihK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRl
OgotICAgIFJlYWRhYmxlSlNTdHJlYW0oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0Kiwg
ZG91YmxlLCBKU0M6OkpTRnVuY3Rpb24qKTsKLQotICAgIHZvaWQgZG9TdGFydChKU0M6OkV4ZWNT
dGF0ZSYpOwotCi0gICAgSlNDOjpKU1Byb21pc2UqIGludm9rZShKU0M6OkV4ZWNTdGF0ZSYsIGNv
bnN0IGNoYXIqLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKTsKLSAgICB2b2lkIHN0b3JlRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZG9QdWxsKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGRvQ2FuY2VsKEpTQzo6SlNWYWx1ZSkgb3ZlcnJpZGU7Ci0K
LSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCk7Ci0KLSAgICBkb3VibGUgcmV0
cmlldmVDaHVua1NpemUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAg
IC8vIEZJWE1FOiB3ZSBzaG91bGQgY29uc2lkZXIgbm90IHVzaW5nIEpTQzo6U3Ryb25nLCBzZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjI3OAotICAgIEpTQzo6
U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9lcnJvcjsKLQotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNP
YmplY3Q+IG1fc291cmNlOwotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNGdW5jdGlvbj4gbV9zaXpl
RnVuY3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoU1RSRUFNU19BUEkpCi0KLSNlbmRpZiAvLyBSZWFkYWJsZUpTU3RyZWFtX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOTllMDY5ZmVjY2M4NTYwYTgwN2EyYzZmYzM0YzNkOWEyNjA5NDkzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBA
IC0wLDAgKzEsNzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYkNvcmVCdWlsdGluTmFtZXNfaAor
I2RlZmluZSBXZWJDb3JlQnVpbHRpbk5hbWVzX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0
aW5VdGlscy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgV0VCQ09SRV9DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pXAorICAgIG1h
Y3JvKHN0YXRlKSBcCisgICAgbWFjcm8odW5kZXJseWluZ1NvdXJjZSkgXAorICAgIG1hY3JvKHF1
ZXVlKSBcCisgICAgbWFjcm8ocXVldWVTaXplKSBcCisgICAgbWFjcm8oc3RhcnRlZCkgXAorICAg
IG1hY3JvKGNsb3NlUmVxdWVzdGVkKSBcCisgICAgbWFjcm8ocHVsbEFnYWluKSBcCisgICAgbWFj
cm8ocHVsbGluZykgXAorICAgIG1hY3JvKHJlYWRlcikgXAorICAgIG1hY3JvKHN0b3JlZEVycm9y
KSBcCisgICAgbWFjcm8oY29udHJvbGxlcikgXAorICAgIG1hY3JvKHN0cmF0ZWd5U2l6ZSkgXAor
ICAgIG1hY3JvKGhpZ2hXYXRlck1hcmspIFwKKyAgICBtYWNybyhyZWFkUmVxdWVzdHMpIFwKKyAg
ICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oY2xvc2VkUHJvbWlzZSkg
XAorICAgIG1hY3JvKGNsb3NlZFByb21pc2VSZXNvbHZlKSBcCisgICAgbWFjcm8oY2xvc2VkUHJv
bWlzZVJlamVjdCkgXAorICAgIG1hY3JvKGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSkgXAorICAg
IG1hY3JvKHJlYWRhYmxlU3RyZWFtQ2xvc2VkKSBcCisgICAgbWFjcm8ocmVhZGFibGVTdHJlYW1S
ZWFkYWJsZSkgXAorICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkgXAorICAgIG1hY3Jv
KFJlYWRhYmxlU3RyZWFtUmVhZGVyKSBcCisgICAgbWFjcm8oUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyKSBcCisKK2NsYXNzIFdlYkNvcmVCdWlsdGluTmFtZXMgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IFdlYkNvcmVCdWlsdGluTmFtZXMoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0p
CisgICAgICAgIFdFQkNPUkVfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJU
WV9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyAgICB7CisjZGVmaW5lIEVYUE9SVF9O
QU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1
YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIFdFQkNPUkVfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEVYUE9SVF9OQU1FKQorI3Vu
ZGVmIEVYUE9SVF9OQU1FCisgICAgfQorCisgICAgV0VCQ09SRV9DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUND
RVNTT1IpCisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKyAgICBXRUJDT1JFX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
TkFNRVMpCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJDb3Jl
QnVpbHRpbk5hbWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0J1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0J1aWx0aW5zLmNwcAppbmRleCAwY2NiNDExZmEyODRlNmMzZWUxYTkyMjFhODI4ZWM4NDJlZTEx
MzI3Li45NmM3ZTBlOTdlNzE4NzAwMGNjMGExNWExZGRhOTdjNDUwYWFiYjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMuY3BwCkBAIC0yOSw1
ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNw
cCIKICNpbmNsdWRlICJDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCIKICNpbmNsdWRl
ICJSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJCdWlsdGlucy5jcHAiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5jcHAiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlucy5jcHAi
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaAppbmRleCAwM2RjNjQxN2M1NmNjYjgwZjIxNWI4YTcxZjAwN2Q3ZjQyZGJjYjViLi44
NzBkZDgxOGViODI5NDU3ZWE4MGUzNTM4YTg3MWQ0OTk1Mjc0YzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCkBAIC0yMyw2ICsyMyw3
IEBACiAjZGVmaW5lIFdlYkNvcmVKU0NsaWVudERhdGFfaAogCiAjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCisjaW5jbHVkZSAiV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzEsNyArMzIsOSBAQAogI2luY2x1ZGUgIkJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCIKICNpbmNsdWRlICJDb3VudFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFt
QnVpbHRpbnNXcmFwcGVyLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVp
bHRpbnNXcmFwcGVyLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
c1dyYXBwZXIuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBl
ci5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDE0ICs0NSwxNSBAQCBj
bGFzcyBXZWJDb3JlSlNDbGllbnREYXRhIDogcHVibGljIEpTQzo6Vk06OkNsaWVudERhdGEgewog
ICAgIGZyaWVuZCB2b2lkIGluaXROb3JtYWxXb3JsZENsaWVudERhdGEoSlNDOjpWTSopOwogCiBw
dWJsaWM6Ci0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIGV4cGxpY2l0IFdlYkNvcmVKU0Ns
aWVudERhdGEoSlNDOjpWTSYgdm0pCi0gICAgICAgIDogbV9yZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
KCZ2bSkKKyAgICAgICAgOiBtX2J1aWx0aW5OYW1lcygmdm0pCisjaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQorICAgICAgICAsIG1fcmVhZGFibGVTdHJlYW1CdWlsdGlucygmdm0pCisgICAgICAgICwg
bV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucygmdm0pCiAgICAgICAgICwgbV9yZWFk
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCZ2bSkKKyAgICAgICAgLCBtX3JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQnVpbHRpbnMoJnZtKQogICAgICAgICAsIG1fYnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zKCZ2bSkKICAgICAgICAgLCBtX2NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMoJnZtKQotI2Vsc2UKLSAgICBXZWJDb3JlSlNDbGllbnREYXRhKEpTQzo6Vk0mKQogI2VuZGlm
CiAgICAgewogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKQEAgLTg5LDkgKzkzLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV93b3JsZFNldC5yZW1vdmUoJndvcmxkKTsKICAgICB9CiAKKyAgICBXZWJD
b3JlQnVpbHRpbk5hbWVzJiBidWlsdGluTmFtZXMoKSB7IHJldHVybiBtX2J1aWx0aW5OYW1lczsg
fQorCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNX
cmFwcGVyJiByZWFkYWJsZVN0cmVhbUJ1aWx0aW5zKCkgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVh
bUJ1aWx0aW5zOyB9CisgICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFwcGVy
JiByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucygpIHsgcmV0dXJuIG1fcmVhZGFibGVT
dHJlYW1Db250cm9sbGVyQnVpbHRpbnM7IH0KICAgICBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zV3JhcHBlciYgcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpIHsgcmV0dXJu
IG1fcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluczsgfQorICAgIFJlYWRhYmxlU3RyZWFt
UmVhZGVyQnVpbHRpbnNXcmFwcGVyJiByZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zKCkgeyBy
ZXR1cm4gbV9yZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zOyB9CiAgICAgQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlciYgYnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zKCkgeyByZXR1cm4gbV9ieXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnM7IH0K
ICAgICBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlciYgY291bnRRdWV1aW5nU3Ry
YXRlZ3lCdWlsdGlucygpIHsgcmV0dXJuIG1fY291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluczsg
fQogI2VuZGlmCkBAIC0xMDAsOSArMTA4LDEzIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxET01X
cmFwcGVyV29ybGQqPiBtX3dvcmxkU2V0OwogICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1f
bm9ybWFsV29ybGQ7CiAKKyAgICBXZWJDb3JlQnVpbHRpbk5hbWVzIG1fYnVpbHRpbk5hbWVzOwor
CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNXcmFw
cGVyIG1fcmVhZGFibGVTdHJlYW1CdWlsdGluczsKKyAgICBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJCdWlsdGluc1dyYXBwZXIgbV9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGluczsKICAg
ICBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlciBtX3JlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnM7CisgICAgUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluc1dyYXBw
ZXIgbV9yZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zOwogICAgIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIgbV9ieXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnM7CiAgICAgQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIgbV9jb3VudFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTg5YTA4MzUyNWJhZmZlOTQ4ZmVm
NjJhNTI2ZTFmMDcxZjg4YmYzYS4uYmRkNjQ0MTliYzVjYzJhNTc4ODlhZDc5Mzk0NzdmNjYwMTA4
MTgxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE1LTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgTWlncmF0ZSBzdHJlYW1zIEFQ
SSB0byBKUyBCdWlsdGlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ3MDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmViYXNpbmcgc29tZSB0ZXN0cywgb25lIHN1YnRlc3QgcGFzc2luZywgdHdvIG90
aGVycyBzdGlsbCBmYWlsaW5nIGJ1dCB3aXRoIGRpZmZlcmVudCByZWFzb25zLgorCisgICAgICAg
ICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dDoKKworMjAxNS0xMC0wMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFtTdHJlYW1zIEFQSV0g
QWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgV2ViQ29yZSBKUyBidWlsdGlucyBmdW5jdGlvbnMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTUxOAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
cmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAppbmRleCA1MGFkMTdmYzY1
OGQwMzQ4MDkwYjNiYjViMjM1ZDU3OGUzODk1MjgyLi5jNTZiMGY4ZDQyMDFmZWRjOTg2ZWE3N2Fk
ZDdiM2ZhMDIyODU2ZWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3Rl
ZC50eHQKQEAgLTQsMTAgKzQsMTAgQEAgUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseQogRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KIEZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CiBQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCB3b3JrcyBnZW5lcmlj
YWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLUZBSUwgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUbyB3b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFy
Z3VtZW50cyBDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtLnBpcGVUbyBvbiBpbnN0YW5jZXMg
b2YgUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUbyB3
b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyBwaXBlVG8gaXMg
bm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQogUEFT
UyBSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1
bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFtZSkuZ2V0JykKK1BB
U1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5y
ZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnBy
b3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVh
ZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CmluZGV4IDI2NDBjZDIw
YTJiZTMwYTA2NDVhMDA3YzE2ODRiNWZiODYwYzU4NzYuLjU4YWM5NGMzZmViNjZkZmI1MzRhOGU4
NmMxOTEwZDViZGY0NzkxMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCiBQQVNTIENhbiBn
ZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCiBQQVNT
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0
cmVhbSBvYmplY3QgYXMgYXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3Rh
bmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2Fy
cmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDUgZ290IDQKK0ZBSUwgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2Yg
cHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxl
IGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBj
bG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCiBQQVNT
IENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWls
IGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9u
KSAKIFBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hv
dWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25z
dHJ1Y3Rpb24pIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262325</attachid>
            <date>2015-10-02 03:08:38 -0700</date>
            <delta_ts>2015-10-05 05:56:12 -0700</delta_ts>
            <desc>Minor refactoring</desc>
            <filename>bug-147092-20151002070810.patch</filename>
            <type>text/plain</type>
            <size>125085</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyZGNiMTViYTU5MWM2
YmFjM2NlZDc3YzZjZTIyYWYzZWE4MTQ3ZC4uMmMwMGFkOTBkMjVhYjI2MzUxYzNkMWQ1MDZmYmRk
YTk1OWIzZDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk2IEBACiAyMDE1LTEwLTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgTWlncmF0
ZSBzdHJlYW1zIEFQSSB0byBKUyBCdWlsdGlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50YXRpb24g
ZnJvbSBDKysgdG8gSlMgQnVpbHRpbnMuCisgICAgICAgIENyZWF0ZWQgc3BlY2lmaWMgcHJpdmF0
ZSBjb25zdHJ1Y3RvcnMgZm9yIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGFuZCBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuCisgICAgICAgIEFkZGVkIHRoZXNlIGNvbnN0cnVjdG9ycyB0byAgSlNET01X
aW5kb3dCYXNlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChzdHJhdGVneS5zaXplKToKKyAg
ICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChjYW5jZWwpOgorICAg
ICAgICAoZ2V0UmVhZGVyKToKKyAgICAgICAgKHBpcGVUbyk6CisgICAgICAgICh0ZWUpOgorICAg
ICAgICAobG9ja2VkKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5qczogQWRkZWQuCisgICAgICAgIChlbnF1ZXVlKToKKyAgICAgICAgKGVycm9yKToK
KyAgICAgICAgKGNsb3NlKToKKyAgICAgICAgKGRlc2lyZWRTaXplKToKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChwcml2YXRl
SW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKHByaXZhdGVJbml0aWFs
aXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKGlzUmVhZGFibGVTdHJlYW0p
OgorICAgICAgICAoaXNSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChpc1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChlcnJvclJlYWRhYmxlU3RyZWFtKToKKyAgICAg
ICAgKHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwpOgorICAgICAgICAoZ2V0UmVhZGFibGVTdHJl
YW1EZXNpcmVkU2l6ZSk6CisgICAgICAgIChyZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXIpOgor
ICAgICAgICAoY2FuY2VsUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoZmluaXNoQ2xvc2luZ1Jl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAo
Y2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChlbnF1ZXVlSW5SZWFkYWJsZVN0
cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAg
KGludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JOb29wKToKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGw6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMuCisgICAgICAgIChjYW5j
ZWwpOgorICAgICAgICAocmVhZCk6CisgICAgICAgIChyZWxlYXNlTG9jayk6CisgICAgICAgIChj
bG9zZWQpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ckN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OkpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRl
clByaXZhdGVDb25zdHJ1Y3Rvcjo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRl
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmg6IFJlbW92ZWQu
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVCdWlsdGluTmFtZXM6OldlYkNvcmVCdWlsdGluTmFtZXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OldlYkNvcmVKU0NsaWVudERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6YnVpbHRpbk5hbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OnJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ckJ1aWx0aW5zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OnJlYWRh
YmxlU3RyZWFtUmVhZGVyQnVpbHRpbnMpOgorCisyMDE1LTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKICAgICAgICAgUmVmYWN0b3IgYmluZGluZyBn
ZW5lcmF0b3IgdG8gZmFjdG9yIEpTIERPTSBjbGFzcyBtX2ltcGwgaGFuZGxpbmcKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY2MAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDllMzc2Y2NhMWE0MDAxNmVjZGQ5MTJjOGI5MTlkZGIxZmQwNGVhYmIu
LjA3MmQzYWVjOTEzZTU0NmI1ODUyMDcwNDhjYzg1ODlkZTRhN2IwZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC05NzksOSArOTc5LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKICAgICBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKIAotICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKLSAgICBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
Ci0KICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwCiAgICAgTW9k
dWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcAogCkBAIC0xMjA4LDEzICsxMjA1LDExIEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U1JUQ0ljZUNhbmRpZGF0ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAK
LSAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKLSAg
ICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pz
L0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCkBAIC0x
MjQxLDcgKzEyMzYsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKLSAgICBi
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMzNTUsNyArMzM0OSw5IEBA
IHNldChXRUJDT1JFX0pTX0JVSUxUSU5TCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJl
YW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKICAgICAke1dFQkNPUkVfRElSfS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCiAgICAgJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisgICAgJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCiApCiAKIFdF
QktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggMGVmNTc5MjYyZDE2NjBhOTNkNjYwNzFjMzljMzYwOWU4N2RhMmVmYS4u
N2UzYzQwOWI5ZGEwMGU1MzJjODQ5M2JkNzUxNDlkMTk4ZmQwNGRkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xMjUzLDcgKzEyNTMsOSBAQCBXRUJDT1JFX0pTX0JVSUxUSU5T
ID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0
cmF0ZWd5LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5qcyBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bUludGVybmFscy5qcyBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuanMgXAogIwogCiBhbGwgOiAkKFdFQkNPUkVfSlNfQlVJTFRJTlM6JS5qcz0l
QnVpbHRpbnMuY3BwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZWRlYmExMTAz
MjQwOTU4YzNiYTU0ZDYxNjZmZTEwYTIyNzE4MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRv
IGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
LSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
Q0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0u
aCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW1SZWFkZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ERUZJTkVfREVCVUdfT05M
WV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291bnRl
ciwgKCJSZWFkYWJsZVN0cmVhbSIpKTsKLQotUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBSZWFkYWJs
ZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKLXsKLSAgICByZXR1cm4gUmVmUHRyPFJlYWRh
YmxlU3RyZWFtPihSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCBzdHJhdGVn
eSkpOwotfQotCi1SZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgm
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVhZGFibGVT
dHJlYW1Db3VudGVyLmluY3JlbWVudCgpOwotI2VuZGlmCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7
Ci19Ci0KLVJlYWRhYmxlU3RyZWFtOjp+UmVhZGFibGVTdHJlYW0oKQotewotI2lmbmRlZiBOREVC
VUcKLSAgICByZWFkYWJsZVN0cmVhbUNvdW50ZXIuZGVjcmVtZW50KCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xlYXJDYWxsYmFja3MoKQotewotICAgIG1fY2xvc2VkUHJv
bWlzZSA9IE51bGxvcHQ7Ci0gICAgbV9yZWFkUmVxdWVzdHMuY2xlYXIoKTsKLX0KLQotdm9pZCBS
ZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCi17Ci0gICAgQVNTRVJUKCFtX2Ns
b3NlUmVxdWVzdGVkKTsKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6RXJyb3JlZCk7Ci0K
LSAgICBtX2Nsb3NlUmVxdWVzdGVkID0gdHJ1ZTsKLQotICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpSZWFkYWJsZSB8fCBoYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgY2xvc2UoKTsK
LX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2UoKQotewotICAgIG1fc3RhdGUgPSBTdGF0
ZTo6Q2xvc2VkOwotICAgIHJlbGVhc2VSZWFkZXIoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVh
bTo6cmVsZWFzZVJlYWRlcigpCi17Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZWFkUmVx
dWVzdHMpCi0gICAgICAgIHJlcXVlc3QucmVzb2x2ZUVuZCgpOwotICAgIGlmIChtX3JlYWRlcikK
LSAgICAgICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShtX3JlYWRlcikpOwot
Ci0gICAgaWYgKG1fY2xvc2VkUHJvbWlzZSkKLSAgICAgICAgbV9jbG9zZWRQcm9taXNlLnZhbHVl
KCkucmVzb2x2ZShudWxscHRyKTsKLSAgICBjbGVhckNhbGxiYWNrcygpOwotfQotCi12b2lkIFJl
YWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCi17Ci0gICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlJlYWRhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjbGVhclZhbHVlcygp
OwotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwotCi0gICAgaWYgKCFtX3JlYWRlcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNDOjpKU1ZhbHVlIGVycm9yID0gdGhpcy0+ZXJyb3Io
KTsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKLSAgICAgICAgcmVx
dWVzdC5yZWplY3QoZXJyb3IpOwotICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1v
dmUobV9yZWFkZXIpKTsKLQotICAgIGlmIChtX2Nsb3NlZFByb21pc2UpCi0gICAgICAgIG1fY2xv
c2VkUHJvbWlzZS52YWx1ZSgpLnJlamVjdChlcnJvcik7Ci0gICAgY2xlYXJDYWxsYmFja3MoKTsK
LX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6c3RhcnQoKQotewotICAgIG1faXNTdGFydGVkID0g
dHJ1ZTsKLSAgICBwdWxsKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnB1bGwoKQotewot
ICAgIGlmICghbV9pc1N0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OkVycm9yZWQgfHwgbV9jbG9zZVJlcXVlc3RlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNFbm91Z2hWYWx1ZXMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQdWxsaW5nKSB7Ci0gICAgICAgIG1f
c2hvdWxkUHVsbEFnYWluID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
aXNQdWxsaW5nID0gdHJ1ZTsKLSAgICBpZiAoZG9QdWxsKCkpIHsKLSAgICAgICAgUmVmUHRyPFJl
YWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0odGhpcyk7Ci0gICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFN0cmVhbV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFN0cmVhbS0+ZmluaXNoUHVsbGluZygp
OwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmZpbmlzaFB1
bGxpbmcoKQotewotICAgIG1faXNQdWxsaW5nID0gZmFsc2U7Ci0gICAgaWYgKG1fc2hvdWxkUHVs
bEFnYWluKSB7Ci0gICAgICAgIG1fc2hvdWxkUHVsbEFnYWluID0gZmFsc2U7Ci0gICAgICAgIHB1
bGwoKTsKLSAgICB9Ci19Ci0KLVJlYWRhYmxlU3RyZWFtUmVhZGVyKiBSZWFkYWJsZVN0cmVhbTo6
Z2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChsb2NrZWQoKSkgewotICAg
ICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAg
IEFTU0VSVCghbV9yZWFkZXIpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFt
UmVhZGVyPiBuZXdSZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtUmVhZGVy
PigqdGhpcyk7Ci0gICAgUmVhZGFibGVTdHJlYW1SZWFkZXImIHJlYWRlciA9ICpuZXdSZWFkZXIu
Z2V0KCk7Ci0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGUpIHsKLSAgICAgICAg
bV9yZWFkZXIgPSBXVEY6Om1vdmUobmV3UmVhZGVyKTsKLSAgICAgICAgcmV0dXJuICZyZWFkZXI7
Ci0gICAgfQotCi0gICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShuZXdSZWFk
ZXIpKTsKLSAgICByZXR1cm4gJnJlYWRlcjsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2Fu
Y2VsKEpTQzo6SlNWYWx1ZSByZWFzb24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAobG9ja2VkKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJy
b3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FuY2VsTm9DaGVjayhyZWFzb24sIFdU
Rjo6bW92ZShwcm9taXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNhbmNlbE5vQ2hl
Y2soSlNDOjpKU1ZhbHVlIHJlYXNvbiwgQ2FuY2VsUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewotICAgICAgICBwcm9taXNlLnJlc29sdmUo
bnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkVycm9yZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKTsK
LQotICAgIGNsZWFyVmFsdWVzKCk7Ci0KLSAgICBtX2NhbmNlbFByb21pc2UgPSBXVEY6Om1vdmUo
cHJvbWlzZSk7Ci0KLSAgICBjbG9zZSgpOwotCi0gICAgaWYgKGRvQ2FuY2VsKHJlYXNvbikpCi0g
ICAgICAgIGVycm9yKCkgPyBub3RpZnlDYW5jZWxGYWlsZWQoKSA6IG5vdGlmeUNhbmNlbFN1Y2Nl
ZWRlZCgpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpub3RpZnlDYW5jZWxTdWNjZWVkZWQo
KQotewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpOwotICAgIEFTU0VSVCht
X2NhbmNlbFByb21pc2UpOwotCi0gICAgbV9jYW5jZWxQcm9taXNlLnZhbHVlKCkucmVzb2x2ZShu
dWxscHRyKTsKLSAgICBtX2NhbmNlbFByb21pc2UgPSBOdWxsb3B0OwotfQotCi12b2lkIFJlYWRh
YmxlU3RyZWFtOjpub3RpZnlDYW5jZWxGYWlsZWQoKQotewotICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQpOwotICAgIEFTU0VSVChtX2NhbmNlbFByb21pc2UpOwotCi0gICAgbV9j
YW5jZWxQcm9taXNlLnZhbHVlKCkucmVqZWN0KGVycm9yKCkpOwotICAgIG1fY2FuY2VsUHJvbWlz
ZSA9IE51bGxvcHQ7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRQcm9t
aXNlJiYgcHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7Ci0g
ICAgICAgIHByb21pc2UucmVzb2x2ZShudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewotICAgICAgICBwcm9taXNlLnJl
amVjdChlcnJvcigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Nsb3NlZFByb21p
c2UgPSBXVEY6Om1vdmUocHJvbWlzZSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnJlYWQo
UmVhZFByb21pc2UmJiByZWFkUHJvbWlzZSkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
Q2xvc2VkKSB7Ci0gICAgICAgIHJlYWRQcm9taXNlLnJlc29sdmVFbmQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewotICAgICAg
ICByZWFkUHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGhhc1ZhbHVlKCkpIHsKLSAgICAgICAgcmVhZFByb21pc2UucmVzb2x2ZShyZWFkKCkp
OwotICAgICAgICBpZiAoIW1fY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgICAgICBwdWxsKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKCFoYXNWYWx1ZSgpKQotICAgICAgICAgICAgY2xvc2UoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQoV1RGOjptb3ZlKHJl
YWRQcm9taXNlKSk7Ci0gICAgcHVsbCgpOwotfQotCi1ib29sIFJlYWRhYmxlU3RyZWFtOjpyZXNv
bHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAobV9yZWFkUmVx
dWVzdHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3JlYWRSZXF1
ZXN0cy50YWtlRmlyc3QoKS5yZXNvbHZlKHZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Y29uc3QgY2hhciogUmVhZGFibGVTdHJlYW06OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAot
ewotICAgIHJldHVybiAiUmVhZGFibGVTdHJlYW0iOwotfQotCi1ib29sIFJlYWRhYmxlU3RyZWFt
OjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHRyeSBhbmQgZG8gYmV0dGVyIGhlcmUuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU3N2JhNTg5ZWUwMjEwNTcxMTk1
ZDlhM2E1YTdjYmEzNTBkMTY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
aAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENh
bm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFJlYWRhYmxlU3RyZWFtX2gKLSNkZWZpbmUgUmVhZGFibGVTdHJlYW1faAotCi0jaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5j
bHVkZSAiRE9NUmVxdWVzdFN0YXRlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNpbmNs
dWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEpTVmFsdWU7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRGljdGlvbmFyeTsKLWNsYXNzIFJlYWRhYmxlU3RyZWFtUmVhZGVy
OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKLQotLy8gUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50cyB0aGUgY29yZSBvZiB0aGUgc3Ry
ZWFtcyBBUEkgUmVhZGFibGVTdHJlYW0gZnVuY3Rpb25hbGl0eS4KLS8vIEl0IGhhbmRsZXMgaW4g
cGFydGljdWxhciB0aGUgYmFja3ByZXNzdXJlIGFjY29yZGluZyB0aGUgcXVldWUgc2l6ZS4KLS8v
IFJlYWRhYmxlU3RyZWFtIGlzIHVzaW5nIGEgUmVhZGFibGVTdHJlYW1Tb3VyY2UgdG8gZ2V0IGRh
dGEgaW4gaXRzIHF1ZXVlLgotLy8gU2VlIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcv
I3JzCi1jbGFzcyBSZWFkYWJsZVN0cmVhbSA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtPiB7Ci1w
dWJsaWM6Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJlYWRhYmxlLAotICAgICAg
ICBDbG9zZWQsCi0gICAgICAgIEVycm9yZWQKLSAgICB9OwotCi0gICAgc3RhdGljIFJlZlB0cjxS
ZWFkYWJsZVN0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBEaWN0aW9uYXJ5Jik7Ci0gICAgdmlydHVhbCB+UmVhZGFibGVTdHJlYW0oKTsKLQotICAgIFJl
YWRhYmxlU3RyZWFtUmVhZGVyKiBnZXRSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOwotICAgIGNvbnN0
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRlci5n
ZXQoKTsgfQotCi0gICAgYm9vbCBsb2NrZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmVhZGVyOyB9
Ci0KLSAgICB2b2lkIHJlbGVhc2VSZWFkZXIoKTsKLSAgICBib29sIGhhc1JlYWRQZW5kaW5nUmVx
dWVzdHMoKSB7IHJldHVybiAhbV9yZWFkUmVxdWVzdHMuaXNFbXB0eSgpOyB9Ci0KLSAgICBib29s
IGlzRXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQ7IH0K
LSAgICBib29sIGlzUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpS
ZWFkYWJsZTsgfQotICAgIGJvb2wgaXNDbG9zZVJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xvc2VSZXF1ZXN0ZWQ7IH0KLQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkgPSAw
OwotCi0gICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Nsb3NlZCgpOwot
ICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKLSAgICB2b2lkIGZpbmlzaFB1bGxpbmco
KTsKLSAgICB2b2lkIG5vdGlmeUNhbmNlbFN1Y2NlZWRlZCgpOwotICAgIHZvaWQgbm90aWZ5Q2Fu
Y2VsRmFpbGVkKCk7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIEpT
Qzo6SlNWYWx1ZT4gQ2FuY2VsUHJvbWlzZTsKLSAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUs
IENhbmNlbFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY2FuY2VsTm9DaGVj
ayhKU0M6OkpTVmFsdWUsIENhbmNlbFByb21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVByb21p
c2U8c3RkOjpudWxscHRyX3QsIEpTQzo6SlNWYWx1ZT4gQ2xvc2VkUHJvbWlzZTsKLSAgICB2b2lk
IGNsb3NlZChDbG9zZWRQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlSXRlcmF0
b3JXaXRoQ2FsbGJhY2s8SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWU+IFJlYWRQcm9taXNlOwot
ICAgIHZvaWQgcmVhZChSZWFkUHJvbWlzZSYmKTsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0
IFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLQotICAgIGJvb2wgcmVz
b2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUpOwotICAgIHZvaWQgcHVsbCgpOwotCi1wcml2
YXRlOgotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuU3VzcGVuZEZvclBh
Z2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBjbGVhckNhbGxiYWNrcygpOwot
ICAgIHZvaWQgY2xvc2UoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZhbHVlcygpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBy
ZWFkKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkb1B1bGwoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGRvQ2FuY2VsKEpTQzo6SlNWYWx1ZSkgPSAwOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJl
YWRhYmxlU3RyZWFtUmVhZGVyPiBtX3JlYWRlcjsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFJlYWRhYmxlU3RyZWFtUmVhZGVyPj4gbV9yZWxlYXNlZFJlYWRlcnM7Ci0KLSAgICBPcHRpb25h
bDxDYW5jZWxQcm9taXNlPiBtX2NhbmNlbFByb21pc2U7Ci0gICAgT3B0aW9uYWw8Q2xvc2VkUHJv
bWlzZT4gbV9jbG9zZWRQcm9taXNlOwotCi0gICAgRGVxdWU8UmVhZFByb21pc2U+IG1fcmVhZFJl
cXVlc3RzOwotCi0gICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lz
UHVsbGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFB1bGxBZ2FpbiB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2Nsb3NlUmVxdWVzdGVkIHsgZmFsc2UgfTsKLSAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlJlYWRhYmxlIH07Ci19OwotCi0vLyBUaGlzIGNsYXNzIG1hbmFnZXMgdGhlIHF1
ZXVlIGFuZCBrbm93cyB3aGV0aGVyIHRoZXJlIGlzIHN1ZmZpY2llbnQgZGF0YSBpbiBpdC4KLS8v
ICAgU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IGVycm9yIHN0b3JhZ2UsIHB1bGxpbmcgYW5k
IGNhbmNlbGxpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaHVua1R5cGU+Ci1jbGFzcyBSZWFkYWJs
ZUVucXVldWluZ1N0cmVhbSBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wcm90ZWN0
ZWQ6Ci0gICAgZXhwbGljaXQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgOiBSZWFkYWJsZVN0cmVhbShjb250ZXh0KSB7IH0KLQotICAgIHZv
aWQgZW5xdWV1ZUNodW5rKENodW5rVHlwZSYmIGNodW5rKSB7IG1fcXVldWUuYXBwZW5kKHN0ZDo6
Zm9yd2FyZChjaHVuaykpOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyVmFs
dWVzKCkgb3ZlcnJpZGUgeyBtX3F1ZXVlLmNsZWFyKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFz
RW5vdWdoVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1ZS5zaXplKCk7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3F1
ZXVlLnNpemUoKTsgfQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlkZTsK
LQotICAgIERlcXVlPENodW5rVHlwZT4gbV9xdWV1ZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IENodW5rVHlwZT4KLWlubGluZSBKU0M6OkpTVmFsdWUgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08
Q2h1bmtUeXBlPjo6cmVhZCgpCi17Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHN0YXRlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHRvSlMoc3RhdGUuZXhlYygpLCB0b0pTRE9N
R2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc3RhdGUuZXhlYygpKSwgbV9x
dWV1ZS5yZWFkKCkpOwotfQotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gUmVhZGFibGVTdHJl
YW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5pZGwKaW5kZXggYzZlZjhhYTQwZmM1ZjczZDFlNGFiMDI2ZWI1ODFhZDI2ODhmOGY4NC4uMDQ5
Y2M5ZjNiNmY0ZmRhNjI4YjIxODYwMGMyNjM4ZDYxYWM4MDAzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCkBAIC0yOCwxNiArMjgs
MTQgQEAKICAqLwogCiBbCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRTdGF0ZSwKLSAg
ICBDb25zdHJ1Y3RvcihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBzb3VyY2UsIFtE
ZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRGljdGlvbmFyeSBzdHJhdGVneSksCiAgICAgQ29u
ZGl0aW9uYWw9U1RSRUFNU19BUEksCi0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KKyAgICBKU0J1
aWx0aW5Db25zdHJ1Y3RvcgogXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW0gewotICAgIFtSYWlz
ZXNFeGNlcHRpb25dIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
YW55IHJlYXNvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gUmVhZGFibGVTdHJlYW1SZWFkZXIg
Z2V0UmVhZGVyKCk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBwaXBlVG8oYW55IHN0cmVhbXMsIGFu
eSBvcHRpb25zKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGNhbmNlbChbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIGFueSByZWFzb24pOworICAgIFtKU0J1aWx0aW5dIE9iamVjdCBnZXRS
ZWFkZXIoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIHBpcGVUbyhhbnkgc3RyZWFtcywgYW55
IG9wdGlvbnMpOwogICAgIFtKU0J1aWx0aW5dIE9iamVjdCBwaXBlVGhyb3VnaChhbnkgZGVzdCwg
YW55IG9wdGlvbnMpOwogICAgIFtKU0J1aWx0aW5dIE9iamVjdCB0ZWUoKTsKIAotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGxvY2tlZDsKKyAgICBbSlNCdWlsdGluXSByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBsb2NrZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCmluZGV4IDY2YjE4ZDRhZGYyM2U5MGZhMDhiZmY3
YjQwNmZmYWQ0ZTJhNmU4OTEuLmQzNjY5M2E0NTEzNjJlZmRjOGFmOTcxNGE4ZTYzOTA5NTM1ZWE1
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uanMKQEAgLTIzLDYgKzIzLDgwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK2Z1bmN0aW9u
IGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVneSkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU291cmNlID09
PSAidW5kZWZpbmVkIikKKyAgICAgICAgIHVuZGVybHlpbmdTb3VyY2UgPSB7IH07CisgICAgIGlm
ICh0eXBlb2Ygc3RyYXRlZ3kgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgc3RyYXRlZ3kgPSB7
IGhpZ2hXYXRlck1hcms6IDEsIHNpemU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfSB9OworCisg
ICAgaWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NvdXJjZSkpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvYmplY3QgYXMg
Zmlyc3QgYXJndW1lbnQiKTsKKworICAgIGlmIChzdHJhdGVneSAhPT0gdW5kZWZpbmVkICYmICFA
aXNPYmplY3Qoc3RyYXRlZ3kpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIHNlY29uZCBhcmd1bWVudCwg
aWYgYW55Iik7CisKKyAgICB0aGlzLkB1bmRlcmx5aW5nU291cmNlID0gdW5kZXJseWluZ1NvdXJj
ZTsKKworICAgIHRoaXMuQHF1ZXVlID0gW107CisgICAgdGhpcy5AcXVldWVTaXplID0gMDsKKyAg
ICB0aGlzLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlOworICAgIHRoaXMuQHN0YXJ0
ZWQgPSBmYWxzZTsKKyAgICB0aGlzLkBjbG9zZVJlcXVlc3RlZCA9IGZhbHNlOworICAgIHRoaXMu
QHB1bGxBZ2FpbiA9IGZhbHNlOworICAgIHRoaXMuQHB1bGxpbmcgPSBmYWxzZTsKKyAgICB0aGlz
LkByZWFkZXIgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRlZmluZWQ7
CisgICAgdGhpcy5AY29udHJvbGxlciA9IG5ldyBAUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRo
aXMpOworICAgIHRoaXMuQHN0cmF0ZWd5U2l6ZSA9IHN0cmF0ZWd5LnNpemU7CisgICAgdGhpcy5A
aGlnaFdhdGVyTWFyayA9IE51bWJlcihzdHJhdGVneS5oaWdoV2F0ZXJNYXJrKTsKKworICAgIGlm
IChOdW1iZXIuaXNOYU4odGhpcy5AaGlnaFdhdGVyTWFyaykpCisgICAgICAgIHRocm93IG5ldyBU
eXBlRXJyb3IoImhpZ2hXYXRlck1hcmsgcGFyYW1ldGVyIGlzIG5vdCBjb3JyZWN0Iik7CisgICAg
aWYgKHRoaXMuQGhpZ2hXYXRlck1hcmsgPCAwKQorICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJv
cigiaGlnaFdhdGVyTWFyayBpcyBuZWdhdGl2ZSIpOworCisgICAgdmFyIHJlc3VsdCA9IEBpbnZv
a2VPck5vb3AodW5kZXJseWluZ1NvdXJjZSwgInN0YXJ0IiwgW3RoaXMuQGNvbnRyb2xsZXJdKTsK
KyAgICB2YXIgX3RoaXMgPSB0aGlzOworICAgIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgICAgIF90aGlzLkBzdGFydGVkID0gdHJ1ZTsKKyAgICAgICAgQHJl
cXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoX3RoaXMpOworICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7
CisgICAgICAgIGlmIChfdGhpcy5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKQor
ICAgICAgICAgICAgQGVycm9yUmVhZGFibGVTdHJlYW0oX3RoaXMsIGVycm9yKTsKKyAgICB9KTsK
KworICAgIHJldHVybiB0aGlzOworfQorCitmdW5jdGlvbiBjYW5jZWwocmVhc29uKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxk
IGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtIikpOworCisgICAgaWYgKEBpc1JlYWRhYmxl
U3RyZWFtTG9ja2VkKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBU
eXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKTsKKworICAgIHJldHVybiBAY2Fu
Y2VsUmVhZGFibGVTdHJlYW0odGhpcywgcmVhc29uKTsKK30KKworZnVuY3Rpb24gZ2V0UmVhZGVy
KCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHRo
aXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtIik7CisKKyAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVh
bSBpcyBsb2NrZWQiKTsKKworICAgIHJldHVybiBuZXcgQFJlYWRhYmxlU3RyZWFtUmVhZGVyKHRo
aXMpOworfQorCiBmdW5jdGlvbiBwaXBlVGhyb3VnaChzdHJlYW1zLCBvcHRpb25zKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKQEAgLTMxLDEwICsxMDUsMjkgQEAgZnVuY3Rpb24gcGlwZVRocm91Z2go
c3RyZWFtcywgb3B0aW9ucykKICAgICByZXR1cm4gc3RyZWFtcy5yZWFkYWJsZTsKIH0KIAorZnVu
Y3Rpb24gcGlwZVRvKGRlc3QpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoInBpcGVUbyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKK30KKwogZnVuY3Rpb24g
dGVlKCkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICAvLyBUT0RPOiBjaGVjayB0aGlzIGlz
IGEgUmVhZGFibGVTdHJlYW0KLSAgICByZXR1cm4gQHRlZVJlYWRhYmxlU3RyZWFtKHRoaXMsIGZh
bHNlKQorICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJl
YW0iKTsKKworICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ0ZWUgaXMgbm90IGltcGxlbWVudGVk
Iik7Cit9CisKK2Z1bmN0aW9uIGxvY2tlZCgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbSIpOworCisg
ICAgcmV0dXJuIEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5oCmluZGV4IGFhN2FiM2M2Y2YyNWUyZWFiNzdkYjYxMmI3MGRkN2Q1MzgzY2JlODEuLjhmYzQ3
OGMzOTc3NTE5ZjBmYWQ0ODJjMWJmNTliMDY5ZjAzM2Q4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgK
QEAgLTMyLDM0ICszMiwxOCBAQAogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCi0jaW5jbHVk
ZSAiUmVhZGFibGVKU1N0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotLy8gVGhp
cyBjbGFzcyBpcyBvbmx5IHVzZWQgZm9yIEpTIHNvdXJjZSByZWFkYWJsZSBzdHJlYW1zIHRvIGFs
bG93IGVucXVldWluZywgY2xvc2luZyBvciBlcnJvcmluZyBhIHJlYWRhYmxlIHN0cmVhbS4KLS8v
IEl0cyBkZWZpbml0aW9uIGlzIGF0IGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcvI3Jz
LWNvbnRyb2xsZXItY2xhc3MuCi0vLyBOb3RlIHRoYXQgaXRzIGNvbnN0cnVjdG9yIGlzIHRha2lu
ZyBhIFJlYWRhYmxlSlNTdHJlYW0gYXMgaXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgSlMgc291
cmNlcy4KLWNsYXNzIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciB7CisvLyBUaGlzIGlzIGEgZHVt
bXkgY2xhc3MgbmVlZGVkIGFzIHdlIGNhbm5vdCB5ZXQgdXNlIEpTQnVpbHRpbkNvbnN0cnVjdG9y
IHdpdGggTm9JbnRlcmZhY2VPYmplY3QuCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBpcyBkb25lIGluIFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5qcworLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gcmVtb3ZlIHRoYXQgY2xhc3MuCitj
bGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIoUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKQotICAgICAgICA6IG1f
c3RyZWFtKHN0cmVhbSkgeyB9Ci0KLSAgICBSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0oKSB7IHJl
dHVybiBtX3N0cmVhbTsgfQotCi0gICAgdm9pZCBlcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgbV9zdHJlYW0uZXJyb3Io
c3RhdGUsIHZhbHVlLCBlYyk7IH0KLQotICAgIHZvaWQgZW5xdWV1ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBtX3N0cmVhbS5lbnF1ZXVlKHN0YXRlLCB2YWx1
ZSk7IH0KLQotICAgIHZvaWQgcmVmKCkgeyBtX3N0cmVhbS5yZWYoKTsgfQotICAgIHZvaWQgZGVy
ZWYoKSB7IG1fc3RyZWFtLmRlcmVmKCk7IH0KLQotICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgbV9zdHJlYW0uY2xvc2UoZWMpOyB9Ci0gICAgZG91YmxlIGRlc2lyZWRTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJlYW0uZGVzaXJlZFNpemUoKTsgfQotCisgICAgc3RhdGljIFJl
ZjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCog
bmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcik7IH0KIHByaXZhdGU6Ci0gICAgUmVhZGFibGVK
U1N0cmVhbSYgbV9zdHJlYW07CisgICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkgeyB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsCmluZGV4IDMwYjhjOGI1ZTk3NzE4YTE0ZmRiYmRj
ZTljNjM1YTZmNjc0ZTg1NTUuLjIzN2IxNTRjOWRkNjM0ZmMyMTNjYjM1ODJiNjlkZjM5ZjRhZWMw
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsCkBAIC0zMyw5ICszMyw5IEBACiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2Ug
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZv
aWQgZW5xdWV1ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBjaHVuayk7Ci0gICAg
W1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBjbG9zZSgpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGVycm9yKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgYW55IGVycm9yKTsKKyAgICBbSlNCdWlsdGluXSB2b2lkIGVucXVldWUoW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBhbnkgY2h1bmspOworICAgIFtKU0J1aWx0aW5dIHZvaWQgY2xvc2Uo
KTsKKyAgICBbSlNCdWlsdGluXSB2b2lkIGVycm9yKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgYW55IGVycm9yKTsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZGVzaXJlZFNp
emU7CisgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBkZXNpcmVkU2l6
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGMwM2QxZGMzYzQ3ZTkyNDYy
ZTM1MTQ5YzA4YzJjODQ1NTUyZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcwpAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIiKTsKKworICAgIHZhciBzdHJl
YW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07CisgICAgaWYgKHN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHRocm93IHN0cmVhbS5Ac3Rv
cmVkRXJyb3I7CisKKyAgICBpZiAoc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIHJlcXVlc3RlZCB0byBjbG9zZSIp
OworCisgICAgcmV0dXJuIEBlbnF1ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5rKQor
fQorCitmdW5jdGlvbiBlcnJvcihlcnJvcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBp
ZiAoIUBpc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIiKTsKKworICAgIHZhciBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFi
bGVTdHJlYW07CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgIT09IEByZWFkYWJsZVN0cmVhbVJlYWRh
YmxlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhYWJsZVN0cmVhbSBpcyBub3Qg
cmVhZGFibGUiKTsKKworICAgIEBlcnJvclJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgZXJyb3IpOwor
fQorCitmdW5jdGlvbiBjbG9zZSgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFA
aXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIik7CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3Ry
ZWFtOworICAgIGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgYWxyZWFkeSByZXF1ZXN0ZWQgdG8gY2xvc2Ui
KTsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgYWxyZWFkeSBl
cnJvcmVkIik7CisKKyAgICBAY2xvc2VSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworfQorCitmdW5j
dGlvbiBkZXNpcmVkU2l6ZSgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyIik7CisKKyAgICByZXR1cm4gQGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNpemUodGhpcy5A
Y29udHJvbGxlZFJlYWRhYmxlU3RyZWFtKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCA0ZmM3
ZTJlZjdmNGUyMDU1Mzk5Mzk4MjRlYjQ3NTkzYzlkYThlZjY0Li5lYmQ3Zjk5NTA3Yzg0MjA1M2U4
NDVhZTYyNWI3M2ZlZmZhYzZjN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0yMyw5ICsyMywy
OTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorZnVuY3Rpb24gcHJpdmF0ZUluaXRpYWxpemVS
ZWFkYWJsZVN0cmVhbVJlYWRlcihzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKCFAaXNSZWFkYWJsZVN0cmVhbShzdHJlYW0pKQorICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJSZWFkYWJsZVN0cmVhbVJlYWRlciBuZWVkcyBhIFJlYWRhYmxlU3RyZWFtIik7CisgICAg
aWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkpCisgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpOworCisgICAgdGhpcy5Ac3RhdGUg
PSBzdHJlYW0uQHN0YXRlOworICAgIHRoaXMuQHJlYWRSZXF1ZXN0cyA9IFtdOworICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkgeworICAgICAgICB0aGlz
LkBvd25lclJlYWRhYmxlU3RyZWFtID0gc3RyZWFtOworICAgICAgICB0aGlzLkBzdG9yZWRFcnJv
ciA9IHVuZGVmaW5lZDsKKyAgICAgICAgc3RyZWFtLkByZWFkZXIgPSB0aGlzOworICAgICAgICB0
aGlzLkBjbG9zZWRQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7CisgICAgICAgICAgICBzdHJlYW0uQHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlc29sdmUgPSBy
ZXNvbHZlOworICAgICAgICAgICAgc3RyZWFtLkByZWFkZXIuQGNsb3NlZFByb21pc2VSZWplY3Qg
PSByZWplY3Q7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisgICAg
aWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkgeworICAgICAgICB0
aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtID0gbnVsbDsKKyAgICAgICAgdGhpcy5Ac3RvcmVkRXJy
b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMuQGNsb3NlZFByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAgIC8vIFRPRE86IEFTU0VS
VChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKTsKKyAgICB0aGlzLkBv
d25lclJlYWRhYmxlU3RyZWFtID0gbnVsbDsKKyAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHN0cmVh
bS5Ac3RvcmVkRXJyb3I7CisgICAgdGhpcy5AY2xvc2VkUHJvbWlzZSA9IFByb21pc2UucmVqZWN0
KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK2Z1bmN0aW9u
IHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHN0cmVhbSkKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbmVl
ZHMgYSBSZWFkYWJsZVN0cmVhbSIpOworICAgIGlmICh0eXBlb2Ygc3RyZWFtLkBjb250cm9sbGVy
ICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxl
U3RyZWFtIGFscmVhZHkgaGFzIGEgY29udHJvbGxlciIpOworICAgIHRoaXMuQGNvbnRyb2xsZWRS
ZWFkYWJsZVN0cmVhbSA9IHN0cmVhbTsKKworICAgIHJldHVybiB0aGlzOworfQorCiBmdW5jdGlv
biB0ZWVSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHNob3VsZENsb25lKQogewogICAgICJ1c2Ugc3Ry
aWN0IjsKIAogICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ0ZWUgaXMgbm90IGltcGxlbWVudGVk
Iik7CiB9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3Qoc3RyZWFtKSAmJiAhIXN0cmVhbS5AdW5k
ZXJseWluZ1NvdXJjZTsKK30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFk
ZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBpc09iamVjdChyZWFkZXIp
ICYmIHR5cGVvZiByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0gIT09ICJ1bmRlZmluZWQiOwor
fQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihjb250cm9sbGVyKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3QoY29udHJvbGxlcikgJiYg
ISFjb250cm9sbGVyLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07Cit9CisKK2Z1bmN0aW9uIGVy
cm9yUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJvcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVh
ZGFibGUpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBzdHJlYW0uQHN0b3JlZEVycm9y
ID0gZXJyb3I7CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUVycm9yZWQ7CisK
KyAgICBpZiAoIXN0cmVhbS5AcmVhZGVyKQorICAgICAgICByZXR1cm47CisgICAgdmFyIHJlYWRl
ciA9IHN0cmVhbS5AcmVhZGVyOworCisgICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVx
dWVzdHM7CisgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7
IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQorICAgICAgICByZXF1ZXN0c1tpbmRleF0ucmVqZWN0
KGVycm9yKTsKKyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOworCisgICAgQHJlbGVhc2VS
ZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRlci5Ac3RvcmVkRXJyb3IgPSBl
cnJvcjsKKyAgICByZWFkZXIuQHN0YXRlID0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZDsKKworICAg
IHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlamVjdChlcnJvcik7Cit9CisKK2Z1bmN0aW9uIHJlcXVl
c3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IGlmIChzdHJlYW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFzdHJlYW0uQHN0YXJ0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoKCFA
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pIHx8ICFzdHJlYW0uQHJlYWRlci5AcmVhZFJl
cXVlc3RzLmxlbmd0aCkgJiYgQGdldFJlYWRhYmxlU3RyZWFtRGVzaXJlZFNpemUoc3RyZWFtKSA8
PSAwKQorICAgICAgICByZXR1cm47CisgCisgICAgaWYgKHN0cmVhbS5AcHVsbGluZykgeworICAg
ICAgICBzdHJlYW0uQHB1bGxBZ2FpbiA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzdHJlYW0uQHB1bGxpbmcgPSB0cnVlOworCisgICAgdmFyIHByb21pc2UgPSBAcHJvbWlz
ZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJwdWxsIiwgW3N0cmVhbS5A
Y29udHJvbGxlcl0pOworICAgIHByb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgc3Ry
ZWFtLkBwdWxsaW5nID0gZmFsc2U7CisgICAgICAgIGlmIChzdHJlYW0uQHB1bGxBZ2Fpbikgewor
ICAgICAgICAgICAgc3RyZWFtLkBwdWxsQWdhaW4gPSBmYWxzZTsKKyAgICAgICAgICAgIEByZXF1
ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7CisgICAgICAgIH0KKyAgICB9LCBmdW5jdGlv
bihlcnJvcikgeworICAgICAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsK
KyAgICB9KTsKK30KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7
CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKwor
ZnVuY3Rpb24gZ2V0UmVhZGFibGVTdHJlYW1EZXNpcmVkU2l6ZShzdHJlYW0pCit7CisgICAidXNl
IHN0cmljdCI7CisKKyAgIHJldHVybiBzdHJlYW0uQGhpZ2hXYXRlck1hcmsgLSBzdHJlYW0uQHF1
ZXVlU2l6ZTsKK30KKworZnVuY3Rpb24gcmVsZWFzZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRl
cikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJl
YW0uQHJlYWRlciA9IHVuZGVmaW5lZDsKKyAgICByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0g
PSBudWxsOworfQorCitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNv
bikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJl
YWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Cisg
ICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0u
QHF1ZXVlID0gW107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOwor
ICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2Us
ICJjYW5jZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKK2Z1bmN0aW9u
IGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgPT09ICBAcmVhZGFibGVTdHJl
YW1SZWFkYWJsZSk7CisgICAgc3RyZWFtLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUNsb3NlZDsK
KyAgICB2YXIgcmVhZGVyID0gc3RyZWFtLkByZWFkZXI7CisgICAgaWYgKHJlYWRlcikKKyAgICAg
ICAgQGNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKTsKK30KKworZnVuY3Rpb24gY2xv
c2VSZWFkYWJsZVN0cmVhbShzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8g
VE9ETy4gQVNTRVJUKCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKTsKKyAgICAvLyBUT0RPOiBBU1NF
UlQoc3RyZWFtLkBzdGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgaWYgKHN0
cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuOyAK
KyAgICBzdHJlYW0uQGNsb3NlUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBpZiAoIXN0cmVhbS5AcXVl
dWUubGVuZ3RoKQorICAgICAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7
Cit9CisKK2Z1bmN0aW9uIGNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZXF1ZXN0cyA9IHJlYWRlci5AcmVhZFJlcXVlc3Rz
OworICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcmVxdWVzdHMubGVuZ3RoOyBpbmRl
eCA8IGxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgcmVxdWVzdHNbaW5kZXhdLnJlc29sdmUoe3Zh
bHVlOnVuZGVmaW5lZCwgZG9uZTogdHJ1ZX0pOworICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzID0g
W107CisgICAgQHJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOworICAgIHJlYWRl
ci5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1DbG9zZWQ7CisgICAgcmVhZGVyLkBjbG9zZWRQcm9t
aXNlUmVzb2x2ZSgpOworfQorCitmdW5jdGlvbiBlbnF1ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJl
YW0sIGNodW5rKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRPRE86IEFTU0VSVCgh
c3RyZWFtLkBjbG9zZVJlcXVlc3RlZCk7CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3Rh
dGUgIT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
aWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkgJiYgc3RyZWFtLkByZWFkZXIuQHJl
YWRSZXF1ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0
cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKKyAgICAgICAg
QHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICB0cnkgeworICAgICAgICB2YXIgc2l6ZSA9IDE7CisgICAgICAgIGlmIChzdHJlYW0u
QHN0cmF0ZWd5U2l6ZSkgeworICAgICAgICAgICAgc2l6ZSA9IE51bWJlcihzdHJlYW0uQHN0cmF0
ZWd5U2l6ZShjaHVuaykpOworICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihzaXplKSB8fCBz
aXplID09PSArSW5maW5pdHkgfHwgc2l6ZSA8IDApCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFJhbmdlRXJyb3IoIkNodW5rIHNpemUgaXMgbm90IHZhbGlkIik7CisgICAgICAgIH0KKyAgICAg
ICAgc3RyZWFtLkBxdWV1ZS5wdXNoKHsgdmFsdWU6IGNodW5rLCBzaXplOiBzaXplIH0pOworICAg
ICAgICBzdHJlYW0uQHF1ZXVlU2l6ZSArPSBzaXplOworICAgIH0KKyAgICBjYXRjaChlcnJvcikg
eworICAgICAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKKyAgICAgICAg
dGhyb3cgZXJyb3I7CisgICAgfQorICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVh
bSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChyZWFkZXIuQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe3ZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWV9KTsKKyAgICBpZiAocmVhZGVyLkBzdGF0ZSA9PT0gQHJlYWRh
YmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYWRlci5A
c3RvcmVkRXJyb3IpOworICAgIC8vIFRPRE86IEFTU0VSVCghIXJlYWRlci5Ab3duZXJSZWFkYWJs
ZVN0cmVhbSk7CisgICAgLy8gVE9ETzogQVNTRVJUKHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKTsKKyAgICB2YXIgc3RyZWFtID0g
cmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHF1ZXVlLmxlbmd0
aCkgeworICAgICAgICB2YXIgY2h1bmsgPSBzdHJlYW0uQHF1ZXVlLnNoaWZ0KCk7CisgICAgICAg
IHN0cmVhbS5AcXVldWVTaXplIC09IGNodW5rLnNpemU7CisgICAgICAgIGlmICghc3RyZWFtLkBj
bG9zZVJlcXVlc3RlZCkKKyAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0
cmVhbSk7CisgICAgICAgIGVsc2UgaWYgKCFzdHJlYW0uQHF1ZXVlLmxlbmd0aCkKKyAgICAgICAg
ICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSh7dmFsdWU6IGNodW5rLnZhbHVlLCBkb25lOiBmYWxzZX0pOworICAg
IH0KKyAgICB2YXIgcmVhZFJlcXVlc3QgPSB7fTsKKyAgICB2YXIgcmVhZFByb21pc2UgPSBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgcmVhZFJlcXVlc3Qu
cmVzb2x2ZSA9IHJlc29sdmU7CisgICAgICAgIHJlYWRSZXF1ZXN0LnJlamVjdCA9IHJlamVjdDsK
KyAgICB9KTsKKyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cy5wdXNoKHJlYWRSZXF1ZXN0KTsKKyAg
ICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworICAgIHJldHVybiByZWFkUHJv
bWlzZTsKK30KKworZnVuY3Rpb24gaW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICBp
ZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHJldHVybjsKKyAgICBy
ZXR1cm4gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworfQorCitmdW5jdGlvbiBwcm9taXNl
SW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYg
KHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3Qs
IGFyZ3MpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQor
ICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7
CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNm
MzdkOTljMDFkOWMxYWFhZTlkYzhlYzI4Y2Y3N2M1ZTZlZjBkYjkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KLQotI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVy
OjpjYW5jZWwoSlNDOjpKU1ZhbHVlIHJlYXNvbiwgUmVhZGFibGVTdHJlYW06OkNhbmNlbFByb21p
c2UmJiBwcm9taXNlKQotewotICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYgbV9zdHJl
YW0ucmVhZGVyKCkgIT0gdGhpcykgewotICAgICAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJlYW0uY2FuY2VsTm9DaGVjayhyZWFz
b24sIFdURjo6bW92ZShwcm9taXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6
OmNsb3NlZChSZWFkYWJsZVN0cmVhbTo6Q2xvc2VkUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAg
aWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX3N0cmVhbS5jbG9zZWQoV1RGOjptb3ZlKHByb21pc2UpKTsKLX0KLQotdm9pZCBS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFByb21pc2UmJiBw
cm9taXNlKQotewotICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYgbV9zdHJlYW0ucmVh
ZGVyKCkgIT0gdGhpcykgewotICAgICAgICBwcm9taXNlLnJlc29sdmVFbmQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX3N0cmVhbS5yZWFkKFdURjo6bW92ZShwcm9taXNlKSk7Ci19
Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OnJlbGVhc2VMb2NrKEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmIChtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1fc3RyZWFtLmhhc1JlYWRQZW5kaW5nUmVxdWVzdHMoKSkgewotICAgICAg
ICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3N0cmVhbS5y
ZWxlYXNlUmVhZGVyKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCmluZGV4IGI0ZDJmYjUz
ZDUxMTBiMmQxMTZhNTM3NWVkYzYyODM1ZjMxMDQ5YjkuLjM5MjJjOTI3MjNlNmE3Zjg0NTBlMDcz
YzM3ZTkxMmY5YmM1MDFmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCkBAIC0zMiwzNyArMzIsMTggQEAKIAogI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludCBFeGNl
cHRpb25Db2RlOwotCi0vLyBSZWFkYWJsZVN0cmVhbVJlYWRlciBpbXBsZW1lbnRzIGFjY2VzcyB0
byBSZWFkYWJsZVN0cmVhbSBmcm9tIEphdmFTY3JpcHQuCi0vLyBJdCBiYXNpY2FsbHkgYWxsb3dz
IGFjY2VzcyB0byB0aGUgUmVhZGFibGVTdHJlYW0gaWZmIHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBpbnN0YW5jZSBpcyB0aGUgYWN0aXZlIHJlYWRlcgotLy8gb2YgdGhlIFJlYWRhYmxlU3RyZWFt
LgotLy8gTW9zdCBvZiB0aGlzIGhhbmRsaW5nIGlzIGhhcHBlbmluZyBpbiB0aGUgY3VzdG9tIEpT
IGJpbmRpbmcgb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIuCi0vLyBTZWUgaHR0cHM6Ly9zdHJlYW1z
LnNwZWMud2hhdHdnLm9yZy8jcmVhZGVyLWNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uLgotY2xh
c3MgUmVhZGFibGVTdHJlYW1SZWFkZXIgeworLy8gVGhpcyBpcyBhIGR1bW15IGNsYXNzIG5lZWRl
ZCBhcyB3ZSBjYW5ub3QgeWV0IHVzZSBKU0J1aWx0aW5Db25zdHJ1Y3RvciB3aXRoIE5vSW50ZXJm
YWNlT2JqZWN0LgorLy8gSW1wbGVtZW50YXRpb24gb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIgZnVu
Y3Rpb25hbGl0eSBpcyBkb25lIGluIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCisvLyBGSVhNRTog
RmluZCBhIHdheSB0byByZW1vdmUgdGhhdCBjbGFzcy4KK2NsYXNzIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1SZWFkZXI+IHsKIHB1
YmxpYzoKLSAgICBSZWFkYWJsZVN0cmVhbVJlYWRlcihSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQot
ICAgICAgICA6IG1fc3RyZWFtKHN0cmVhbSkgeyB9Ci0KLSAgICB2b2lkIGNhbmNlbChKU0M6OkpT
VmFsdWUsIFJlYWRhYmxlU3RyZWFtOjpDYW5jZWxQcm9taXNlJiYpOwotICAgIHZvaWQgY2xvc2Vk
KFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRQcm9taXNlJiYpOwotICAgIHZvaWQgcmVhZChSZWFkYWJs
ZVN0cmVhbTo6UmVhZFByb21pc2UmJik7Ci0gICAgdm9pZCByZWxlYXNlTG9jayhFeGNlcHRpb25D
b2RlJik7Ci0KLSAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0KLSAgICB2b2lkIGRl
cmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9Ci0KKyAgICBzdGF0aWMgUmVmPFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBSZWFkYWJsZVN0cmVh
bVJlYWRlcik7IH0KIHByaXZhdGU6Ci0gICAgUmVhZGFibGVTdHJlYW0mIG1fc3RyZWFtOworICAg
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCkgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbAppbmRleCA0
MWFmZTI1ZGI1OWZkYmFkNzE5YWM5NDIwY2VkOGE0ZjhmYmNhYTI3Li4zZmU4YmVjMmNiMDg1OWQz
OTA0M2U5YzVkYmYzMjMyMzA1NjI3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKQEAgLTI5LDEzICsyOSwx
MyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCi0gICAgQ3VzdG9tQ29uc3Ry
dWN0b3IoYW55IHByb3BlcnRpZXMpLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIFNraXBW
VGFibGVWYWxpZGF0aW9uCisgICAgQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKKyAgICBOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgewotICAgIFByb21pc2UgcmVhZCgpOwotICAgIFByb21pc2UgY2FuY2Vs
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7Ci0gICAgW1JhaXNlc0V4
Y2VwdGlvbl0gdm9pZCByZWxlYXNlTG9jaygpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgcmVh
ZCgpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgYW55IHJlYXNvbik7CisgICAgW0pTQnVpbHRpbl0gdm9pZCByZWxlYXNlTG9jaygp
OwogCi0gICAgW0N1c3RvbUdldHRlciwgQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgUHJvbWlzZSBjbG9zZWQ7CisgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIFBy
b21pc2UgY2xvc2VkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk0MGMzMTYzMGExYmIz
MjY3NDFjYTI1YWJhYjlhZmMwMGJhMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBjYW5jZWwocmVhc29uKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhp
cykpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVuY3Rp
b24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworCisgICAg
aWYgKHRoaXMuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTsKKworICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHJlYWRhYmxl
U3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuQHN0b3Jl
ZEVycm9yKTsKKworICAgIC8vIFRPRE8gQVNTRVJUKEBpc1JlYWRhYmxlU3RyZWFtKHRoaXMuQG93
bmVyUmVhZGFibGVTdHJlYW0pKTsKKyAgICAvLyBUT0RPIEFTU0VSVCh0aGlzLkBvd25lclJlYWRh
YmxlU3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpOworICAgIHJldHVy
biBAY2FuY2VsUmVhZGFibGVTdHJlYW0odGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSwgcmVhc29u
KTsKK30KKworZnVuY3Rpb24gcmVhZCgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKSkKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVh
ZGFibGVTdHJlYW1SZWFkZXIiKSk7CisKKyAgICByZXR1cm4gQHJlYWRGcm9tUmVhZGFibGVTdHJl
YW1SZWFkZXIodGhpcyk7Cit9CisKK2Z1bmN0aW9uIHJlbGVhc2VMb2NrKCkKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQorICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBh
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIik7CisKKyAgICBpZiAoIXRoaXMuQG93bmVyUmVhZGFibGVT
dHJlYW0pCisgICAgICAgICByZXR1cm47CisKKyAgICBpZiAodGhpcy5AcmVhZFJlcXVlc3RzLmxl
bmd0aCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsKKworICAgIEBjbG9zZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKHRoaXMpOworfQorCitmdW5jdGlvbiBjbG9zZWQoKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2FsbGVlIG9mIGNs
b3NlZCBpcyBub3QgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKworICAgIHJldHVybiB0aGlz
LkBjbG9zZWRQcm9taXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggZWI1OTAzMDI4OTI2NGY4OTMxYTY0MmZhNjgzZWJiM2ViMjli
ZTAwMS4uYjIyNGUwZTU0MWQwMzRjMGE3Yjg5NmJhNDM2NTBjZjU5ZGZiNzEzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0zOTQ2LDIw
ICszOTQ2LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAi
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCI+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC02ODMxLDggKzY4MTcsNiBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNc
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJHbG9iYWxTY29wZU5vdGlmaWNhdGlvbnMuY3BwIiAv
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3Ry
ZWFtLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xS
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2UuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUF1
dGhvcml6ZXIuY3BwIiAvPgpAQCAtMTg1MzksNDkgKzE4NTIzLDcgQEAKICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFt
Q3VzdG9tLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAiPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVh
bVJlYWRlckN1c3RvbS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcUmVhZGFibGVKU1N0cmVhbS5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBA
IC0yMDU2MSw5ICsyMDUwMyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFsU2NvcGVOb3RpZmlj
YXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBsdWdpbnNc
UGx1Z2luUmVwbGFjZW1lbnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtUmVhZGVy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXEFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbkRhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCIg
Lz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCAzMjA3ZTk4NDc4MzEzMDAyMjM2ZWM0ZTRmOWIyZmE4ZWEzODA0
ZDI3Li4wZThlNTEyYzI4NjVlOWFlMWQ2ZDg1OTFkNDM5MTQxYzQ2MDE1ZDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC0xLDUgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMu
bWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KK++7vzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+IDxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxu
cz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4K
ICAgPEl0ZW1Hcm91cD4KICAgICA8RmlsdGVyIEluY2x1ZGU9IkRlcml2ZWRTb3VyY2VzIj4KICAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns5NTU0ODdlOC05NGFkLTQ1YzEtOWNjOC1jYjg4OTExZTlk
N2N9PC9VbmlxdWVJZGVudGlmaWVyPgpAQCAtNDY4LDEyICs0NjcsNiBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXFdvcmtlckdsb2JhbFNjb3BlTm90
aWZpY2F0aW9ucy5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXG5vdGlmaWNhdGlvbnM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbS5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXHN0
cmVhbXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAiPgotICAgICAgPEZp
bHRlcj5Nb2R1bGVzXHN0cmVhbXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNDQwNCwxNiArNDM5Nyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIj4KICAgICAg
IDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
Ij4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRp
bmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xSZWFkYWJsZUpTU3RyZWFtLmNwcCI+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9y
cy5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGYyZTQ4OGM1YmE2OTVkMmNlOGEwMzZmMjNkZmY1
ZmVhNTZlNzk2MS4uOTAzNTNjYmNmZDRhZjQxNDgxM2E4YWNiZjEzODUzM2Y0MjQ1OTMzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTQ5MCw2ICsxNDkwLDggQEAKIAkJNDEyMzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8qIFdlYkNv
cmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9
OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjgyMTYy
OTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJ
NDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRG
NSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07CisJCTQxMjlERjg1MUJCNUI4MDcwMDMyMkExNiAv
KiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5REY4MzFCQjVCN0Y3MDAzMjJBMTYg
LyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwICovOyB9OworCQk0MTI5
REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3Rv
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlE
Rjg0MUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9y
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
MzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAv
KiBFdmVudENvbnRleHQuaCAqLzsgfTsKIAkJNDEzOEQzMzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2
ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLzsgfTsK
IAkJNDE1MDcxNTcxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTA3MTU1MTY4NTA2NzMw
MEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5jcHAgKi87IH07CkBAIC0xNTIxLDE2ICsxNTIzLDgg
QEAKIAkJNDE4QTA2RDExMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThBMDZDRjEzM0Mw
NEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQwRkY5
NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyog
SlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAq
LzsgfTsKLQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5OEJERUUx
QTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwICovOyB9OwotCQk0MTk4QkRG
MTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8q
IFJlYWRhYmxlSlNTdHJlYW0uaCAqLzsgfTsKIAkJNDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8q
IFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUu
Y3BwICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMy
REQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKLQkJNDE5RkFG
QUUxQUJBQkQwODAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkFCMUFCQUJDRDUwMDVC
ODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi87IH07Ci0JCTQxOUZBRkFGMUFCQUJE
MEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5RkFGQUMxQUJBQkNENTAwNUI4MjhCIC8qIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLmggKi87IH07Ci0JCTQxOUZBRkIxMUFCQUJERUQwMDVCODI4QiAv
KiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCAqLzsgfTsKLQkJNDFBMDIzRUYxQTM5REI3QTAw
RjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0VCMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0
cmVhbS5jcHAgKi87IH07Ci0JCTQxQTAyM0YwMUEzOURCN0EwMEY3MjJDRiAvKiBSZWFkYWJsZVN0
cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFB
MDIzRUMxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi87IH07Ci0JCTQxQTAy
M0Y2MUEzOURCQ0IwMEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0YzMUEzOURCQ0Iw
MEY3MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEUx
MDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZE
MDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUy
RDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERl
ZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMg
LyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFu
bmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTg3NjgsMTEgKzg3NjIsMTQgQEAKIAkJNDBFQ0FFN0QxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9N
RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01FcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyog
SlNET01FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFC
MDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDExODlFRjYxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlF
RjcxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjgxQUQ4MjMzQzAwQjkwQTBEIC8qIEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQTkwNDExQkJBQjQ2RDAwMENGMTU2IC8qIFdlYkNvcmVK
U0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNv
cmVKU0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1MzYw
RjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDEyOURGODExQkI1Qjc5QjAwMzIyQTE2IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyOURGODIxQkI1QjdBNjAw
MzIyQTE2IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxMjlERjgzMUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZUNvbnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxMjlERjg0MUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFt
UHJpdmF0ZUNvbnN0cnVjdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250
ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50Q29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTA3MTU1MTY4NTA2NzMwMEMz
QzdCMyAvKiBTZWxlY3RvckZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTZWxlY3RvckZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04ODA1LDE4ICs4ODAyLDEwIEBACiAJCTQxOEEwNkNGMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVu
dERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZl
bnREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4Rjg4MDIw
RkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29y
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1
IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVhZGFibGVKU1N0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQxOThCREVGMUE4MTEyMzYwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlSlNTdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5r
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlzaXRlZExp
bmtTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJDMkREMTY4NTMy
OTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDE5RkFGQUIxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5RkFGQUMxQUJBQkNENTAwNUI4
MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlGQUZCMDFBQkFCRDdCMDA1QjgyOEIgLyogSlNSZWFk
YWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRUIxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRUMxQTM5REI3OTAwRjcy
MkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VE
MUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVhZGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MUEwMjNGMzFBMzlEQkNCMDBGNzIyQ0YgLyogSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBM0Q1OEMxMDFDMTUyRDAwMzE2
RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZGljYXRlZFdvcmtl
clRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAwQTBGRTg2RjQ5
MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYyNzcsMTQgKzE2MjY2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTE0OEI0RkZGMUI2OTA0QzUwMEM5NTRFNSAvKiBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LmlkbCAqLywKKwkJCQk0MTI5REY4MjFCQjVCN0E2MDAzMjJBMTYgLyogUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaCAqLywKKwkJCQk0MTI5REY4MTFCQjVCNzlCMDAzMjJBMTYgLyogUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCiAJCQkJMTQ4QjRGRkYxQjY5MDRDNTAwQzk1NEU0
IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5LmlkbCAqLywKLQkJCQk0MUEwMjNFQjFBMzlEQjc5MDBG
NzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uY3BwICovLAotCQkJCTQxQTAyM0VDMUEzOURCNzkwMEY3
MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oICovLAogCQkJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJD
RiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8sCi0JCQkJNDExODlFRjYxQUQ4MjMyODAwQjkwQTBE
IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovLAogCQkJCTQxMTg5RUY3MUFEODIzMjgw
MEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsICovLAotCQkJCTQxOUZBRkFC
MUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8sCi0JCQkJNDE5
RkFGQUMxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8sCiAJCQkJ
NDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gc3RyZWFtczsKQEAgLTIxNjU2LDcgKzIxNjQyLDggQEAKIAkJCQk3
QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCAqLywKIAkJCQk5M0I3
MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAqLywK
IAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmggKi8sCi0JCQkJNDExODlFRjgxQUQ4MjMzQzAwQjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyQ3VzdG9tLmNwcCAqLywKKwkJCQk0MTI5REY4MzFCQjVCN0Y3MDAzMjJBMTYgLyog
SlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwICovLAorCQkJCTQxMjlERjg0
MUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5o
ICovLAogCQkJCUUxQzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAgKi8sCiAJCQkJRTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmggKi8sCiAJCQkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9k
dWxlTG9hZGVyLmNwcCAqLywKQEAgLTIxODMxLDggKzIxODE4LDYgQEAKIAkJCQlGREJEMURGQjE2
N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkQ4
QUE2M0QxNjk1MTRBNzAwRDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJ
QTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8s
Ci0JCQkJNDFBMDIzRjMxQTM5REJDQjAwRjcyMkNGIC8qIEpTUmVhZGFibGVTdHJlYW1DdXN0b20u
Y3BwICovLAotCQkJCTQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ3VzdG9tLmNwcCAqLywKIAkJCQk0QUUwQkY4ODE4MzYwODMxMDBGMzg1MkQgLyogSlNS
VENJY2VDYW5kaWRhdGVDdXN0b20uY3BwICovLAogCQkJCTA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5
NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkwN0QwN0IxMzE4MzQx
NTg4MDBBQkREM0MgLyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwICovLApAQCAt
MjY0MTYsNiArMjY0MDEsNyBAQAogCQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2Jp
bGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTMxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1
Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTBGRkE5RTFBQUY1
RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjY4Myw5ICsyNjY2OSw2IEBACiAJCQkJRjU1QjNE
Q0UxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTQxOThCREYxMUE4MTE0MzEwMEIyMkZCNSAvKiBSZWFkYWJs
ZUpTU3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUEwMjNGMDFBMzlEQjdBMDBGNzIyQ0Yg
LyogUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOUZBRkFGMUFCQUJEMEMw
MDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTU5MiwxMCArMjk1
NzUsNyBAQAogCQkJCTY1REYzMjAxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1JhbmdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZDNEM5NkRFMUFENDQ4MzUwMDM2NUE1MCAvKiBK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTE4OUVG
OTFBRDgyNzM3MDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDIzRjYxQTM5REJDQjAwRjcyMkNGIC8qIEpTUmVhZGFi
bGVTdHJlYW1DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Qzk2REUxQUQ0NDgzNTAw
MzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDE5RkFGQjExQUJBQkRFRDAwNUI4MjhCIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGRTJGMTEwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk4QUVDRDEzRjlENkM5MDA5MEIxQUEgLyogSlNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzc0
REE0ODEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMwMTA2LDYgKzMwMDg2LDcgQEAKIAkJCQkyNjc3MjYwMDFBNUIzQUQ5MDAzQzI0REQgLyogTkZB
VG9ERkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQzRTAwRTY3NDExMDAwMUMxMjg3IC8q
IE5pbmVQaWVjZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODAwMDlENTYzMjcw
MDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMjlERjg1MUJCNUI4MDcw
MDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NTRGRTczMjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlckNvbmRp
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTczNDBBMjI5N0JFMDA1OEQ3QUQgLyog
Tm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUFDMTA5MUI0ODNEN0YwMDMz
NDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDI0OCw5ICszMDIy
OSw2IEBACiAJCQkJOTNGMTlBQjkwODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzRENEMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTg0RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVy
U2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1IC8q
IFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDIzRUYxQTM5REI3
QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxOUZB
RkFFMUFCQUJEMDgwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDMxNjAzQjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmlu
ZGV4IDE5Yzk1MWIwOTRiZDA4ZDc3ZjRmMTczYzI5YTMzYmViNWZhYzdhZjAuLjBhNGE4MzY3ZTJj
NjU4ZDkxZGI3NWU3MWNkMzI0ZDdiOTFlZDA3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTE3LDEyICsxMTcsNyBAQAog
I2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmNwcCIKICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAiCi0jaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCIKLSNpbmNs
dWRlICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJSZWFkYWJs
ZUpTU3RyZWFtLmNwcCIKLSNlbmRpZgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Qcml2YXRl
Q29uc3RydWN0b3JzLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
U1ZHTGVuZ3RoQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCmluZGV4IDMwNmNlNGI0ODc2NWRiNDY2MGIyMzlmOWY0NDdmZWRhZDhj
ZjBkZDYuLjllMGZmNGZjODlhNjgwMDYzZDVhYTc1NjJmYWNlNGI2OTFmYmYwZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNDgsNiAr
NDgsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisjaW5jbHVkZSAiSlNS
ZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmgiCiAjZW5kaWYKIApAQCAtODgsNiArODksMTEgQEAgdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01XaW5kb3dTaGVs
bCogc2hlbGwpCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5k
b2N1bWVudCwganNOdWxsKCksIERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT53aW5kb3csIG1fc2hlbGwsIERvbnREZWxl
dGUgfCBSZWFkT25seSksCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8oc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5yZWFkYWJsZVN0cmVhbUNsb3NlZFByaXZhdGVOYW1lKCksIGpz
TnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8oc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5i
dWlsdGluTmFtZXMoKS5yZWFkYWJsZVN0cmVhbUVycm9yZWRQcml2YXRlTmFtZSgpLCBqc051bWJl
cigyKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRp
bk5hbWVzKCkucmVhZGFibGVTdHJlYW1SZWFkYWJsZVByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDMp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oc3Rh
dGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS5SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlTmFtZSgpLCBjcmVhdGVSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3Iodm0sICp0aGlzKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHN0YXRpY19jYXN0PFdl
YkNvcmVKU0NsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuUmVhZGFi
bGVTdHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBjcmVhdGVSZWFkYWJsZVN0cmVhbVJlYWRlclBy
aXZhdGVDb25zdHJ1Y3Rvcih2bSwgKnRoaXMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogI2Rl
ZmluZSBERUNMQVJFX0dMT0JBTF9TVEFUSUMobmFtZSlcCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyhcCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSktPnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5uYW1lIyNQcml2
YXRlTmFtZSgpLFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzgxN2UzM2M3Y2ZiZmJkOGY3MDIyMzc1NThkNzMwZjgwMzJiODBhZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENh
bm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKLQot
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29u
c3RydWN0b3Igc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSkpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmI2NjNjZTc4ZGVkZjczNmIyMmZjMzkxMDU1MjRiMmRhM2JlZDAxMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCi0K
LSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oIgotI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbS5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtOjpwaXBlVG8oRXhlY1N0YXRl
JiBzdGF0ZSkKLXsKLSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJ
SUxpdGVyYWwoInBpcGVUbyBpcyBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBlcnJvcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjE0MDM3OTU2OTkyMTAyYjA0NWY1ZTU1M2RiYmM2MDM5ZDdlYjU1OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Q
cml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUmVh
ZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgiCisKKyNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU1JlYWRhYmxlU3Ry
ZWFtLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQ2FsbERhdGEuaD4KKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlVHlwZUVy
cm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1
Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbVJlYWRlcihFeGVjU3Rh
dGUqIHN0YXRlKQoreworICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nh
c3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFzdHJl
YW0pCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcihz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBwYXJh
bWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0iKSkpOworCisgICAgSlNWYWx1ZSBqc0Z1bmN0
aW9uID0gc3RyZWFtLT5nZXQoc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJn
ZXRSZWFkZXIiKSk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBub0FyZ3VtZW50czsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwo
c3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgc3RyZWFtLCBub0FyZ3VtZW50
cykpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+
IGNsYXNzIEpTQnVpbHRpblByaXZhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rv
ckpTQnVpbHRpbk9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3RvckpT
QnVpbHRpbk9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTQnVpbHRpblByaXZhdGVDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uJiBmdW5jdGlvbikKKyAgICB7
CisgICAgICAgIEpTQnVpbHRpblByaXZhdGVDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTQnVpbHRpblByaXZhdGVDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEpTQnVpbHRpblByaXZhdGVDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZnVuY3Rpb24p
OworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTQnVpbHRp
blByaXZhdGVDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KTogQmFzZShzdHJ1Y3R1cmUsICZnbG9iYWxPYmplY3QpIHsg
fQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNGdW5jdGlvbiYpOworICAg
IHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCos
IEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJpdmF0ZUNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSopOworfTsKKwordHlw
ZWRlZiBKU0J1aWx0aW5Qcml2YXRlQ29uc3RydWN0b3I8SlNSZWFkYWJsZVN0cmVhbVJlYWRlciwg
UmVhZGFibGVTdHJlYW1SZWFkZXI+IEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0
ZUNvbnN0cnVjdG9yOwordHlwZWRlZiBKU0J1aWx0aW5Qcml2YXRlQ29uc3RydWN0b3I8SlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIsIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gSlNCdWlsdGlu
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNCdWlsdGluUmVhZGFibGVTdHJlYW1SZWFk
ZXJQcml2YXRlQ29uc3RydWN0b3IpOworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rv
cik7CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFt
UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRl
clByaXZhdGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNCdWlsdGluUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcml2YXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByaXZhdGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNCdWlsdGluUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKSB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gdm9pZCBK
U0J1aWx0aW5Qcml2YXRlQ29uc3RydWN0b3I8SlNDbGFzcywgRE9NQ2xhc3M+OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgc2V0SW5pdGlh
bGl6ZUZ1bmN0aW9uKHZtLCBmdW5jdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3MsIHR5cGVuYW1lIERPTUNsYXNzPiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQnVp
bHRpblByaXZhdGVDb25zdHJ1Y3RvcjxKU0NsYXNzLCBET01DbGFzcz46OnByaXZhdGVDb25zdHJ1
Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
QnVpbHRpblByaXZhdGVDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CisgICAgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKTsK
KyAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSBKU0NsYXNzOjpjcmVhdGUoZ2V0RE9NU3RydWN0
dXJlPEpTQ2xhc3M+KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0KSwgJmdsb2JhbE9i
amVjdCwgRE9NQ2xhc3M6OmNyZWF0ZSgpKTsKKyAgICBjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFy
Z3VtZW50cygqc3RhdGUsICpvYmplY3QsICpjYXN0ZWRUaGlzLT5pbml0aWFsaXplRnVuY3Rpb24o
KSk7CisgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBDb25zdHJ1Y3RUeXBlIEpT
QnVpbHRpblByaXZhdGVDb25zdHJ1Y3RvcjxKU0NsYXNzLCBET01DbGFzcz46OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHByaXZhdGVDb25zdHJ1Y3Q7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVIb3N0OworfQorCitKU1ZhbHVlIGNyZWF0ZVJlYWRhYmxlU3RyZWFtUmVh
ZGVyUHJpdmF0ZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyAgICByZXR1cm4gSlNCdWlsdGluUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRl
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwKKyAgICAgICAgSlNCdWlsdGluUmVhZGFibGVTdHJlYW1S
ZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpLAorICAgICAgICBnbG9iYWxPYmplY3Qs
IAorICAgICAgICAqSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJs
ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXJDb2Rl
R2VuZXJhdG9yKHZtKSwgJmdsb2JhbE9iamVjdCkpOworfQorCitKU1ZhbHVlIGNyZWF0ZVJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTQnVpbHRpblJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLAorICAgICAgICBKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkp
LAorICAgICAgICBnbG9iYWxPYmplY3QsIAorICAgICAgICAqSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKHZtLCByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXpl
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSksICZnbG9iYWxPYmplY3Qp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZUNvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MDAwYTRiZWQ1YTc0YmYzN2Y4ZDM5YTI3YmMw
NDE4Y2U0MzZhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsMzcgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnNfaAorI2RlZmluZSBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZUNvbnN0cnVjdG9yc19oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlIDxy
dW50aW1lL0pTQ0pTVmFsdWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0RP
TUdsb2JhbE9iamVjdDsKKworSlNDOjpKU1ZhbHVlIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByaXZhdGVDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKK0pT
Qzo6SlNWYWx1ZSBjcmVhdGVSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKworI2VuZGlmIC8vIFJlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3JzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJl
YWRlckN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YjE2OTcyZTk3
ODg1OTJhNDQyMzZiZDkyNWQ1ZTU5ZWMzNDg1MjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0g
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1RS
RUFNU19BUEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUg
IkpTUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2xv
c2VkKSB7Ci0gICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiBjbG9zZWRQcm9taXNlID0gSlNQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgbV9j
bG9zZWQuc2V0KHN0YXRlLnZtKCksIHRoaXMsIGNsb3NlZFByb21pc2UtPnByb21pc2UoKSk7Ci0g
ICAgICAgIGltcGwoKS5jbG9zZWQoRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIGNsb3NlZFByb21pc2UpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fY2xvc2VkLmdldCgpOwot
fQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJl
YW1SZWFkZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3Vu
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHRha2Vz
IGEgUmVhZGFibGVTdHJlYW0gYXMgcGFyYW1ldGVyIikpKTsKLQotICAgIEpTUmVhZGFibGVTdHJl
YW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKLSAgICBpZiAoIXN0cmVhbSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbVJl
YWRlciBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0iKSkpOwot
Ci0gICAgaWYgKHN0cmVhbS0+aW1wbCgpLmxvY2tlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxl
U3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBpcyBhIGxvY2tlZCBSZWFkYWJsZVN0
cmVhbSIpKSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBFbmNvZGVkSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHN0cmVhbS0+Z2xvYmFsT2JqZWN0
KCksIHN0cmVhbS0+aW1wbCgpLmdldFJlYWRlcihlYykpKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAg
ICByZXR1cm4gdmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2M3N2ZlN2ZmMTI2NjIwN2YwZDNlODQzZjhkNGY4
YmY5ODUxODI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMzc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24g
SW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0KLSNpZiBFTkFCTEUoU1RS
RUFNU19BUEkpCi0KLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKLSNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJp
bmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJndW1lbnRzKQotewotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoanNGdW5jdGlv
biwgY2FsbERhdGEpOwotICAgIHJldHVybiBjYWxsKCZleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKLX0KLQotSlNQcm9taXNlKiBSZWFk
YWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcikKLXsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZ2V0
UHJvcGVydHlGcm9tT2JqZWN0KHN0YXRlLCAqbV9zb3VyY2UuZ2V0KCksIHByb3BlcnR5TmFtZSk7
Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICghZnVuY3Rp
b24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0
ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRv
IGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKSk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKHBhcmFtZXRlcik7Ci0KLSAgICBKU1Byb21pc2UqIHByb21p
c2UgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rp
b24sIG1fc291cmNlLmdldCgpLCBhcmd1bWVudHMpKTsKLQotICAgIEFTU0VSVCghKHByb21pc2Ug
JiYgc3RhdGUuaGFkRXhjZXB0aW9uKCkpKTsKLSAgICByZXR1cm4gcHJvbWlzZTsKLX0KLQotc3Rh
dGljIHZvaWQgdGhlblByb21pc2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNQcm9taXNlKiBkZWZlcnJl
ZFByb21pc2UsIEpTVmFsdWUgZnVsbGZpbEZ1bmN0aW9uLCBKU1ZhbHVlIHJlamVjdEZ1bmN0aW9u
KQotewotICAgIEpTVmFsdWUgdGhlblZhbHVlID0gZGVmZXJyZWRQcm9taXNlLT5nZXQoJnN0YXRl
LCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPnRoZW4pOwotICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsbGZpbEZ1bmN0aW9uKTsKLSAgICBhcmd1
bWVudHMuYXBwZW5kKHJlamVjdEZ1bmN0aW9uKTsKLQotICAgIGNhbGxGdW5jdGlvbihzdGF0ZSwg
dGhlblZhbHVlLCBkZWZlcnJlZFByb21pc2UsIGFyZ3VtZW50cyk7Ci19Ci0KLUpTRE9NR2xvYmFs
T2JqZWN0KiBSZWFkYWJsZUpTU3RyZWFtOjpnbG9iYWxPYmplY3QoKQotewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9zb3VyY2UtPmdsb2JhbE9iamVjdCgp
KTsKLX0KLQotc3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVHZW5lcmljRXJyb3JSZWpl
Y3RlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlYWRhYmxlSlNTdHJlYW0mIHJlYWRhYmxl
U3RyZWFtKQotewotICAgIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBzdHJlYW0gPSAmcmVhZGFi
bGVTdHJlYW07Ci0gICAgcmV0dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52
bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbc3RyZWFt
XShFeGVjU3RhdGUqIHN0YXRlKSB7Ci0gICAgICAgIHN0cmVhbS0+c3RvcmVFcnJvcigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNGdW5jdGlvbiogY3Jl
YXRlU3RhcnRSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBSZWFkYWJs
ZVN0cmVhbSYgcmVhZGFibGVTdHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBz
dHJlYW0gPSAmcmVhZGFibGVTdHJlYW07Ci0gICAgcmV0dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246
OmNyZWF0ZShzdGF0ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0
cmluZygpLCBbc3RyZWFtXShFeGVjU3RhdGUqKSB7Ci0gICAgICAgIHN0cmVhbS0+c3RhcnQoKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9KTsK
LX0KLQotc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhSZWFkYWJs
ZVN0cmVhbSYgc3RyZWFtKQotewotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gcHJvdGVjdGVk
U3RyZWFtID0gJnN0cmVhbTsKLSAgICBzdHJlYW0uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhbcHJvdGVjdGVkU3RyZWFtXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAg
ICAgICBwcm90ZWN0ZWRTdHJlYW0tPnN0YXJ0KCk7Ci0gICAgfSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+OjpyZWFkKCkK
LXsKLSAgICBSZWFkYWJsZUpTU3RyZWFtVmFsdWUgY2h1bmsgPSBtX3F1ZXVlLnRha2VGaXJzdCgp
OwotICAgIG1fdG90YWxRdWV1ZVNpemUgLT0gY2h1bmsuc2l6ZTsKLSAgICByZXR1cm4gY2h1bmsu
dmFsdWUuZ2V0KCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVK
U1N0cmVhbVZhbHVlPjo6ZW5xdWV1ZUNodW5rKFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSYmIGNodW5r
KQotewotICAgIG1fdG90YWxRdWV1ZVNpemUgKz0gY2h1bmsuc2l6ZTsKLSAgICBtX3F1ZXVlLmFw
cGVuZChXVEY6Om1vdmUoY2h1bmspKTsKLX0KLQotdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpkb1N0
YXJ0KEV4ZWNTdGF0ZSYgZXhlYykKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jaygmZXhlYyk7Ci0K
LSAgICBKU1Byb21pc2UqIHByb21pc2UgPSBpbnZva2UoZXhlYywgInN0YXJ0IiwganNDb250cm9s
bGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpKSk7Ci0KLSAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFwcm9taXNlKSB7Ci0gICAgICAgIHN0YXJ0
UmVhZGFibGVTdHJlYW1Bc3luYygqdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB0aGVuUHJvbWlzZShleGVjLCBwcm9taXNlLCBjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1
bmN0aW9uKGV4ZWMsICp0aGlzKSwgY3JlYXRlR2VuZXJpY0Vycm9yUmVqZWN0ZWRGdW5jdGlvbihl
eGVjLCAqdGhpcykpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTRnVuY3Rpb24qIGNyZWF0ZVB1bGxS
ZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIFJlYWRhYmxlU3RyZWFtJiBz
dHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAm
c3RyZWFtOwotICAgIHJldHVybiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy52bSgp
LCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksIFtwcm90ZWN0ZWRT
dHJlYW1dKEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5maW5pc2hQdWxs
aW5nKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgfSk7Ci19Ci0KLWJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9QdWxsKCkKLXsKLSAgICBFeGVj
U3RhdGUmIHN0YXRlID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNMb2Nr
SG9sZGVyIGxvY2soJnN0YXRlKTsKLQotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IGludm9rZShz
dGF0ZSwgInB1bGwiLCBqc0NvbnRyb2xsZXIoc3RhdGUsIGdsb2JhbE9iamVjdCgpKSk7Ci0KLSAg
ICBpZiAocHJvbWlzZSkKLSAgICAgICAgdGhlblByb21pc2Uoc3RhdGUsIHByb21pc2UsIGNyZWF0
ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihzdGF0ZSwgKnRoaXMpLCBjcmVhdGVHZW5lcmlj
RXJyb3JSZWplY3RlZEZ1bmN0aW9uKHN0YXRlLCAqdGhpcykpOwotCi0gICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHN0b3JlRXhjZXB0aW9uKHN0YXRlKTsKLSAgICAgICAg
QVNTRVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHJldHVybiAhcHJvbWlzZTsKLX0KLQotc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZUNhbmNlbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVT
dHJlYW0mIHN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0
cmVhbSA9ICZzdHJlYW07Ci0gICAgcmV0dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShl
eGVjLnZtKCksIGV4ZWMuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3By
b3RlY3RlZFN0cmVhbV0oRXhlY1N0YXRlKikgewotICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPm5v
dGlmeUNhbmNlbFN1Y2NlZWRlZCgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIH0pOwotfQotCi1zdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2Fu
Y2VsUmVzdWx0UmVqZWN0ZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIFJlYWRhYmxlSlNTdHJl
YW0mIHN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcHJvdGVjdGVkU3Ry
ZWFtID0gJnN0cmVhbTsKLSAgICByZXR1cm4gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbcHJv
dGVjdGVkU3RyZWFtXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgcHJvdGVjdGVkU3RyZWFt
LT5zdG9yZUVycm9yKCpleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgICAgIHByb3RlY3Rl
ZFN0cmVhbS0+bm90aWZ5Q2FuY2VsRmFpbGVkKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhZGFibGVKU1N0cmVh
bTo6ZG9DYW5jZWwoSlNWYWx1ZSByZWFzb24pCi17Ci0gICAgRXhlY1N0YXRlJiBleGVjID0gKmds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soJmV4ZWMp
OwotCi0gICAgSlNQcm9taXNlKiBwcm9taXNlID0gaW52b2tlKGV4ZWMsICJjYW5jZWwiLCByZWFz
b24pOwotCi0gICAgaWYgKHByb21pc2UpCi0gICAgICAgIHRoZW5Qcm9taXNlKGV4ZWMsIHByb21p
c2UsIGNyZWF0ZUNhbmNlbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSwgY3Jl
YXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRGdW5jdGlvbihleGVjLCAqdGhpcykpOwotCi0gICAgaWYg
KGV4ZWMuaGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgc3RvcmVFeGNlcHRpb24oZXhlYyk7Ci0g
ICAgICAgIEFTU0VSVCghZXhlYy5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gIXByb21pc2U7Ci19Ci0KLVJlZlB0cjxSZWFkYWJsZUpTU3Ry
ZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKLXsKLSAgICBKU09i
amVjdCoganNTb3VyY2U7Ci0gICAgaWYgKHNvdXJjZS5pc09iamVjdCgpKQotICAgICAgICBqc1Nv
dXJjZSA9IHNvdXJjZS5nZXRPYmplY3QoKTsKLSAgICBlbHNlIGlmICghc291cmNlLmlzVW5kZWZp
bmVkKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsICJBcmd1bWVudCAxIG9m
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gb2JqZWN0Iik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0gZWxzZQotICAgICAgICBqc1NvdXJjZSA9IEpTRmluYWxP
YmplY3Q6OmNyZWF0ZShzdGF0ZS52bSgpLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
c3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCBqc051bGwoKSwgMSkp
OwotCi0gICAgZG91YmxlIGhpZ2hXYXRlck1hcmsgPSAxOwotICAgIEpTRnVuY3Rpb24qIHNpemVG
dW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKCFzdHJhdGVneS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7Ci0gICAgICAgIGlmIChzdHJhdGVneS5nZXQoImhpZ2hXYXRlck1hcmsiLCBoaWdoV2F0ZXJN
YXJrKSkgewotICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsKLSAg
ICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBv
ZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBOYU4i
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwgMCkgewotICAgICAgICAgICAgICAgIHRocm93Vk1S
YW5nZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBuZWdhdGl2ZSIpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0gZWxzZSBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
ICAgICBpZiAoc3RyYXRlZ3kuZ2V0KCJzaXplIiwgc2l6ZUZ1bmN0aW9uKSkgewotICAgICAgICAg
ICAgaWYgKCFzaXplRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KCZzdGF0ZSwgIidzaXplJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVj
dG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmVmUHRyPFJlYWRh
YmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3Ry
ZWFtKHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6ZUZ1bmN0aW9uKSk7Ci0gICAg
cmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3RhdGUpOwotCi0gICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiByZWFkYWJsZVN0
cmVhbTsKLX0KLQotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShFeGVjU3RhdGUm
IHN0YXRlLCBKU09iamVjdCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywgSlNGdW5jdGlv
biogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVK
U1N0cmVhbVZhbHVlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSwgaGlnaFdhdGVyTWFyaykKLXsKLSAgICBtX3NvdXJjZS5zZXQoc3RhdGUudm0oKSwgc291cmNl
KTsKLSAgICBpZiAoc2l6ZUZ1bmN0aW9uKQotICAgICAgICBtX3NpemVGdW5jdGlvbi5zZXQoc3Rh
dGUudm0oKSwgc2l6ZUZ1bmN0aW9uKTsKLX0KLQotSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpq
c0NvbnRyb2xsZXIoRXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQotewotICAgIGlmICghbV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4oKnRoaXMpOwotICAgIHJl
dHVybiB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QsIG1fY29udHJvbGxlci5nZXQoKSk7Ci19Ci0K
LXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAg
aWYgKGlzQ2xvc2VSZXF1ZXN0ZWQoKSB8fCBpc0Vycm9yZWQoKSkgewotICAgICAgICBlYyA9IFR5
cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjaGFuZ2VTdGF0ZVRvQ2xvc2Vk
KCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6ZXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICgh
aXNSZWFkYWJsZSgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIHN0b3JlRXJyb3Ioc3RhdGUsIHZhbHVlKTsKLX0KLQotdm9pZCBSZWFkYWJs
ZUpTU3RyZWFtOjpzdG9yZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAg
SlNWYWx1ZSBleGNlcHRpb24gPSBzdGF0ZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKLSAgICBzdGF0
ZS5jbGVhckV4Y2VwdGlvbigpOwotICAgIHN0b3JlRXJyb3Ioc3RhdGUsIGV4Y2VwdGlvbik7Ci19
Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6c3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgZXhl
YywgSlNWYWx1ZSBlcnJvcikKLXsKLSAgICBpZiAobV9lcnJvcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fZXJyb3Iuc2V0KGV4ZWMudm0oKSwgZXJyb3IpOwotCi0gICAgY2hhbmdlU3RhdGVUb0Vy
cm9yZWQoKTsKLX0KLQotdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjplbnF1ZXVlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGNodW5rKQotewotICAgIGlmIChpc0Vycm9yZWQoKSkg
ewotICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBlcnJvcigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoaXNDbG9zZVJlcXVlc3RlZCgpKSB7Ci0gICAgICAgIHRocm93Vk1F
cnJvcigmc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFR5cGVFcnJvcikpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghaXNSZWFkYWJsZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAocmVzb2x2ZVJlYWRDYWxsYmFjayhjaHVuaykpIHsKLSAgICAgICAgcHVs
bCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZG91YmxlIHNpemUgPSByZXRyaWV2
ZUNodW5rU2l6ZShzdGF0ZSwgY2h1bmspOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5xdWV1ZUNodW5rKHsgSlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPihzdGF0ZS52bSgpLCBjaHVuayksIHNpemUgfSk7Ci0KLSAgICBwdWxsKCk7Ci19Ci0K
LWRvdWJsZSBSZWFkYWJsZUpTU3RyZWFtOjpyZXRyaWV2ZUNodW5rU2l6ZShFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIGNodW5rKQotewotICAgIGlmICghbV9zaXplRnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiAxOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFy
Z3VtZW50cy5hcHBlbmQoY2h1bmspOwotCi0gICAgSlNWYWx1ZSBzaXplVmFsdWUgPSBjYWxsRnVu
Y3Rpb24oc3RhdGUsIG1fc2l6ZUZ1bmN0aW9uLmdldCgpLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVu
dHMpOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgewotICAgICAgICBzdG9yZUVycm9y
KHN0YXRlLCBzdGF0ZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIGRvdWJsZSBzaXplID0gc2l6ZVZhbHVlLnRvTnVtYmVyKCZzdGF0ZSk7Ci0g
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHN0b3JlRXJyb3Ioc3RhdGUs
IHN0YXRlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKHNpemUpIHx8IHNpemUgPCAwKSB7Ci0gICAgICAgIHN0
b3JlRXJyb3Ioc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFJhbmdlRXJyb3IpKTsK
LSAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIHJldHVybiBzaXplOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVh
bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODMxYjg5MTYzZDU1YTI5Nzc1YjUx
M2FhZDM3ODBmODdkZWQyNDhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAor
KysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyTzE1
IENhbm9uIEluYy4gMjAxNQotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuIDIwMTUK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9O
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBSZWFkYWJsZUpTU3RyZWFtX2gKLSNkZWZpbmUgUmVhZGFibGVKU1N0cmVh
bV9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxp
bmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9Qcml2YXRlTmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU0Z1bmN0aW9uOwotY2xhc3MgSlNQcm9t
aXNlOwotfQotICAgIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU0RPTUdsb2JhbE9i
amVjdDsKLWNsYXNzIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjsKLQotdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKLQotc3RydWN0IFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSB7Ci0gICAgSlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPiB2YWx1ZTsKLSAgICBkb3VibGUgc2l6ZTsKLX07Ci0KLXRlbXBs
YXRlPD4gY2xhc3MgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0cmVhbVZhbHVl
PiA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgZG91YmxlIGRlc2lyZWRT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoV2F0ZXJNYXJrIC0gbV90b3RhbFF1ZXVlU2l6ZTsg
fQotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgZG91YmxlIGhpZ2hXYXRlck1hcmspCi0gICAgICAgIDogUmVh
ZGFibGVTdHJlYW0oY29udGV4dCkKLSAgICAgICAgLCBtX2hpZ2hXYXRlck1hcmsoaGlnaFdhdGVy
TWFyaykgeyB9Ci0KLSAgICB2b2lkIGVucXVldWVDaHVuayhSZWFkYWJsZUpTU3RyZWFtVmFsdWUm
Jik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyVmFsdWVzKCkgb3ZlcnJpZGUg
eyBtX3F1ZXVlLmNsZWFyKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNpemUoKSA8PSAwOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1ZS5zaXplKCk7
IH0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7Ci0KLSAgICBEZXF1
ZTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+IG1fcXVldWU7Ci0gICAgZG91YmxlIG1fdG90YWxRdWV1
ZVNpemUgeyAwIH07Ci0gICAgZG91YmxlIG1faGlnaFdhdGVyTWFyazsKLX07Ci0KLWNsYXNzIFJl
YWRhYmxlSlNTdHJlYW0gZmluYWwgOiBwdWJsaWMgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVh
ZGFibGVKU1N0cmVhbVZhbHVlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZWFkYWJs
ZUpTU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IERp
Y3Rpb25hcnkmKTsKLQotICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpFeGVjU3Rh
dGUmLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYp
OwotCi0gICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsK
LSAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX2Vycm9yLmdldCgp
OyB9Ci0KLSAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwot
ICAgIHZvaWQgZXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKLQotcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpTU3RyZWFtKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU09iamVjdCosIGRvdWJsZSwgSlNDOjpKU0Z1bmN0aW9uKik7Ci0KLSAgICB2b2lkIGRv
U3RhcnQoSlNDOjpFeGVjU3RhdGUmKTsKLQotICAgIEpTQzo6SlNQcm9taXNlKiBpbnZva2UoSlND
OjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcik7Ci0gICAg
dm9pZCBzdG9yZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOwotCi0gICAgdmlydHVhbCBib29s
IGRvUHVsbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkb0NhbmNlbChKU0M6OkpTVmFs
dWUpIG92ZXJyaWRlOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpOwot
Ci0gICAgZG91YmxlIHJldHJpZXZlQ2h1bmtTaXplKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1f
Y29udHJvbGxlcjsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNvbnNpZGVyIG5vdCB1c2luZyBK
U0M6OlN0cm9uZywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDYyNzgKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7Ci0KLSAgICBKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKLSAgICBKU0M6OlN0cm9uZzxKU0M6OkpT
RnVuY3Rpb24+IG1fc2l6ZUZ1bmN0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jZW5kaWYgLy8gUmVhZGFibGVKU1N0
cmVhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTk5ZTA2OWZlY2NjODU2MGE4MDdhMmM2ZmMzNGMzZDlhMjYwOTQ5
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtp
dC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJDb3Jl
QnVpbHRpbk5hbWVzX2gKKyNkZWZpbmUgV2ViQ29yZUJ1aWx0aW5OYW1lc19oCisKKyNpbmNsdWRl
IDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVm
aW5lIFdFQkNPUkVfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KG1hY3JvKVwKKyAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHVuZGVybHlpbmdTb3VyY2Up
IFwKKyAgICBtYWNybyhxdWV1ZSkgXAorICAgIG1hY3JvKHF1ZXVlU2l6ZSkgXAorICAgIG1hY3Jv
KHN0YXJ0ZWQpIFwKKyAgICBtYWNybyhjbG9zZVJlcXVlc3RlZCkgXAorICAgIG1hY3JvKHB1bGxB
Z2FpbikgXAorICAgIG1hY3JvKHB1bGxpbmcpIFwKKyAgICBtYWNybyhyZWFkZXIpIFwKKyAgICBt
YWNybyhzdG9yZWRFcnJvcikgXAorICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKKyAgICBtYWNybyhz
dHJhdGVneVNpemUpIFwKKyAgICBtYWNybyhoaWdoV2F0ZXJNYXJrKSBcCisgICAgbWFjcm8ocmVh
ZFJlcXVlc3RzKSBcCisgICAgbWFjcm8ob3duZXJSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3Jv
KGNsb3NlZFByb21pc2UpIFwKKyAgICBtYWNybyhjbG9zZWRQcm9taXNlUmVzb2x2ZSkgXAorICAg
IG1hY3JvKGNsb3NlZFByb21pc2VSZWplY3QpIFwKKyAgICBtYWNybyhjb250cm9sbGVkUmVhZGFi
bGVTdHJlYW0pIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0cmVhbUNsb3NlZCkgXAorICAgIG1hY3Jv
KHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0cmVhbUVycm9y
ZWQpIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbVJlYWRlcikgXAorICAgIG1hY3JvKFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcikgXAorCitjbGFzcyBXZWJDb3JlQnVpbHRpbk5hbWVzIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXZWJDb3JlQnVpbHRpbk5hbWVzKEpTQzo6Vk0qIHZtKQorICAg
ICAgICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisgICAgewor
I2RlZmluZSBFWFBPUlRfTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVy
bmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgICAg
ICBXRUJDT1JFX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShF
WFBPUlRfTkFNRSkKKyN1bmRlZiBFWFBPUlRfTkFNRQorICAgIH0KKworICAgIFdFQkNPUkVfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9JREVOVElGSUVSX0FDQ0VTU09SKQorCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07Cisg
ICAgV0VCQ09SRV9DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
REVDTEFSRV9CVUlMVElOX05BTUVTKQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gV2ViQ29yZUJ1aWx0aW5OYW1lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAKaW5kZXggMGNjYjQxMWZhMjg0ZTZjM2VlMWE5
MjIxYTgyOGVjODQyZWUxMTMyNy4uOTZjN2UwZTk3ZTcxODcwMDBjYzBhMTVhMWRkYTk3YzQ1MGFh
YmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0
aW5zLmNwcApAQCAtMjksNSArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3lCdWlsdGlucy5jcHAiCiAjaW5jbHVkZSAiQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlu
cy5jcHAiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHAiCisjaW5jbHVkZSAi
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuY3BwIgogI2luY2x1ZGUgIlJlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVh
ZGVyQnVpbHRpbnMuY3BwIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlSlNDbGllbnREYXRhLmgKaW5kZXggMDNkYzY0MTdjNTZjY2I4MGYyMTViOGE3MWYw
MDdkN2Y0MmRiY2I1Yi4uODcwZGQ4MThlYjgyOTQ1N2VhODBlMzUzOGE4NzFkNDk5NTI3NGMwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEu
aApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBXZWJDb3JlSlNDbGllbnREYXRhX2gKIAogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIldlYkNvcmVCdWlsdGluTmFtZXMu
aCIKICNpbmNsdWRlICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTMxLDcgKzMyLDkgQEAK
ICNpbmNsdWRlICJCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmgiCiAj
aW5jbHVkZSAiQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCIKICNpbmNsdWRl
ICJSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFk
ZXJCdWlsdGluc1dyYXBwZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
MiwxNCArNDUsMTUgQEAgY2xhc3MgV2ViQ29yZUpTQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZN
OjpDbGllbnREYXRhIHsKICAgICBmcmllbmQgdm9pZCBpbml0Tm9ybWFsV29ybGRDbGllbnREYXRh
KEpTQzo6Vk0qKTsKIAogcHVibGljOgotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBleHBs
aWNpdCBXZWJDb3JlSlNDbGllbnREYXRhKEpTQzo6Vk0mIHZtKQotICAgICAgICA6IG1fcmVhZGFi
bGVTdHJlYW1CdWlsdGlucygmdm0pCisgICAgICAgIDogbV9idWlsdGluTmFtZXMoJnZtKQorI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICAgICAgLCBtX3JlYWRhYmxlU3RyZWFtQnVpbHRpbnMo
JnZtKQorICAgICAgICAsIG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMoJnZtKQog
ICAgICAgICAsIG1fcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygmdm0pCisgICAgICAg
ICwgbV9yZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zKCZ2bSkKICAgICAgICAgLCBtX2J5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucygmdm0pCiAgICAgICAgICwgbV9jb3VudFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zKCZ2bSkKLSNlbHNlCi0gICAgV2ViQ29yZUpTQ2xpZW50RGF0YShK
U0M6OlZNJikKICNlbmRpZgogICAgIHsKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCkBAIC04OSw5
ICs5MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd29ybGRTZXQucmVtb3ZlKCZ3b3JsZCk7CiAg
ICAgfQogCisgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyYgYnVpbHRpbk5hbWVzKCkgeyByZXR1cm4g
bV9idWlsdGluTmFtZXM7IH0KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zV3JhcHBlciYgcmVhZGFibGVTdHJlYW1CdWlsdGlucygpIHsgcmV0dXJu
IG1fcmVhZGFibGVTdHJlYW1CdWlsdGluczsgfQorICAgIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ckJ1aWx0aW5zV3JhcHBlciYgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMoKSB7IHJl
dHVybiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zOyB9CiAgICAgUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXImIHJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMoKSB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnM7IH0KKyAg
ICBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlciYgcmVhZGFibGVTdHJlYW1SZWFk
ZXJCdWlsdGlucygpIHsgcmV0dXJuIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluczsgfQog
ICAgIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXImIGJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucygpIHsgcmV0dXJuIG1fYnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zOyB9CiAgICAgQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIm
IGNvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMoKSB7IHJldHVybiBtX2NvdW50UXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnM7IH0KICNlbmRpZgpAQCAtMTAwLDkgKzEwOCwxMyBAQCBwcml2YXRlOgog
ICAgIEhhc2hTZXQ8RE9NV3JhcHBlcldvcmxkKj4gbV93b3JsZFNldDsKICAgICBSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiBtX25vcm1hbFdvcmxkOwogCisgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyBt
X2J1aWx0aW5OYW1lczsKKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zV3JhcHBlciBtX3JlYWRhYmxlU3RyZWFtQnVpbHRpbnM7CisgICAgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFwcGVyIG1fcmVhZGFibGVTdHJlYW1Db250cm9s
bGVyQnVpbHRpbnM7CiAgICAgUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIg
bV9yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zOworICAgIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyQnVpbHRpbnNXcmFwcGVyIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluczsKICAgICBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyIG1fYnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zOwogICAgIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFw
cGVyIG1fY291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk4OWEw
ODM1MjViYWZmZTk0OGZlZjYyYTUyNmUxZjA3MWY4OGJmM2EuLmJkZDY0NDE5YmM1Y2MyYTU3ODg5
YWQ3OTM5NDc3ZjY2MDEwODE4MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNS0xMC0wMSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCisgICAgICAgIE1p
Z3JhdGUgc3RyZWFtcyBBUEkgdG8gSlMgQnVpbHRpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzaW5nIHNvbWUgdGVzdHMsIG9uZSBzdWJ0ZXN0
IHBhc3NpbmcsIHR3byBvdGhlcnMgc3RpbGwgZmFpbGluZyBidXQgd2l0aCBkaWZmZXJlbnQgcmVh
c29ucy4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5k
LWNoZWNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQ6CisKKzIwMTUtMTAt
MDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKwogICAgICAg
ICBbU3RyZWFtcyBBUEldIEFkZCBzdXBwb3J0IGZvciBwcml2YXRlIFdlYkNvcmUgSlMgYnVpbHRp
bnMgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDk1MTgKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQK
aW5kZXggNTBhZDE3ZmM2NThkMDM0ODA5MGIzYmI1YjIzNWQ1NzhlMzg5NTI4Mi4uYzU2YjBmOGQ0
MjAxZmVkYzk4NmVhNzdhZGQ3YjNmYTAyMjg1NmVjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFu
ZC1jaGVja3MtZXhwZWN0ZWQudHh0CkBAIC00LDEwICs0LDEwIEBAIFBBU1MgQ2FuIGdldCB0aGUg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkKIEZBSUwgUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCiBGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQogUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2ggd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1GQUlM
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVG8gd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRz
IHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbS5waXBl
VG8gb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5waXBlVG8gd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1
bWVudHMgcGlwZVRvIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayBvbiBpdHMgYXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlw
ZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRl
ck5hbWUpLmdldCcpCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4
dAppbmRleCAyNjQwY2QyMGEyYmUzMGEwNjQ1YTAwN2MxNjg0YjVmYjg2MGM1ODc2Li41OGFjOTRj
M2ZlYjY2ZGZiNTM0YThlODZjMTkxMGQ1YmRmNDc5MTA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcg
QEAKIAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBp
bmRpcmVjdGx5IAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQg
Z2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0
cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9w
ZXJ0aWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdv
dCA0CitGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUg
Y29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogbWV0aG9kIHNob3VsZCBi
ZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1MgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21p
c2Ugb2JqZWN0IAogUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJl
Y3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGly
ZWN0IGNvbnN0cnVjdGlvbikgCiBQQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2
aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQg
KHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262428</attachid>
            <date>2015-10-05 05:56:21 -0700</date>
            <delta_ts>2015-10-05 23:21:29 -0700</delta_ts>
            <desc>Refactoring constructor for future reuse</desc>
            <filename>bug-147092-20151005095550.patch</filename>
            <type>text/plain</type>
            <size>137240</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZjZjcxZTQ4ZDliNWU1
NTQxY2YwZTBlMjgzMjY2MDFmNGU1NzZhYS4uYjBlMzQyMmYwNzgyYzU1OTA4YWRjNTgxYzE0ZTE3
NjAxNGU4NGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0xMC0wNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIE1pZ3Jh
dGUgc3RyZWFtcyBBUEkgdG8gSlMgQnVpbHRpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIFJlYWRhYmxlU3RyZWFtIGltcGxlbWVudGF0aW9u
IGZyb20gQysrIHRvIEpTIEJ1aWx0aW5zLgorICAgICAgICBDcmVhdGVkIHNwZWNpZmljIHByaXZh
dGUgY29uc3RydWN0b3JzIGZvciBSZWFkYWJsZVN0cmVhbVJlYWRlciBhbmQgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLgorICAgICAgICBBZGRlZCB0aGVzZSBjb25zdHJ1Y3RvcnMgdG8gIEpTRE9N
V2luZG93QmFzZS4KKyAgICAgICAgQ29uc3RydWN0b3JzIGFyZSBiYXNlZCBvbiBhIHRlbXBsYXRl
IGZvdW5kIGluIEpTRE9NQ29uc3RydWN0b3Igd2hpY2ggbWlnaHQgc2VydmUgdG8gd2ViaWRsLWdl
bmVyYXRlZCBjbGFzc2VzIGFzIHdlbGwuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qczoKKyAgICAgICAgKHN0cmF0
ZWd5LnNpemUpOgorICAgICAgICAoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAg
KGNhbmNlbCk6CisgICAgICAgIChnZXRSZWFkZXIpOgorICAgICAgICAocGlwZVRvKToKKyAgICAg
ICAgKHRlZSk6CisgICAgICAgIChsb2NrZWQpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGVucXVldWUpOgorICAg
ICAgICAoZXJyb3IpOgorICAgICAgICAoY2xvc2UpOgorICAgICAgICAoZGVzaXJlZFNpemUpOgor
ICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAg
ICAgICAgKHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAo
cHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoaXNS
ZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAg
ICAgKGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKGVycm9yUmVhZGFibGVT
dHJlYW0pOgorICAgICAgICAocmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbCk6CisgICAgICAgIChn
ZXRSZWFkYWJsZVN0cmVhbURlc2lyZWRTaXplKToKKyAgICAgICAgKHJlbGVhc2VSZWFkYWJsZVN0
cmVhbVJlYWRlcik6CisgICAgICAgIChjYW5jZWxSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChm
aW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoY2xvc2VSZWFkYWJsZVN0cmVh
bSk6CisgICAgICAgIChjbG9zZVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKGVucXVl
dWVJblJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFk
ZXIpOgorICAgICAgICAoaW52b2tlT3JOb29wKToKKyAgICAgICAgKHByb21pc2VJbnZva2VPck5v
b3ApOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
Lmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanM6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcy4K
KyAgICAgICAgKGNhbmNlbCk6CisgICAgICAgIChyZWFkKToKKyAgICAgICAgKHJlbGVhc2VMb2Nr
KToKKyAgICAgICAgKGNsb3NlZCk6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6SlNCdWlsdGluQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNC
dWlsdGluQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25z
dHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRl
Q29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpbkNvbnN0cnVj
dG9yPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+OjpjcmVhdGVKU09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj46
OmNyZWF0ZUpTT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3Ry
ZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVJbml0aWFsaXplRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0
ZUNvbnN0cnVjdG9yOjpjcmVhdGVJbml0aWFsaXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0
cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVCdWlsdGluTmFtZXM6Oldl
YkNvcmVCdWlsdGluTmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0
aW5zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpXZWJDb3JlSlNDbGllbnREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OmJ1aWx0aW5OYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpyZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJCdWlsdGlucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRh
OjpyZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zKToKKwogMjAxNS0xMC0wMyAgUmlja3kgTW9u
ZGVsbG8gIDxybW9uZGVsbG9AYXBwbGUuY29tPgogCiAgICAgICAgICJQbHVnLWluIGlzIGJsb2Nr
ZWQiIG1lc3NhZ2UgZG9lc24ndCBkcmF3IGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA2YzUwYzcwMGVlMGUxMWVkNTFjZmVjNjFiZmI5YzQxYTMxOTRmOGZjLi5iMDUyZmQ5ZGIwMTNk
ZjJkYWFjOWVkOGFkMTcxM2YzOWFjZDY4NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc5
LDkgKzk3OSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCiAgICAgTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVm9pY2UuY3BwCiAKLSAgICBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCi0g
ICAgTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAotCiAgICAgTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcAogICAgIE1vZHVsZXMvdmlicmF0aW9u
L1ZpYnJhdGlvbi5jcHAKIApAQCAtMTIwOCwxMyArMTIwNSwxMSBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNSVENJY2VDYW5kaWRh
dGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCi0gICAgYmluZGluZ3Mv
anMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlz
dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcApAQCAtMTI0MSw3ICsxMjM2LDYg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMzU1LDcgKzMzNDksOSBAQCBzZXQoV0VCQ09SRV9K
U19CVUlMVElOUwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL0Nv
dW50UXVldWluZ1N0cmF0ZWd5LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwogKQogCiBXRUJLSVRfSU5DTFVERV9D
T05GSUdfRklMRVNfSUZfRVhJU1RTKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDEwMTY0MTUzOGNlOGYwOGI5OGUwODUwNjVmYmVhMDJjMjJhNzA4NTcuLjQ2NjU0ZjJhZDMxODg5
ZGIzNDI1N2JmZDhjOGZhYzkzZTJkZjA0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtMTI1NSw3ICsxMjU1LDkgQEAgV0VCQ09SRV9KU19CVUlMVElOUyA9IFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcyBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgXAorICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcyBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpz
IFwKICMKIAogYWxsIDogJChXRUJDT1JFX0pTX0JVSUxUSU5TOiUuanM9JUJ1aWx0aW5zLmNwcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGVkZWJhMTEwMzI0MDk1OGMzYmE1NGQ2
MTY2ZmUxMGEyMjcxODAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5v
biBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0KLSNpZiBFTkFC
TEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAi
UmVhZGFibGVKU1N0cmVhbS5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6
UmVmQ291bnRlZExlYWtDb3VudGVyLCByZWFkYWJsZVN0cmVhbUNvdW50ZXIsICgiUmVhZGFibGVT
dHJlYW0iKSk7Ci0KLVJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gUmVhZGFibGVTdHJlYW06OmNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgY29uc3QgRGljdGlv
bmFyeSYgc3RyYXRlZ3kpCi17Ci0gICAgcmV0dXJuIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4oUmVh
ZGFibGVKU1N0cmVhbTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgc3RyYXRlZ3kpKTsKLX0KLQotUmVh
ZGFibGVTdHJlYW06OlJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCi17Ci0jaWZuZGVmIE5ERUJVRwotICAgIHJlYWRhYmxlU3RyZWFtQ291bnRlci5p
bmNyZW1lbnQoKTsKLSNlbmRpZgotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwotfQotCi1SZWFkYWJs
ZVN0cmVhbTo6flJlYWRhYmxlU3RyZWFtKCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVhZGFi
bGVTdHJlYW1Db3VudGVyLmRlY3JlbWVudCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgUmVhZGFibGVT
dHJlYW06OmNsZWFyQ2FsbGJhY2tzKCkKLXsKLSAgICBtX2Nsb3NlZFByb21pc2UgPSBOdWxsb3B0
OwotICAgIG1fcmVhZFJlcXVlc3RzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06
OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQotewotICAgIEFTU0VSVCghbV9jbG9zZVJlcXVlc3RlZCk7
Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkVycm9yZWQpOwotCi0gICAgbV9jbG9zZVJl
cXVlc3RlZCA9IHRydWU7Ci0KLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZGFibGUgfHwg
aGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNsb3NlKCk7Ci19Ci0KLXZvaWQgUmVh
ZGFibGVTdHJlYW06OmNsb3NlKCkKLXsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKLSAg
ICByZWxlYXNlUmVhZGVyKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OnJlbGVhc2VSZWFk
ZXIoKQotewotICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVhZFJlcXVlc3RzKQotICAgICAg
ICByZXF1ZXN0LnJlc29sdmVFbmQoKTsKLSAgICBpZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVs
ZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKLQotICAgIGlmIChtX2Ns
b3NlZFByb21pc2UpCi0gICAgICAgIG1fY2xvc2VkUHJvbWlzZS52YWx1ZSgpLnJlc29sdmUobnVs
bHB0cik7Ci0gICAgY2xlYXJDYWxsYmFja3MoKTsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6
Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQotewotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFk
YWJsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2xlYXJWYWx1ZXMoKTsKLQotICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6RXJyb3JlZDsKLQotICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEpTQzo6SlNWYWx1ZSBlcnJvciA9IHRoaXMtPmVycm9yKCk7Ci0gICAgZm9yIChh
dXRvJiByZXF1ZXN0IDogbV9yZWFkUmVxdWVzdHMpCi0gICAgICAgIHJlcXVlc3QucmVqZWN0KGVy
cm9yKTsKLSAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBlbmQoV1RGOjptb3ZlKG1fcmVhZGVyKSk7
Ci0KLSAgICBpZiAobV9jbG9zZWRQcm9taXNlKQotICAgICAgICBtX2Nsb3NlZFByb21pc2UudmFs
dWUoKS5yZWplY3QoZXJyb3IpOwotICAgIGNsZWFyQ2FsbGJhY2tzKCk7Ci19Ci0KLXZvaWQgUmVh
ZGFibGVTdHJlYW06OnN0YXJ0KCkKLXsKLSAgICBtX2lzU3RhcnRlZCA9IHRydWU7Ci0gICAgcHVs
bCgpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpwdWxsKCkKLXsKLSAgICBpZiAoIW1faXNT
dGFydGVkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpF
cnJvcmVkIHx8IG1fY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
X3JlYWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgaGFzRW5vdWdoVmFsdWVzKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX2lzUHVsbGluZykgewotICAgICAgICBtX3Nob3VsZFB1bGxBZ2Fp
biA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2lzUHVsbGluZyA9IHRy
dWU7Ci0gICAgaWYgKGRvUHVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4g
cHJvdGVjdGVkU3RyZWFtKHRoaXMpOwotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnBvc3RUYXNrKFtwcm90ZWN0ZWRTdHJlYW1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPmZpbmlzaFB1bGxpbmcoKTsKLSAgICAgICAgfSk7
Ci0gICAgfQotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpmaW5pc2hQdWxsaW5nKCkKLXsKLSAg
ICBtX2lzUHVsbGluZyA9IGZhbHNlOwotICAgIGlmIChtX3Nob3VsZFB1bGxBZ2FpbikgewotICAg
ICAgICBtX3Nob3VsZFB1bGxBZ2FpbiA9IGZhbHNlOwotICAgICAgICBwdWxsKCk7Ci0gICAgfQot
fQotCi1SZWFkYWJsZVN0cmVhbVJlYWRlciogUmVhZGFibGVTdHJlYW06OmdldFJlYWRlcihFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobG9ja2VkKCkpIHsKLSAgICAgICAgZWMgPSBUeXBl
RXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBBU1NFUlQoIW1fcmVh
ZGVyKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gbmV3UmVh
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbVJlYWRlcj4oKnRoaXMpOwotICAg
IFJlYWRhYmxlU3RyZWFtUmVhZGVyJiByZWFkZXIgPSAqbmV3UmVhZGVyLmdldCgpOwotCi0gICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKSB7Ci0gICAgICAgIG1fcmVhZGVyID0gV1RG
Ojptb3ZlKG5ld1JlYWRlcik7Ci0gICAgICAgIHJldHVybiAmcmVhZGVyOwotICAgIH0KLQotICAg
IG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobmV3UmVhZGVyKSk7Ci0gICAgcmV0
dXJuICZyZWFkZXI7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW06OmNhbmNlbChKU0M6OkpTVmFs
dWUgcmVhc29uLCBDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgaWYgKGxvY2tlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhbmNlbE5vQ2hlY2socmVhc29uLCBXVEY6Om1vdmUocHJvbWlz
ZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjYW5jZWxOb0NoZWNrKEpTQzo6SlNWYWx1
ZSByZWFzb24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlKQotewotICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKSB7
Ci0gICAgICAgIHByb21pc2UucmVqZWN0KGVycm9yKCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJsZSk7Ci0KLSAgICBjbGVhclZh
bHVlcygpOwotCi0gICAgbV9jYW5jZWxQcm9taXNlID0gV1RGOjptb3ZlKHByb21pc2UpOwotCi0g
ICAgY2xvc2UoKTsKLQotICAgIGlmIChkb0NhbmNlbChyZWFzb24pKQotICAgICAgICBlcnJvcigp
ID8gbm90aWZ5Q2FuY2VsRmFpbGVkKCkgOiBub3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsKLX0KLQot
dm9pZCBSZWFkYWJsZVN0cmVhbTo6bm90aWZ5Q2FuY2VsU3VjY2VlZGVkKCkKLXsKLSAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKTsKLSAgICBBU1NFUlQobV9jYW5jZWxQcm9taXNl
KTsKLQotICAgIG1fY2FuY2VsUHJvbWlzZS52YWx1ZSgpLnJlc29sdmUobnVsbHB0cik7Ci0gICAg
bV9jYW5jZWxQcm9taXNlID0gTnVsbG9wdDsKLX0KLQotdm9pZCBSZWFkYWJsZVN0cmVhbTo6bm90
aWZ5Q2FuY2VsRmFpbGVkKCkKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2Vk
KTsKLSAgICBBU1NFUlQobV9jYW5jZWxQcm9taXNlKTsKLQotICAgIG1fY2FuY2VsUHJvbWlzZS52
YWx1ZSgpLnJlamVjdChlcnJvcigpKTsKLSAgICBtX2NhbmNlbFByb21pc2UgPSBOdWxsb3B0Owot
fQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZWQoQ2xvc2VkUHJvbWlzZSYmIHByb21pc2Up
Ci17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewotICAgICAgICBwcm9taXNl
LnJlc29sdmUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyb3IoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9jbG9zZWRQcm9taXNlID0gV1RGOjptb3Zl
KHByb21pc2UpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWFkKFJlYWRQcm9taXNlJiYg
cmVhZFByb21pc2UpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewotICAg
ICAgICByZWFkUHJvbWlzZS5yZXNvbHZlRW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKLSAgICAgICAgcmVhZFByb21pc2Uu
cmVqZWN0KGVycm9yKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChoYXNWYWx1
ZSgpKSB7Ci0gICAgICAgIHJlYWRQcm9taXNlLnJlc29sdmUocmVhZCgpKTsKLSAgICAgICAgaWYg
KCFtX2Nsb3NlUmVxdWVzdGVkKQotICAgICAgICAgICAgcHVsbCgpOwotICAgICAgICBlbHNlIGlm
ICghaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgbV9yZWFkUmVxdWVzdHMuYXBwZW5kKFdURjo6bW92ZShyZWFkUHJvbWlzZSkpOwot
ICAgIHB1bGwoKTsKLX0KLQotYm9vbCBSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZVJlYWRDYWxsYmFj
ayhKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZWFkUmVxdWVzdHMudGFrZUZpcnN0
KCkucmVzb2x2ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIFJl
YWRhYmxlU3RyZWFtOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
IlJlYWRhYmxlU3RyZWFtIjsKLX0KLQotYm9vbCBSZWFkYWJsZVN0cmVhbTo6Y2FuU3VzcGVuZEZv
clBhZ2VDYWNoZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgYW5kIGRv
IGJldHRlciBoZXJlLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNzdiYTU4OWVlMDIxMDU3MTE5NWQ5YTNhNWE3Y2JhMzUw
ZDE2NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJs
ZVN0cmVhbV9oCi0jZGVmaW5lIFJlYWRhYmxlU3RyZWFtX2gKLQotI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRPTVJlcXVl
c3RTdGF0ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci1jbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIERpY3Rpb25hcnk7Ci1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlcjsKLWNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLS8vIFJl
YWRhYmxlU3RyZWFtIGltcGxlbWVudHMgdGhlIGNvcmUgb2YgdGhlIHN0cmVhbXMgQVBJIFJlYWRh
YmxlU3RyZWFtIGZ1bmN0aW9uYWxpdHkuCi0vLyBJdCBoYW5kbGVzIGluIHBhcnRpY3VsYXIgdGhl
IGJhY2twcmVzc3VyZSBhY2NvcmRpbmcgdGhlIHF1ZXVlIHNpemUuCi0vLyBSZWFkYWJsZVN0cmVh
bSBpcyB1c2luZyBhIFJlYWRhYmxlU3RyZWFtU291cmNlIHRvIGdldCBkYXRhIGluIGl0cyBxdWV1
ZS4KLS8vIFNlZSBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNycwotY2xhc3MgUmVh
ZGFibGVTdHJlYW0gOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbT4gewotcHVibGljOgotICAgIGVu
dW0gY2xhc3MgU3RhdGUgewotICAgICAgICBSZWFkYWJsZSwKLSAgICAgICAgQ2xvc2VkLAotICAg
ICAgICBFcnJvcmVkCi0gICAgfTsKLQotICAgIHN0YXRpYyBSZWZQdHI8UmVhZGFibGVTdHJlYW0+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgRGljdGlvbmFyeSYp
OwotICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICBSZWFkYWJsZVN0cmVhbVJl
YWRlciogZ2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBjb25zdCBSZWFkYWJsZVN0cmVh
bVJlYWRlciogcmVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkZXIuZ2V0KCk7IH0KLQotICAg
IGJvb2wgbG9ja2VkKCkgY29uc3QgeyByZXR1cm4gISFtX3JlYWRlcjsgfQotCi0gICAgdm9pZCBy
ZWxlYXNlUmVhZGVyKCk7Ci0gICAgYm9vbCBoYXNSZWFkUGVuZGluZ1JlcXVlc3RzKCkgeyByZXR1
cm4gIW1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKTsgfQotCi0gICAgYm9vbCBpc0Vycm9yZWQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkOyB9Ci0gICAgYm9vbCBpc1Jl
YWRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGU7IH0KLSAg
ICBib29sIGlzQ2xvc2VSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlUmVxdWVzdGVk
OyB9Ci0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBlcnJvcigpID0gMDsKLQotICAgIHZvaWQg
c3RhcnQoKTsKLSAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKLSAgICB2b2lkIGNoYW5n
ZVN0YXRlVG9FcnJvcmVkKCk7Ci0gICAgdm9pZCBmaW5pc2hQdWxsaW5nKCk7Ci0gICAgdm9pZCBu
b3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsKLSAgICB2b2lkIG5vdGlmeUNhbmNlbEZhaWxlZCgpOwot
Ci0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBKU0M6OkpTVmFsdWU+IENh
bmNlbFByb21pc2U7Ci0gICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlLCBDYW5jZWxQcm9taXNl
JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNhbmNlbE5vQ2hlY2soSlNDOjpKU1ZhbHVl
LCBDYW5jZWxQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0
cl90LCBKU0M6OkpTVmFsdWU+IENsb3NlZFByb21pc2U7Ci0gICAgdm9pZCBjbG9zZWQoQ2xvc2Vk
UHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZUl0ZXJhdG9yV2l0aENhbGxiYWNr
PEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlPiBSZWFkUHJvbWlzZTsKLSAgICB2b2lkIHJlYWQo
UmVhZFByb21pc2UmJik7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBSZWFkYWJsZVN0cmVh
bShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0KLSAgICBib29sIHJlc29sdmVSZWFkQ2FsbGJh
Y2soSlNDOjpKU1ZhbHVlKTsKLSAgICB2b2lkIHB1bGwoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBB
Y3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhblN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBjb25z
dCBvdmVycmlkZTsKLQotICAgIHZvaWQgY2xlYXJDYWxsYmFja3MoKTsKLSAgICB2b2lkIGNsb3Nl
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGhhc0Vub3VnaFZhbHVlcygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmFs
dWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgZG9QdWxsKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkb0NhbmNlbChK
U0M6OkpTVmFsdWUpID0gMDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJl
YWRlcj4gbV9yZWFkZXI7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVh
bVJlYWRlcj4+IG1fcmVsZWFzZWRSZWFkZXJzOwotCi0gICAgT3B0aW9uYWw8Q2FuY2VsUHJvbWlz
ZT4gbV9jYW5jZWxQcm9taXNlOwotICAgIE9wdGlvbmFsPENsb3NlZFByb21pc2U+IG1fY2xvc2Vk
UHJvbWlzZTsKLQotICAgIERlcXVlPFJlYWRQcm9taXNlPiBtX3JlYWRSZXF1ZXN0czsKLQotICAg
IGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1B1bGxpbmcgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9zaG91bGRQdWxsQWdhaW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9j
bG9zZVJlcXVlc3RlZCB7IGZhbHNlIH07Ci0gICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSZWFk
YWJsZSB9OwotfTsKLQotLy8gVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBxdWV1ZSBhbmQga25vd3Mg
d2hldGhlciB0aGVyZSBpcyBzdWZmaWNpZW50IGRhdGEgaW4gaXQuCi0vLyAgIFN1YmNsYXNzZXMg
c2hvdWxkIGltcGxlbWVudCBlcnJvciBzdG9yYWdlLCBwdWxsaW5nIGFuZCBjYW5jZWxsaW5nLgot
dGVtcGxhdGU8dHlwZW5hbWUgQ2h1bmtUeXBlPgotY2xhc3MgUmVhZGFibGVFbnF1ZXVpbmdTdHJl
YW0gZmluYWwgOiBwdWJsaWMgUmVhZGFibGVTdHJlYW0gewotcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIDogUmVhZGFibGVTdHJlYW0oY29udGV4dCkgeyB9Ci0KLSAgICB2b2lkIGVucXVldWVDaHVu
ayhDaHVua1R5cGUmJiBjaHVuaykgeyBtX3F1ZXVlLmFwcGVuZChzdGQ6OmZvcndhcmQoY2h1bmsp
KTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhclZhbHVlcygpIG92ZXJyaWRl
IHsgbV9xdWV1ZS5jbGVhcigpOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0Vub3VnaFZhbHVlcygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1ZS5zaXplKCk7IH0K
LSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7Ci0KLSAgICBEZXF1ZTxD
aHVua1R5cGU+IG1fcXVldWU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaHVua1R5cGU+Ci1p
bmxpbmUgSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPENodW5rVHlwZT46OnJl
YWQoKQotewotICAgIERPTVJlcXVlc3RTdGF0ZSBzdGF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIHJldHVybiB0b0pTKHN0YXRlLmV4ZWMoKSwgdG9KU0RPTUdsb2JhbE9iamVjdChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXRlLmV4ZWMoKSksIG1fcXVldWUucmVhZCgpKTsK
LX0KLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJlYWRhYmxlU3RyZWFtX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCmluZGV4IGM2
ZWY4YWE0MGZjNWY3M2QxZTRhYjAyNmViNTgxYWQyNjg4ZjhmODQuLjA0OWNjOWYzYjZmNGZkYTYy
OGIyMTg2MDBjMjYzOGQ2MWFjODAwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbApAQCAtMjgsMTYgKzI4LDE0IEBACiAgKi8KIAog
WwotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCi0gICAgQ29uc3RydWN0b3Io
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgc291cmNlLCBbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERpY3Rpb25hcnkgc3RyYXRlZ3kpLAogICAgIENvbmRpdGlvbmFsPVNUUkVB
TVNfQVBJLAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCisgICAgSlNCdWlsdGluQ29uc3RydWN0
b3IKIF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBQ
cm9taXNlIGNhbmNlbChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSByZWFzb24pOwot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGdldFJlYWRlcigpOwot
ICAgIFtDdXN0b21dIFByb21pc2UgcGlwZVRvKGFueSBzdHJlYW1zLCBhbnkgb3B0aW9ucyk7Cisg
ICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBhbnkgcmVhc29uKTsKKyAgICBbSlNCdWlsdGluXSBPYmplY3QgZ2V0UmVhZGVyKCk7CisgICAg
W0pTQnVpbHRpbl0gUHJvbWlzZSBwaXBlVG8oYW55IHN0cmVhbXMsIGFueSBvcHRpb25zKTsKICAg
ICBbSlNCdWlsdGluXSBPYmplY3QgcGlwZVRocm91Z2goYW55IGRlc3QsIGFueSBvcHRpb25zKTsK
ICAgICBbSlNCdWlsdGluXSBPYmplY3QgdGVlKCk7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBsb2NrZWQ7CisgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gbG9ja2VkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5qcwppbmRleCA2NmIxOGQ0YWRmMjNlOTBmYTA4YmZmN2I0MDZmZmFkNGUyYTZl
ODkxLi5kMzY2OTNhNDUxMzYyZWZkYzhhZjk3MTRhOGU2MzkwOTUzNWVhNWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0yMyw2
ICsyMyw4MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitmdW5jdGlvbiBpbml0aWFsaXplUmVh
ZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZSwgc3RyYXRlZ3kpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NvdXJjZSA9PT0gInVuZGVmaW5lZCIp
CisgICAgICAgICB1bmRlcmx5aW5nU291cmNlID0geyB9OworICAgICBpZiAodHlwZW9mIHN0cmF0
ZWd5ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgIHN0cmF0ZWd5ID0geyBoaWdoV2F0ZXJNYXJr
OiAxLCBzaXplOiBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH0gfTsKKworICAgIGlmICghQGlzT2Jq
ZWN0KHVuZGVybHlpbmdTb3VyY2UpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIGZpcnN0IGFyZ3VtZW50
Iik7CisKKyAgICBpZiAoc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCAmJiAhQGlzT2JqZWN0KHN0cmF0
ZWd5KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGNvbnN0
cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBzZWNvbmQgYXJndW1lbnQsIGlmIGFueSIpOworCisg
ICAgdGhpcy5AdW5kZXJseWluZ1NvdXJjZSA9IHVuZGVybHlpbmdTb3VyY2U7CisKKyAgICB0aGlz
LkBxdWV1ZSA9IFtdOworICAgIHRoaXMuQHF1ZXVlU2l6ZSA9IDA7CisgICAgdGhpcy5Ac3RhdGUg
PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZTsKKyAgICB0aGlzLkBzdGFydGVkID0gZmFsc2U7Cisg
ICAgdGhpcy5AY2xvc2VSZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICB0aGlzLkBwdWxsQWdhaW4gPSBm
YWxzZTsKKyAgICB0aGlzLkBwdWxsaW5nID0gZmFsc2U7CisgICAgdGhpcy5AcmVhZGVyID0gdW5k
ZWZpbmVkOworICAgIHRoaXMuQHN0b3JlZEVycm9yID0gdW5kZWZpbmVkOworICAgIHRoaXMuQGNv
bnRyb2xsZXIgPSBuZXcgQFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih0aGlzKTsKKyAgICB0aGlz
LkBzdHJhdGVneVNpemUgPSBzdHJhdGVneS5zaXplOworICAgIHRoaXMuQGhpZ2hXYXRlck1hcmsg
PSBOdW1iZXIoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayk7CisKKyAgICBpZiAoTnVtYmVyLmlzTmFO
KHRoaXMuQGhpZ2hXYXRlck1hcmspKQorICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJoaWdo
V2F0ZXJNYXJrIHBhcmFtZXRlciBpcyBub3QgY29ycmVjdCIpOworICAgIGlmICh0aGlzLkBoaWdo
V2F0ZXJNYXJrIDwgMCkKKyAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoImhpZ2hXYXRlck1h
cmsgaXMgbmVnYXRpdmUiKTsKKworICAgIHZhciByZXN1bHQgPSBAaW52b2tlT3JOb29wKHVuZGVy
bHlpbmdTb3VyY2UsICJzdGFydCIsIFt0aGlzLkBjb250cm9sbGVyXSk7CisgICAgdmFyIF90aGlz
ID0gdGhpczsKKyAgICBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKGZ1bmN0aW9uKCkgewor
ICAgICAgICBfdGhpcy5Ac3RhcnRlZCA9IHRydWU7CisgICAgICAgIEByZXF1ZXN0UmVhZGFibGVT
dHJlYW1QdWxsKF90aGlzKTsKKyAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICBpZiAo
X3RoaXMuQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAgICAgIEBl
cnJvclJlYWRhYmxlU3RyZWFtKF90aGlzLCBlcnJvcik7CisgICAgfSk7CisKKyAgICByZXR1cm4g
dGhpczsKK30KKworZnVuY3Rpb24gY2FuY2VsKHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtKHRoaXMpKQorICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24g
YSBSZWFkYWJsZVN0cmVhbSIpKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0
aGlzKSkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJSZWFk
YWJsZVN0cmVhbSBpcyBsb2NrZWQiKSk7CisKKyAgICByZXR1cm4gQGNhbmNlbFJlYWRhYmxlU3Ry
ZWFtKHRoaXMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIGdldFJlYWRlcigpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFk
YWJsZVN0cmVhbSIpOworCisgICAgaWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMpKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIik7
CisKKyAgICByZXR1cm4gbmV3IEBSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKK30KKwogZnVu
Y3Rpb24gcGlwZVRocm91Z2goc3RyZWFtcywgb3B0aW9ucykKIHsKICAgICAidXNlIHN0cmljdCI7
CkBAIC0zMSwxMCArMTA1LDI5IEBAIGZ1bmN0aW9uIHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9wdGlv
bnMpCiAgICAgcmV0dXJuIHN0cmVhbXMucmVhZGFibGU7CiB9CiAKK2Z1bmN0aW9uIHBpcGVUbyhk
ZXN0KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJw
aXBlVG8gaXMgbm90IGltcGxlbWVudGVkIik7Cit9CisKIGZ1bmN0aW9uIHRlZSgpCiB7CiAgICAg
InVzZSBzdHJpY3QiOwogCi0gICAgLy8gVE9ETzogY2hlY2sgdGhpcyBpcyBhIFJlYWRhYmxlU3Ry
ZWFtCi0gICAgcmV0dXJuIEB0ZWVSZWFkYWJsZVN0cmVhbSh0aGlzLCBmYWxzZSkKKyAgICBpZiAo
IUBpc1JlYWRhYmxlU3RyZWFtKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
RnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtIik7CisKKyAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigidGVlIGlzIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCitmdW5j
dGlvbiBsb2NrZWQoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFi
bGVTdHJlYW0odGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBz
aG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW0iKTsKKworICAgIHJldHVybiBAaXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaAppbmRleCBhYTdh
YjNjNmNmMjVlMmVhYjc3ZGI2MTJiNzBkZDdkNTM4M2NiZTgxLi44ZmM0NzhjMzk3NzUxOWYwZmFk
NDgyYzFiZjU5YjA2OWYwMzNkODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCkBAIC0zMiwzNCArMzIs
MTggQEAKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgIlJlYWRhYmxlSlNT
dHJlYW0uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLS8vIFRoaXMgY2xhc3MgaXMgb25s
eSB1c2VkIGZvciBKUyBzb3VyY2UgcmVhZGFibGUgc3RyZWFtcyB0byBhbGxvdyBlbnF1ZXVpbmcs
IGNsb3Npbmcgb3IgZXJyb3JpbmcgYSByZWFkYWJsZSBzdHJlYW0uCi0vLyBJdHMgZGVmaW5pdGlv
biBpcyBhdCBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNycy1jb250cm9sbGVyLWNs
YXNzLgotLy8gTm90ZSB0aGF0IGl0cyBjb25zdHJ1Y3RvciBpcyB0YWtpbmcgYSBSZWFkYWJsZUpT
U3RyZWFtIGFzIGl0IHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIEpTIHNvdXJjZXMuCi1jbGFzcyBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgeworLy8gVGhpcyBpcyBhIGR1bW15IGNsYXNzIG5lZWRl
ZCBhcyB3ZSBjYW5ub3QgeWV0IHVzZSBKU0J1aWx0aW5Db25zdHJ1Y3RvciB3aXRoIE5vSW50ZXJm
YWNlT2JqZWN0LgorLy8gSW1wbGVtZW50YXRpb24gb2YgUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
IGZ1bmN0aW9uYWxpdHkgaXMgZG9uZSBpbiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKKy8v
IEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGF0IGNsYXNzLgorY2xhc3MgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1D
b250cm9sbGVyPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyKFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKLSAgICAgICAgOiBtX3N0cmVhbShzdHJlYW0p
IHsgfQotCi0gICAgUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW07
IH0KLQotICAgIHZvaWQgZXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IG1fc3RyZWFtLmVycm9yKHN0YXRlLCB2YWx1ZSwg
ZWMpOyB9Ci0KLSAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
VmFsdWUgdmFsdWUpIHsgbV9zdHJlYW0uZW5xdWV1ZShzdGF0ZSwgdmFsdWUpOyB9Ci0KLSAgICB2
b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVh
bS5kZXJlZigpOyB9Ci0KLSAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IG1fc3Ry
ZWFtLmNsb3NlKGVjKTsgfQotICAgIGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyZWFtLmRlc2lyZWRTaXplKCk7IH0KLQorICAgIHN0YXRpYyBSZWY8UmVhZGFibGVTdHJl
YW1Db250cm9sbGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIpOyB9CiBwcml2YXRlOgotICAgIFJlYWRhYmxlSlNTdHJlYW0mIG1fc3Ry
ZWFtOworICAgIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpIHsgfQogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmlkbAppbmRleCAzMGI4YzhiNWU5NzcxOGExNGZkYmJkY2U5YzYzNWE2ZjY3NGU4
NTU1Li4yMzdiMTU0YzlkZDYzNGZjMjEzY2IzNTgyYjY5ZGYzOWY0YWVjMDMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmlkbApAQCAtMzMsOSArMzMsOSBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCiAgICAgTm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGVucXVldWUoW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgY2h1bmspOwotICAgIFtSYWlzZXNFeGNlcHRp
b25dIHZvaWQgY2xvc2UoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBlcnJvcihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBlcnJvcik7
CisgICAgW0pTQnVpbHRpbl0gdm9pZCBlbnF1ZXVlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgYW55IGNodW5rKTsKKyAgICBbSlNCdWlsdGluXSB2b2lkIGNsb3NlKCk7CisgICAgW0pTQnVp
bHRpbl0gdm9pZCBlcnJvcihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBlcnJvcik7
CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGRlc2lyZWRTaXplOworICAgIFtKU0J1
aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZGVzaXJlZFNpemU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBjMDNkMWRjM2M0N2U5MjQ2MmUzNTE0OWMwOGMyYzg0
NTU1MmY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK2Z1bmN0aW9uIGVucXVldWUoY2h1bmspCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyIik7CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29u
dHJvbGxlZFJlYWRhYmxlU3RyZWFtOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1FcnJvcmVkKQorICAgICAgICB0aHJvdyBzdHJlYW0uQHN0b3JlZEVycm9yOworCisg
ICAgaWYgKHN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJSZWFkYWJsZVN0cmVhbSBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UiKTsKKworICAgIHJldHVy
biBAZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBjaHVuaykKK30KKworZnVuY3Rpb24g
ZXJyb3IoZXJyb3IpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIodGhpcykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJG
dW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIik7
CisKKyAgICB2YXIgc3RyZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworICAg
IGlmIChzdHJlYW0uQHN0YXRlICE9PSBAcmVhZGFibGVTdHJlYW1SZWFkYWJsZSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CisK
KyAgICBAZXJyb3JSZWFkYWJsZVN0cmVhbShzdHJlYW0sIGVycm9yKTsKK30KKworZnVuY3Rpb24g
Y2xvc2UoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rp
b24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisg
ICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAo
c3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJl
YWRhYmxlU3RyZWFtIGlzIGFscmVhZHkgcmVxdWVzdGVkIHRvIGNsb3NlIik7CisKKyAgICBpZiAo
c3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIGFscmVhZHkgZXJyb3JlZCIpOworCisg
ICAgQGNsb3NlUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKK30KKworZnVuY3Rpb24gZGVzaXJlZFNp
emUoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24g
c2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOworCisgICAg
cmV0dXJuIEBnZXRSZWFkYWJsZVN0cmVhbURlc2lyZWRTaXplKHRoaXMuQGNvbnRyb2xsZWRSZWFk
YWJsZVN0cmVhbSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggNGZjN2UyZWY3ZjRlMjA1NTM5
OTM5ODI0ZWI0NzU5M2M5ZGE4ZWY2NC4uZWJkN2Y5OTUwN2M4NDIwNTNlODQ1YWU2MjViNzNmZWZm
YWM2YzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtMjMsOSArMjMsMjkzIEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKK2Z1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1S
ZWFkZXIoc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFi
bGVTdHJlYW0oc3RyZWFtKSkKKyAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW1SZWFkZXIgbmVlZHMgYSBSZWFkYWJsZVN0cmVhbSIpOworICAgIGlmIChAaXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZChzdHJlYW0pKQorICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFk
YWJsZVN0cmVhbSBpcyBsb2NrZWQiKTsKKworICAgIHRoaXMuQHN0YXRlID0gc3RyZWFtLkBzdGF0
ZTsKKyAgICB0aGlzLkByZWFkUmVxdWVzdHMgPSBbXTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9
PT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpIHsKKyAgICAgICAgdGhpcy5Ab3duZXJSZWFkYWJs
ZVN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRlZmluZWQ7
CisgICAgICAgIHN0cmVhbS5AcmVhZGVyID0gdGhpczsKKyAgICAgICAgdGhpcy5AY2xvc2VkUHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgc3RyZWFtLkByZWFkZXIuQGNsb3NlZFByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTsKKyAgICAg
ICAgICAgIHN0cmVhbS5AcmVhZGVyLkBjbG9zZWRQcm9taXNlUmVqZWN0ID0gcmVqZWN0OworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAgIGlmIChzdHJlYW0uQHN0
YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpIHsKKyAgICAgICAgdGhpcy5Ab3duZXJSZWFk
YWJsZVN0cmVhbSA9IG51bGw7CisgICAgICAgIHRoaXMuQHN0b3JlZEVycm9yID0gdW5kZWZpbmVk
OworICAgICAgICB0aGlzLkBjbG9zZWRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAg
ICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICAvLyBUT0RPOiBBU1NFUlQoc3RyZWFtLkBzdGF0
ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCk7CisgICAgdGhpcy5Ab3duZXJSZWFkYWJsZVN0
cmVhbSA9IG51bGw7CisgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSBzdHJlYW0uQHN0b3JlZEVycm9y
OworICAgIHRoaXMuQGNsb3NlZFByb21pc2UgPSBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3Jl
ZEVycm9yKTsKKworICAgIHJldHVybiB0aGlzOworfQorCitmdW5jdGlvbiBwcml2YXRlSW5pdGlh
bGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihzdHJlYW0pCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbShzdHJlYW0pKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG5lZWRzIGEgUmVhZGFibGVT
dHJlYW0iKTsKKyAgICBpZiAodHlwZW9mIHN0cmVhbS5AY29udHJvbGxlciAhPT0gInVuZGVmaW5l
ZCIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBhbHJlYWR5
IGhhcyBhIGNvbnRyb2xsZXIiKTsKKyAgICB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0g
PSBzdHJlYW07CisKKyAgICByZXR1cm4gdGhpczsKK30KKwogZnVuY3Rpb24gdGVlUmVhZGFibGVT
dHJlYW0oc3RyZWFtLCBzaG91bGRDbG9uZSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigidGVlIGlzIG5vdCBpbXBsZW1lbnRlZCIpOwogfQorCitmdW5j
dGlvbiBpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICByZXR1cm4gQGlzT2JqZWN0KHN0cmVhbSkgJiYgISFzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2U7
Cit9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAaXNPYmplY3QocmVhZGVyKSAmJiB0eXBlb2YgcmVh
ZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtICE9PSAidW5kZWZpbmVkIjsKK30KKworZnVuY3Rpb24g
aXNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoY29udHJvbGxlcikKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4gQGlzT2JqZWN0KGNvbnRyb2xsZXIpICYmICEhY29udHJvbGxlci5A
Y29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOworfQorCitmdW5jdGlvbiBlcnJvclJlYWRhYmxlU3Ry
ZWFtKHN0cmVhbSwgZXJyb3IpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gVE9ETzog
QVNTRVJUKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKTsKKyAgICBz
dHJlYW0uQHF1ZXVlID0gW107CisgICAgc3RyZWFtLkBzdG9yZWRFcnJvciA9IGVycm9yOworICAg
IHN0cmVhbS5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkOworCisgICAgaWYgKCFzdHJl
YW0uQHJlYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIHZhciByZWFkZXIgPSBzdHJlYW0uQHJl
YWRlcjsKKworICAgIHZhciByZXF1ZXN0cyA9IHJlYWRlci5AcmVhZFJlcXVlc3RzOworICAgIGZv
ciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcmVxdWVzdHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkKKyAgICAgICAgcmVxdWVzdHNbaW5kZXhdLnJlamVjdChlcnJvcik7CisgICAg
cmVhZGVyLkByZWFkUmVxdWVzdHMgPSBbXTsKKworICAgIEByZWxlYXNlUmVhZGFibGVTdHJlYW1S
ZWFkZXIocmVhZGVyKTsKKyAgICByZWFkZXIuQHN0b3JlZEVycm9yID0gZXJyb3I7CisgICAgcmVh
ZGVyLkBzdGF0ZSA9IEByZWFkYWJsZVN0cmVhbUVycm9yZWQ7CisKKyAgICByZWFkZXIuQGNsb3Nl
ZFByb21pc2VSZWplY3QoZXJyb3IpOworfQorCitmdW5jdGlvbiByZXF1ZXN0UmVhZGFibGVTdHJl
YW1QdWxsKHN0cmVhbSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBz
dGF0ZSAhPT0gQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghc3Ry
ZWFtLkBzdGFydGVkKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCghQGlzUmVhZGFibGVTdHJl
YW1Mb2NrZWQoc3RyZWFtKSB8fCAhc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0cy5sZW5ndGgp
ICYmIEBnZXRSZWFkYWJsZVN0cmVhbURlc2lyZWRTaXplKHN0cmVhbSkgPD0gMCkKKyAgICAgICAg
cmV0dXJuOworIAorICAgIGlmIChzdHJlYW0uQHB1bGxpbmcpIHsKKyAgICAgICAgc3RyZWFtLkBw
dWxsQWdhaW4gPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RyZWFtLkBw
dWxsaW5nID0gdHJ1ZTsKKworICAgIHZhciBwcm9taXNlID0gQHByb21pc2VJbnZva2VPck5vb3Ao
c3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAicHVsbCIsIFtzdHJlYW0uQGNvbnRyb2xsZXJdKTsK
KyAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHN0cmVhbS5AcHVsbGluZyA9
IGZhbHNlOworICAgICAgICBpZiAoc3RyZWFtLkBwdWxsQWdhaW4pIHsKKyAgICAgICAgICAgIHN0
cmVhbS5AcHVsbEFnYWluID0gZmFsc2U7CisgICAgICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3Ry
ZWFtUHVsbChzdHJlYW0pOworICAgICAgICB9CisgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAg
ICAgICAgQGVycm9yUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJvcik7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKK2Z1bmN0aW9uIGdldFJl
YWRhYmxlU3RyZWFtRGVzaXJlZFNpemUoc3RyZWFtKQoreworICAgInVzZSBzdHJpY3QiOworCisg
ICByZXR1cm4gc3RyZWFtLkBoaWdoV2F0ZXJNYXJrIC0gc3RyZWFtLkBxdWV1ZVNpemU7Cit9CisK
K2Z1bmN0aW9uIHJlbGVhc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgcmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtLkByZWFkZXIgPSB1
bmRlZmluZWQ7CisgICAgcmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtID0gbnVsbDsKK30KKwor
ZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNs
b3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0u
QHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOwor
ICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHBy
b21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3Jl
YXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCitmdW5jdGlvbiBmaW5pc2hDbG9zaW5n
UmVhZGFibGVTdHJlYW0oc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRP
RE86IEFTU0VSVChzdHJlYW0uQHN0YXRlID09PSAgQHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpOwor
ICAgIHN0cmVhbS5Ac3RhdGUgPSBAcmVhZGFibGVTdHJlYW1DbG9zZWQ7CisgICAgdmFyIHJlYWRl
ciA9IHN0cmVhbS5AcmVhZGVyOworICAgIGlmIChyZWFkZXIpCisgICAgICAgIEBjbG9zZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKHJlYWRlcik7Cit9CisKK2Z1bmN0aW9uIGNsb3NlUmVhZGFibGVTdHJl
YW0oc3RyZWFtKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRPRE8uIEFTU0VSVCgh
c3RyZWFtLkBjbG9zZVJlcXVlc3RlZCk7CisgICAgLy8gVE9ETzogQVNTRVJUKHN0cmVhbS5Ac3Rh
dGUgIT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybjsgCisgICAgc3RyZWFtLkBj
bG9zZVJlcXVlc3RlZCA9IHRydWU7CisgICAgaWYgKCFzdHJlYW0uQHF1ZXVlLmxlbmd0aCkKKyAg
ICAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworfQorCitmdW5jdGlv
biBjbG9zZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgcmVxdWVzdHMgPSByZWFkZXIuQHJlYWRSZXF1ZXN0czsKKyAgICBmb3IgKHZh
ciBpbmRleCA9IDAsIGxlbmd0aCA9IHJlcXVlc3RzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7ICsr
aW5kZXgpCisgICAgICAgIHJlcXVlc3RzW2luZGV4XS5yZXNvbHZlKHt2YWx1ZTp1bmRlZmluZWQs
IGRvbmU6IHRydWV9KTsKKyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOworICAgIEByZWxl
YXNlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKTsKKyAgICByZWFkZXIuQHN0YXRlID0gQHJl
YWRhYmxlU3RyZWFtQ2xvc2VkOworICAgIHJlYWRlci5AY2xvc2VkUHJvbWlzZVJlc29sdmUoKTsK
K30KKworZnVuY3Rpb24gZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBjaHVuaykKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBUT0RPOiBBU1NFUlQoIXN0cmVhbS5AY2xvc2VS
ZXF1ZXN0ZWQpOworICAgIC8vIFRPRE86IEFTU0VSVChzdHJlYW0uQHN0YXRlICE9PSBAcmVhZGFi
bGVTdHJlYW1FcnJvcmVkKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIGlmIChAaXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZChzdHJlYW0pICYmIHN0cmVhbS5AcmVhZGVyLkByZWFkUmVxdWVzdHMubGVu
Z3RoKSB7CisgICAgICAgIHN0cmVhbS5AcmVhZGVyLkByZWFkUmVxdWVzdHMuc2hpZnQoKS5yZXNv
bHZlKHt2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlfSk7CisgICAgICAgIEByZXF1ZXN0UmVhZGFi
bGVTdHJlYW1QdWxsKHN0cmVhbSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdHJ5IHsK
KyAgICAgICAgdmFyIHNpemUgPSAxOworICAgICAgICBpZiAoc3RyZWFtLkBzdHJhdGVneVNpemUp
IHsKKyAgICAgICAgICAgIHNpemUgPSBOdW1iZXIoc3RyZWFtLkBzdHJhdGVneVNpemUoY2h1bmsp
KTsKKyAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4oc2l6ZSkgfHwgc2l6ZSA9PT0gK0luZmlu
aXR5IHx8IHNpemUgPCAwKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCJD
aHVuayBzaXplIGlzIG5vdCB2YWxpZCIpOworICAgICAgICB9CisgICAgICAgIHN0cmVhbS5AcXVl
dWUucHVzaCh7IHZhbHVlOiBjaHVuaywgc2l6ZTogc2l6ZSB9KTsKKyAgICAgICAgc3RyZWFtLkBx
dWV1ZVNpemUgKz0gc2l6ZTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgQGVy
cm9yUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBlcnJvcik7CisgICAgICAgIHRocm93IGVycm9yOwor
ICAgIH0KKyAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworfQorCitmdW5j
dGlvbiByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAocmVhZGVyLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2Vk
KQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTogdW5kZWZpbmVkLCBkb25l
OiB0cnVlfSk7CisgICAgaWYgKHJlYWRlci5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9y
ZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFkZXIuQHN0b3JlZEVycm9yKTsK
KyAgICAvLyBUT0RPOiBBU1NFUlQoISFyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0pOworICAg
IC8vIFRPRE86IEFTU0VSVChyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHN0YXRlID09PSBA
cmVhZGFibGVTdHJlYW1SZWFkYWJsZSk7CisgICAgdmFyIHN0cmVhbSA9IHJlYWRlci5Ab3duZXJS
ZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBxdWV1ZS5sZW5ndGgpIHsKKyAgICAgICAg
dmFyIGNodW5rID0gc3RyZWFtLkBxdWV1ZS5zaGlmdCgpOworICAgICAgICBzdHJlYW0uQHF1ZXVl
U2l6ZSAtPSBjaHVuay5zaXplOworICAgICAgICBpZiAoIXN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQp
CisgICAgICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOworICAgICAg
ICBlbHNlIGlmICghc3RyZWFtLkBxdWV1ZS5sZW5ndGgpCisgICAgICAgICAgICBAZmluaXNoQ2xv
c2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoe3ZhbHVlOiBjaHVuay52YWx1ZSwgZG9uZTogZmFsc2V9KTsKKyAgICB9CisgICAgdmFyIHJl
YWRSZXF1ZXN0ID0ge307CisgICAgdmFyIHJlYWRQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rp
b24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIHJlYWRSZXF1ZXN0LnJlc29sdmUgPSByZXNv
bHZlOworICAgICAgICByZWFkUmVxdWVzdC5yZWplY3QgPSByZWplY3Q7CisgICAgfSk7CisgICAg
cmVhZGVyLkByZWFkUmVxdWVzdHMucHVzaChyZWFkUmVxdWVzdCk7CisgICAgQHJlcXVlc3RSZWFk
YWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKKyAgICByZXR1cm4gcmVhZFByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIGludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgaWYgKHR5cGVvZiBtZXRo
b2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIG1ldGhvZC5A
YXBwbHkob2JqZWN0LCBhcmdzKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChv
YmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAg
ICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9k
ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJv
cikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjM3ZDk5YzAxZDljMWFh
YWU5ZGM4ZWMyOGNmNzdjNWU2ZWYwZGI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVJlYWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRv
IGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
LSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
Q0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2FuY2VsKEpTQzo6
SlNWYWx1ZSByZWFzb24sIFJlYWRhYmxlU3RyZWFtOjpDYW5jZWxQcm9taXNlJiYgcHJvbWlzZSkK
LXsKLSAgICBpZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9
IHRoaXMpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fc3RyZWFtLmNhbmNlbE5vQ2hlY2socmVhc29uLCBXVEY6Om1vdmUo
cHJvbWlzZSkpOwotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFi
bGVTdHJlYW06OkNsb3NlZFByb21pc2UmJiBwcm9taXNlKQotewotICAgIGlmIChtX3N0cmVhbS5p
c1JlYWRhYmxlKCkgJiYgbV9zdHJlYW0ucmVhZGVyKCkgIT0gdGhpcykgewotICAgICAgICBwcm9t
aXNlLnJlc29sdmUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJl
YW0uY2xvc2VkKFdURjo6bW92ZShwcm9taXNlKSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OnJlYWQoUmVhZGFibGVTdHJlYW06OlJlYWRQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAg
ICBpZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMp
IHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlRW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9zdHJlYW0ucmVhZChXVEY6Om1vdmUocHJvbWlzZSkpOwotfQotCi12b2lkIFJlYWRh
YmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNlTG9jayhFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBp
ZiAobV9zdHJlYW0ucmVhZGVyKCkgIT0gdGhpcykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICht
X3N0cmVhbS5oYXNSZWFkUGVuZGluZ1JlcXVlc3RzKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJy
b3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHJlYW0ucmVsZWFzZVJlYWRlcigp
OwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAppbmRleCBiNGQyZmI1M2Q1MTEwYjJkMTE2YTUz
NzVlZGM2MjgzNWYzMTA0OWI5Li4zOTIyYzkyNzIzZTZhN2Y4NDUwZTA3M2MzN2U5MTJmOWJjNTAx
ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaApAQCAtMzIsMzcgKzMyLDE4IEBACiAKICNpZiBFTkFCTEUoU1RSRUFN
U19BUEkpCiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJSZWFkYWJs
ZVN0cmVhbS5oIgotI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQot
Ly8gUmVhZGFibGVTdHJlYW1SZWFkZXIgaW1wbGVtZW50cyBhY2Nlc3MgdG8gUmVhZGFibGVTdHJl
YW0gZnJvbSBKYXZhU2NyaXB0LgotLy8gSXQgYmFzaWNhbGx5IGFsbG93cyBhY2Nlc3MgdG8gdGhl
IFJlYWRhYmxlU3RyZWFtIGlmZiB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2UgaXMg
dGhlIGFjdGl2ZSByZWFkZXIKLS8vIG9mIHRoZSBSZWFkYWJsZVN0cmVhbS4KLS8vIE1vc3Qgb2Yg
dGhpcyBoYW5kbGluZyBpcyBoYXBwZW5pbmcgaW4gdGhlIGN1c3RvbSBKUyBiaW5kaW5nIG9mIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLgotLy8gU2VlIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5v
cmcvI3JlYWRlci1jbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLWNsYXNzIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIHsKKy8vIFRoaXMgaXMgYSBkdW1teSBjbGFzcyBuZWVkZWQgYXMgd2UgY2Fubm90
IHlldCB1c2UgSlNCdWlsdGluQ29uc3RydWN0b3Igd2l0aCBOb0ludGVyZmFjZU9iamVjdC4KKy8v
IEltcGxlbWVudGF0aW9uIG9mIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGZ1bmN0aW9uYWxpdHkgaXMg
ZG9uZSBpbiBSZWFkYWJsZVN0cmVhbVJlYWRlci5qcworLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8g
cmVtb3ZlIHRoYXQgY2xhc3MuCitjbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiB7CiBwdWJsaWM6Ci0gICAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKLSAgICAgICAgOiBtX3N0
cmVhbShzdHJlYW0pIHsgfQotCi0gICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlLCBSZWFkYWJs
ZVN0cmVhbTo6Q2FuY2VsUHJvbWlzZSYmKTsKLSAgICB2b2lkIGNsb3NlZChSZWFkYWJsZVN0cmVh
bTo6Q2xvc2VkUHJvbWlzZSYmKTsKLSAgICB2b2lkIHJlYWQoUmVhZGFibGVTdHJlYW06OlJlYWRQ
cm9taXNlJiYpOwotICAgIHZvaWQgcmVsZWFzZUxvY2soRXhjZXB0aW9uQ29kZSYpOwotCi0gICAg
dm9pZCByZWYoKSB7IG1fc3RyZWFtLnJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9zdHJl
YW0uZGVyZWYoKTsgfQotCisgICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIpOyB9CiBw
cml2YXRlOgotICAgIFJlYWRhYmxlU3RyZWFtJiBtX3N0cmVhbTsKKyAgICBSZWFkYWJsZVN0cmVh
bVJlYWRlcigpIHsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKaW5kZXggNDFhZmUyNWRiNTlmZGJh
ZDcxOWFjOTQyMGNlZDhhNGY4ZmJjYWEyNy4uM2ZlOGJlYzJjYjA4NTlkMzkwNDNlOWM1ZGJmMzIz
MjMwNTYyNzVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCkBAIC0yOSwxMyArMjksMTMgQEAKIAogWwogICAg
IENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAotICAgIEN1c3RvbUNvbnN0cnVjdG9yKGFueSBwcm9w
ZXJ0aWVzKSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBTa2lwVlRhYmxlVmFsaWRhdGlv
bgorICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CisgICAgTm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHsKLSAgICBQcm9taXNlIHJlYWQoKTsKLSAgICBQcm9taXNlIGNhbmNlbChbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIGFueSByZWFzb24pOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
cmVsZWFzZUxvY2soKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIHJlYWQoKTsKKyAgICBbSlNC
dWlsdGluXSBQcm9taXNlIGNhbmNlbChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBy
ZWFzb24pOworICAgIFtKU0J1aWx0aW5dIHZvaWQgcmVsZWFzZUxvY2soKTsKIAotICAgIFtDdXN0
b21HZXR0ZXIsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgY2xv
c2VkOworICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIGNsb3NlZDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NDBjMzE2MzBhMWJiMzI2NzQxY2EyNWFiYWI5
YWZjMDBiYTJkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworZnVuY3Rpb24gY2FuY2VsKHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQorICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBj
YWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKworICAgIGlmICh0aGlzLkBzdGF0
ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7CisKKyAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQp
CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisKKyAg
ICAvLyBUT0RPIEFTU0VSVChAaXNSZWFkYWJsZVN0cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3Ry
ZWFtKSk7CisgICAgLy8gVE9ETyBBU1NFUlQodGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbVJlYWRhYmxlKTsKKyAgICByZXR1cm4gQGNhbmNlbFJlYWRh
YmxlU3RyZWFtKHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0sIHJlYXNvbik7Cit9CisKK2Z1bmN0
aW9uIHJlYWQoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzUmVhZGFibGVT
dHJlYW1SZWFkZXIodGhpcykpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQFR5
cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIikpOworCisgICAgcmV0dXJuIEByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMp
OworfQorCitmdW5jdGlvbiByZWxlYXNlTG9jaygpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKSkKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciIpOworCisgICAgaWYgKCF0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtKQorICAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHRoaXMuQHJlYWRSZXF1ZXN0cy5sZW5ndGgpCisgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisKKyAgICBAY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRl
cih0aGlzKTsKK30KKworZnVuY3Rpb24gY2xvc2VkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQorICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbGxlZSBvZiBjbG9zZWQgaXMgbm90IGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisKKyAgICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlz
ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CmluZGV4IGViNTkwMzAyODkyNjRmODkzMWE2NDJmYTY4M2ViYjNlYjI5YmUwMDEuLjk0OTJlMDY4
ZGM1NTZhNWQ4NDk4OGRmNThhYjhjODhjZDI3NTc4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMzk0NiwyMCArMzk0Niw2IEBACiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwIj4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgpAQCAtNjgzMSw4ICs2ODE3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNl
bnRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNh
dGlvbnNcV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25zLmNwcCIgLz4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbS5jcHAiIC8+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VBdXRob3JpemVyLmNwcCIg
Lz4KQEAgLTE4NTM5LDQ5ICsxODUyMyw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAiPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20u
Y3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFJlYWRhYmxlSlNTdHJlYW0uY3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCI+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMjA1NjEsOSArMjA1
MDMsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25z
XE5vdGlmaWNhdGlvbkNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xub3RpZmljYXRpb25zXFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwbHVnaW5zXFBsdWdpblJlcGxhY2Vt
ZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN0cmVhbXNcUmVh
ZGFibGVTdHJlYW0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3Ry
ZWFtc1xSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcc3RyZWFtc1xSZWFkYWJsZVN0cmVhbVJlYWRlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxBYnN0cmFjdERhdGFiYXNl
U2VydmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXENoYW5nZVZlcnNpb25EYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXENoYW5nZVZlcnNpb25XcmFwcGVyLmgiIC8+CkBAIC0yMjQ2Miw2
ICsyMjQwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcSlNEaWN0aW9uYXJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xqc1xKU0RPTUJpbmRpbmcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXEpTRE9NQ29uc3RydWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NUHJvbWlzZS5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IDMyMDdlOTg0NzgzMTMwMDIyMzZlYzRlNGY5YjJmYThlYTM4MDRkMjcu
LjBlOGU1MTJjMjg2NWU5YWUxZDZkODU5MWQ0MzkxNDFjNDYwMTVkNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTEsNSArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNy
b3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgor77u/PD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0idXRmLTgiPz4gPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8
SXRlbUdyb3VwPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRGVyaXZlZFNvdXJjZXMiPgogICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+ezk1NTQ4N2U4LTk0YWQtNDVjMS05Y2M4LWNiODg5MTFlOWQ3Y308
L1VuaXF1ZUlkZW50aWZpZXI+CkBAIC00NjgsMTIgKzQ2Nyw2IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyR2xvYmFsU2NvcGVOb3RpZmlj
YXRpb25zLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcbm90aWZpY2F0aW9uczwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xz
dHJlYW1zXFJlYWRhYmxlU3RyZWFtLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcc3RyZWFt
czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1xzdHJlYW1zXFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVy
Pk1vZHVsZXNcc3RyZWFtczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC00NDA0LDE2ICs0Mzk3LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiPgogICAgICAgPEZp
bHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAiPgot
ICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpT
UmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFJlYWRhYmxlSlNTdHJlYW0uY3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNw
cCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1NRTFJlc3VsdFNldFJv
d0xpc3RDdXN0b20uY3BwIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4ZjJlNDg4YzViYTY5NWQyY2U4YTAzNmYyM2RmZjVmZWE1
NmU3OTYxLi42MDA0ZTI0ZDRmMDU3OWJlMmUwNmMxODRiNzgzNzNjZGJiOThhMjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
MzUsMTAgKzYzNSwxMCBAQAogCQkxNEQ4MjQwODBBRjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4
MjQwNjBBRjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTREQzBEMzcwOUZFRDA3MzAwN0IwMjM1
IC8qIEpTTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNERDMEQzNTA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmNwcCAqLzsgfTsKIAkJMTRE
QzBEMzgwOUZFRDA3MzAwN0IwMjM1IC8qIEpTTm9kZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREQzBEMzYwOUZFRDA3MzAw
N0IwMjM1IC8qIEpTTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07
Ci0JCTE0RENGM0IyMUI2QkUyMDgwMDYyRDRDMyAvKiBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRE
Q0YzQjAxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5jcHAg
Ki87IH07Ci0JCTE0RENGM0IzMUI2QkUyMDgwMDYyRDRDMyAvKiBKU0J5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RENGM0IxMUI2QkUyMDgwMDYyRDRDMyAvKiBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
aCAqLzsgfTsKIAkJMTREQ0YzQjIxQjZCRTIwODAwNjJENEMyIC8qIEpTQ291bnRRdWV1aW5nU3Ry
YXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTREQ0YzQjAxQjZCRTIwODAwNjJENEMyIC8qIEpTQ291bnRRdWV1aW5nU3RyYXRlZ3kuY3BwICov
OyB9OworCQkxNERDRjNCMjFCNkJFMjA4MDA2MkQ0QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RENGM0IwMUI2QkUyMDgwMDYyRDRDMyAvKiBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
Y3BwICovOyB9OwogCQkxNERDRjNCMzFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdT
dHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTREQ0YzQjExQjZCRTIwODAwNjJENEMyIC8qIEpTQ291bnRRdWV1aW5nU3RyYXRlZ3kuaCAqLzsg
fTsKKwkJMTREQ0YzQjMxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRE
Q0YzQjExQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oICov
OyB9OwogCQkxNEU4Mzc4NDA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU4Mzc4MzA5Rjg1RDFDMDBC
ODVBRTQgLyogSlNFdmVudC5jcHAgKi87IH07CiAJCTE0RTgzNzhFMDlGODVENEYwMEI4NUFFNCAv
KiBKU0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNEU4Mzc4RDA5Rjg1RDRGMDBCODVBRTQgLyogSlNFdmVudC5oICovOyB9OwogCQkxNEZGRTMx
RDBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDg1LDEzICsxNDg1LDE1IEBACiAJCTQwRUNBRTdFMTZC
OEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJv
ci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU4MDE2
QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZB
QjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyog
SlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwotCQk0MTE4OUVGOTFBRDgyNzM3MDBCOTBB
MEQgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExODlFRjgxQUQ4MjMzQzAwQjkwQTBE
IC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDExQTkw
NDIxQkJBQjQ3QTAwMENGMTU2IC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUE5MDQxMUJCQUI0NkQwMDBDRjE1
NiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi87IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJD
Q0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZy
YW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhDNDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRD
b3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI3RDUzNjBG
OEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OworCQk0MTI5REY4NTFCQjVC
ODA3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOURGODMxQkI1
QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCAq
LzsgfTsKKwkJNDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2
YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTI5REY4NDFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQw
NTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CiAJCTQxMzhEMzM2MTI0NDA1NDgw
MDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4
dC5jcHAgKi87IH07CisJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTND
MkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTQxNTA3MTU3MTY4NTA2NzMwMEMzQzdCMyAvKiBT
ZWxlY3RvckZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTUwNzE1NTE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwICov
OyB9OwogCQk0MTUwNzE1ODE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTA3MTU2MTY4NTA2
NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQk0MTUwRjlGMTEyQjZFMEU3
MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVy
VGh1bWJFbGVtZW50LmggKi87IH07CkBAIC0xNTIxLDE2ICsxNTIzLDggQEAKIAkJNDE4QTA2RDEx
MzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyog
RXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
Y3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4
MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKLQkJNDE5OEJE
RjAxQTgxMTQyMjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1
IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwICovOyB9OwotCQk0MTk4QkRGMTFBODExNDMxMDBCMjJG
QjUgLyogUmVhZGFibGVKU1N0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJl
YW0uaCAqLzsgfTsKIAkJNDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0
MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0
RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKLQkJNDE5RkFGQUUxQUJBQkQwODAwNUI4
MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUZBRkFCMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAgKi87IH07Ci0JCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE5RkFGQUMxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyLmggKi87IH07Ci0JCTQxOUZBRkIxMUFCQUJERUQwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOUZBRkIwMUFCQUJEN0IwMDVCODI4QiAvKiBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyQ3VzdG9tLmNwcCAqLzsgfTsKLQkJNDFBMDIzRUYxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRh
YmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTAyM0VCMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi87IH07
Ci0JCTQxQTAyM0YwMUEzOURCN0EwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDIzRUMxQTM5REI3OTAw
RjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmggKi87IH07Ci0JCTQxQTAyM0Y2MUEzOURCQ0IwMEY3
MjJDRiAvKiBKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTAyM0YzMUEzOURCQ0IwMEY3MjJDRiAvKiBKU1Jl
YWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3
IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERl
ZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5oICovOyB9OwogCQk0MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRD
aGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4NDAsOCArNzgzNCw4
IEBACiAJCTE0ODEzQkYzMDlFREY4OEUwMEY3NTdFMSAvKiBJRExQYXJzZXIucG0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gSURMUGFyc2VyLnBtOyBwYXRoID0gc2NyaXB0cy9J
RExQYXJzZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OEFGREEzMEFGNTgz
NjAwMDhDQzcwMCAvKiBFeGNlcHRpb25IYW5kbGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXhjZXB0aW9uSGFuZGxlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQ4QUZEQTQwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV4Y2VwdGlvbkhhbmRsZXJz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDhCNEZGRjFCNjkwNEM1MDBDOTU0
RTUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0OEI0RkZGMUI2OTA0QzUwMEM5NTRFNCAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDhCNEZGRjFCNjkwNEM1MDBDOTU0RTUgLyogQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
OTQ3RkZCMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5NDdGRkMxMkY4MENEMjAwQTBGNjMxIC8qIERv
Y3VtZW50T3JkZXJlZE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1
bWVudE9yZGVyZWRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTMw
QjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc4NjQsMTAgKzc4NTgsMTAgQEAKIAkJMTREQzBEMEIwOUZFQ0ZBNDAw
N0IwMjM1IC8qIE5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5vZGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERDMEQzNTA5RkVEMDczMDA3QjAyMzUgLyogSlNO
b2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERDMEQzNjA5RkVEMDczMDA3QjAyMzUg
LyogSlNOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTREQ0YzQjAxQjZCRTIwODAwNjJENEMzIC8q
IEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxNERDRjNCMTFCNkJFMjA4MDA2MkQ0QzMgLyogSlNCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNERDRjNCMDFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvdW50UXVldWluZ1N0cmF0
ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREQ0YzQjAxQjZCRTIwODAw
NjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERDRjNCMTFCNkJFMjA4MDA2MkQ0QzIgLyog
SlNDb3VudFF1ZXVpbmdTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NvdW50UXVldWluZ1N0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0RENGM0IxMUI2QkUyMDgwMDYyRDRDMyAvKiBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTgzNkQyMDlGODUxMjAw
MEI4NUFFNCAvKiBFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEU4Mzc4MzA5Rjg1RDFDMDBCODVBRTQgLyog
SlNFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTgzNzhEMDlGODVENEYwMEI4
NUFFNCAvKiBKU0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NzY4LDEzICs4NzYyLDE2IEBA
CiAJCTQwRUNBRTdEMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01FcnJvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQx
MTg5RUY2MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAv
KiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQxMTg5RUY4MUFEODIzM0MwMEI5MEEwRCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMUE5MDQxMUJCQUI0NkQwMDBDRjE1NiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlSlNCdWlsdGlucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jp
cHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMjlERjgxMUJCNUI3
OUIwMDMyMkExNiAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxMjlERjgyMUJCNUI3QTYwMDMyMkExNiAvKiBSZWFkYWJsZVN0
cmVhbVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0
cmVhbVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTI5REY4MzFCQjVC
N0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTI5REY4
NDFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzOEQzMzMx
MjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFdmVudENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTA3MTU1MTY4NTA2NzMwMEMzQzdC
MyAvKiBTZWxlY3RvckZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZWxlY3RvckZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NTA3MTU2MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3RvckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsaWRlclRodW1iRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgwNSwxOCArODgwMiwxMCBAQAogCQk0
MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3Ry
YWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJz
dHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMzBG
Rjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxOThCREVFMUE4MTEyMzYwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlSlNTdHJlYW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk4QkRFRjFBODExMjM2MDBCMjJGQjUg
LyogUmVhZGFibGVKU1N0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWFkYWJsZUpTU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJDMkRD
MTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOUZBRkFCMUFCQUJDRDUwMDVCODI4
QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxOUZBRkFDMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlGQUZBRDFBQkFCQ0Q1MDA1Qjgy
OEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtUmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5
RkFGQjAxQUJBQkQ3QjAwNUI4MjhCIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJl
YWRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTAyM0VCMUEz
OURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxQTAyM0VDMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFi
bGVTdHJlYW0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDIzRjMxQTM5REJDQjAwRjcyMkNGIC8q
IEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVkaWNhdGVkV29y
a2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBM0Q1OEQxMDFD
MTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEEwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hh
bm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUG9ydENoYW5u
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Mjc3LDE0ICsxNjI2NiwxMSBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxNDhCNEZGRjFCNjkw
NEM1MDBDOTU0RTUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGwgKi8sCisJCQkJNDEy
OURGODIxQkI1QjdBNjAwMzIyQTE2IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8sCisJCQkJ
NDEyOURGODExQkI1Qjc5QjAwMzIyQTE2IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICov
LAogCQkJCTE0OEI0RkZGMUI2OTA0QzUwMEM5NTRFNCAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneS5p
ZGwgKi8sCi0JCQkJNDFBMDIzRUIxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNw
cCAqLywKLQkJCQk0MUEwMjNFQzFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uaCAq
LywKIAkJCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uaWRsICov
LAotCQkJCTQxMTg5RUY2MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaCAqLywKIAkJCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmlkbCAqLywKLQkJCQk0MTlGQUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFi
bGVTdHJlYW1SZWFkZXIuY3BwICovLAotCQkJCTQxOUZBRkFDMUFCQUJDRDUwMDVCODI4QiAvKiBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5oICovLAogCQkJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAv
KiBSZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHN0cmVhbXM7
CkBAIC0yMTYyOCw2ICsyMTYxNCw3IEBACiAJCQkJQUREQTk0QkYxOTY4NkY4MDAwNDUzMDI5IC8q
IEpTRG9jdW1lbnRDdXN0b20uaCAqLywKIAkJCQk5M0I3MEQ0NzA5RUIwQzdDMDA5RDg0NjggLyog
SlNET01CaW5kaW5nLmNwcCAqLywKIAkJCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNE
T01CaW5kaW5nLmggKi8sCisJCQkJNDEzQzJDMzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29u
c3RydWN0b3IuaCAqLywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9i
YWxPYmplY3QuY3BwICovLAogCQkJCUUxQzM2QzAyMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUds
b2JhbE9iamVjdC5oICovLAogCQkJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUds
b2JhbE9iamVjdFRhc2suY3BwICovLApAQCAtMjE2NTYsMTMgKzIxNjQzLDEyIEBACiAJCQkJN0M5
MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggKi8sCiAJCQkJOTNCNzBE
NEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJ
CQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
ICovLAotCQkJCTQxMTg5RUY4MUFEODIzM0MwMEI5MEEwRCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlckN1c3RvbS5jcHAgKi8sCisJCQkJNDEyOURGODMxQkI1QjdGNzAwMzIyQTE2IC8qIEpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCAqLywKKwkJCQk0MTI5REY4NDFC
QjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCAq
LywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5oICovLAogCQkJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVs
ZUxvYWRlci5jcHAgKi8sCiAJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmggKi8sCi0JCQkJNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNT
dHJlYW0uY3BwICovLAotCQkJCTQxOThCREVGMUE4MTEyMzYwMEIyMkZCNSAvKiBSZWFkYWJsZUpT
U3RyZWFtLmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFj
dGlvbi5jcHAgKi8sCiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFj
dGlvbi5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwICovLApAQCAtMjE4MzEsOCArMjE4MTcsNiBAQAogCQkJCUZEQkQxREZCMTY3
RkUyN0QwMDUxQTExRSAvKiBKU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhB
QTYzRDE2OTUxNEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlB
ODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywK
LQkJCQk0MUEwMjNGMzFBMzlEQkNCMDBGNzIyQ0YgLyogSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5j
cHAgKi8sCi0JCQkJNDE5RkFGQjAxQUJBQkQ3QjAwNUI4MjhCIC8qIEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXJDdXN0b20uY3BwICovLAogCQkJCTRBRTBCRjg4MTgzNjA4MzEwMEYzODUyRCAvKiBKU1JU
Q0ljZUNhbmRpZGF0ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdDQTEyMEQxODJENjdEODAwRDEyMTk3
IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTA3RDA3QjEzMTgzNDE1
ODgwMEFCREQzQyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0y
NjAxMSw2ICsyNTk5NSw3IEBACiAJCQkJQjJGQTNENEYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDUxMEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNENTMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDk2RTM5RTEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdB
bmltYXRlTW90aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTUwQUI3NUE2
RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRDU3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGlvbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjY0MTYsNiArMjY0MDEsNyBAQAogCQkJCUNFMTI1MjQ5MUEx
NkMzQkMwMDg2NDQ4MCAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RGMkIwMTMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0QTBGRkE5RTFBQUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAv
KiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjY4Myw5ICsy
NjY2OSw2IEBACiAJCQkJRjU1QjNEQ0UxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVy
U2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBS
YXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOThCREYxMUE4MTE0
MzEwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUEw
MjNGMDFBMzlEQjdBMDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxOUZBRkFGMUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5h
bHlzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUzOENERCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MjFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yOTU5MiwxMCArMjk1NzUsNyBAQAogCQkJCTY1REYzMjAxMDlEMUNDNjAwMDBCRTMy
NSAvKiBKU1JhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEM5NkRDMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZDNEM5NkRF
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0MTE4OUVGOTFBRDgyNzM3MDBCOTBBMEQgLyogSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDIzRjYxQTM5REJD
QjAwRjcyMkNGIC8qIEpTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M0Qzk2REUxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5RkFGQjExQUJBQkRFRDAwNUI4MjhCIC8qIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGRTJGMTEwQzFC
NTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk4QUVDRDEz
RjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzc0REE0ODEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMwMTA2LDYgKzMwMDg2LDcgQEAKIAkJCQkyNjc3MjYwMDFB
NUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQz
RTAwRTY3NDExMDAwMUMxMjg3IC8qIE5pbmVQaWVjZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QzRBODAwMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQxMjlERjg1MUJCNUI4MDcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNv
bnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTczMjBBMjI5N0JFMDA1OEQ3
QUQgLyogTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTcz
NDBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDRUFDMTA5MUI0ODNEN0YwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMDI0OCw5ICszMDIyOSw2IEBACiAJCQkJOTNGMTlBQjkwODI0NUU1OTAwMUU5QUJD
IC8qIFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRENEMTI1MUYxMkQwMDNFRjI2
OSAvKiBSYW5nZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTg0RTlFMDE3NjY4
QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5OEJE
RjAxQTgxMTQyMjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNDFBMDIzRUYxQTM5REI3QTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTQxOUZBRkFFMUFCQUJEMDgwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAzQjEyQjAyNjc2MDBDMUEzNTkg
LyogUmVhbHRpbWVBbmFseXNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTRGNjU3MDFBQTk5
N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDE5Yzk1MWIwOTRiZDA4ZDc3ZjRmMTczYzI5YTMzYmVi
NWZhYzdhZjAuLjBhNGE4MzY3ZTJjNjU4ZDkxZGI3NWU3MWNkMzI0ZDdiOTFlZDA3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApA
QCAtMTE3LDEyICsxMTcsNyBAQAogI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmNwcCIKICNpbmNs
dWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTUG9wU3RhdGVF
dmVudEN1c3RvbS5jcHAiCi0jaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotI2luY2x1ZGUgIkpTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3Ry
ZWFtQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNw
cCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmNwcCIKLSNlbmRpZgorI2luY2x1ZGUgIkpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCIKICNpbmNsdWRlICJKU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDY5YzU5YTA0
ZTgyN2E1MDM2YjNiNmIyZDFkZTU1NzNhYWNiZTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgSlNET01Db25zdHJ1
Y3Rvcl9oCisjZGVmaW5lIEpTRE9NQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2xh
c3M+IGNsYXNzIEpTQnVpbHRpbkNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9ySlNC
dWlsdGluT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9ySlNCdWls
dGluT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNCdWlsdGluQ29uc3RydWN0b3IqIGNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNCdWlsdGluQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBKU0J1aWx0aW5Db25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBK
U0J1aWx0aW5Db25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KTogQmFzZShzdHJ1Y3R1cmUsICZnbG9iYWxPYmplY3QpIHsg
fQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKKyAgICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCYpIHsgfQorICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7CisK
KyAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCisg
ICAgSlNDOjpKU0Z1bmN0aW9uKiBjcmVhdGVJbml0aWFsaXplRnVuY3Rpb24oSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBjcmVhdGVKU09iamVjdCgp
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gdm9pZCBKU0J1aWx0aW5Db25zdHJ1
Y3RvcjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBzZXRJbml0aWFsaXplRnVuY3Rpb24odm0s
ICpjcmVhdGVJbml0aWFsaXplRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCkpOworICAgIGluaXRp
YWxpemVQcm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0NsYXNzPiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNCdWlsdGluQ29u
c3RydWN0b3I8SlNDbGFzcz46OmNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7Cisg
ICAgYXV0byogY2FzdGVkVGhpcyA9IEpTQzo6anNDYXN0PEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4o
c3RhdGUtPmNhbGxlZSgpKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FzdGVkVGhpcy0+Y3Jl
YXRlSlNPYmplY3QoKTsKKyAgICBjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFyZ3VtZW50cygqc3Rh
dGUsICpvYmplY3QsICpjYXN0ZWRUaGlzLT5pbml0aWFsaXplRnVuY3Rpb24oKSk7CisgICAgcmV0
dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEpTQ2xhc3M+IEpTQzo6Q29uc3RydWN0VHlwZSBKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNz
Pjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0
cnVjdDsKKyAgICByZXR1cm4gSlNDOjpDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNET01Db25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAzMDZjZTRiNDg3
NjVkYjQ2NjBiMjM5ZjlmNDQ3ZmVkYWQ4Y2YwZGQ2Li45ZTBmZjRmYzg5YTY4MDA2M2Q1YWE3NTYy
ZmFjZTRiNjkxZmJmMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3Jz
LmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIgogI2VuZGlm
CiAKQEAgLTg4LDYgKzg5LDExIEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIGpzTnVsbCgpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
d2luZG93LCBtX3NoZWxsLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHN0YXRpY19jYXN0PFdlYkNvcmVK
U0NsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucmVhZGFibGVTdHJl
YW1DbG9zZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucmVhZGFibGVTdHJlYW1FcnJv
cmVkUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoMiksIERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnJlYWRhYmxlU3RyZWFtUmVhZGFibGVQ
cml2YXRlTmFtZSgpLCBqc051bWJlcigzKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJp
dmF0ZU5hbWUoKSwgY3JlYXRlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVj
dG9yKHZtLCAqdGhpcyksIERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyhzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLlJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZU5hbWUoKSwgY3Jl
YXRlUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3Iodm0sICp0aGlzKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICNkZWZpbmUgREVDTEFSRV9HTE9CQUxfU1RBVElDKG5hbWUp
XAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oXAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5yZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zKCkubmFtZSMjUHJpdmF0ZU5hbWUoKSxcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1
c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MTdlMzNjN2NmYmZiZDhm
NzAyMjM3NTU4ZDczMGY4MDMyYjgwYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
SWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1
aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
Q0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICog
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
Ci0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYmUgY2FsbGVkIGRp
cmVjdGx5IikpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNjYzY2U3OGRlZGY3MzZiMjJmYzM5
MTA1NTI0YjJkYTNiZWQwMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3Rv
bS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0jaW5jbHVk
ZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1
ZGUgIkpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFt
LmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bVJlYWRlci5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi11c2luZyBu
YW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlNSZWFkYWJs
ZVN0cmVhbTo6cGlwZVRvKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgSlNWYWx1ZSBlcnJvciA9
IGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJwaXBlVG8gaXMgbm90IGltcGxlbWVu
dGVkIikpOwotICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgZXJy
b3IpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1
Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVBy
aXZhdGVDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YWMzMTFlNDI3ZDFhZWE1Y2UxODE2
NDE4Y2NmMjc0YTllY2FlYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCAr
MSw5OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgi
CisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVh
bS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
SlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0NhbGxEYXRhLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gUHVibGljIEpTIFJlYWRh
YmxlU3RyZWFtUmVkZXIgYW5kIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBj
YWxsYmFja3MuCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJl
Y3RseSIpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNS
ZWFkYWJsZVN0cmVhbVJlYWRlcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTUmVhZGFibGVT
dHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHN0YXRlLT5h
cmd1bWVudCgwKSk7CisgICAgaWYgKCFzdHJlYW0pCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0
cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0i
KSkpOworCisgICAgSlNWYWx1ZSBqc0Z1bmN0aW9uID0gc3RyZWFtLT5nZXQoc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJnZXRSZWFkZXIiKSk7CisKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGpzRnVuY3Rpb24s
IGNhbGxEYXRhKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBub0FyZ3VtZW50czsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoc3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgc3RyZWFtLCBub0FyZ3VtZW50cykpOworfQorCisvLyBQcml2YXRlIEpTIFJlYWRh
YmxlU3RyZWFtUmVkZXIgYW5kIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvcnMu
Cit0eXBlZGVmIEpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+IEpT
QnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOwordHlwZWRlZiBK
U0J1aWx0aW5Db25zdHJ1Y3RvcjxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gSlNCdWlsdGlu
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNCdWlsdGluUmVhZGFibGVTdHJlYW1SZWFk
ZXJQcml2YXRlQ29uc3RydWN0b3IpOworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rv
cik7CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFt
UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJSZWFkYWJsZVN0cmVhbVJlYWRl
clByaXZhdGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNCdWlsdGluUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXJQcml2YXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
clByaXZhdGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNCdWlsdGluUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yKSB9
OworCit0ZW1wbGF0ZTw+IEpTT2JqZWN0KiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbVJlYWRlclBy
aXZhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3QoKQoreworICAgIHJldHVybiBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI+KGdsb2JhbE9iamVjdCgpLT52bSgpLCBnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dCgpLCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRlKCkpOworfQorCit0ZW1wbGF0ZTw+IEpT
T2JqZWN0KiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0
b3I6OmNyZWF0ZUpTT2JqZWN0KCkKK3sKKyAgICByZXR1cm4gSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXI6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+
KGdsb2JhbE9iamVjdCgpLT52bSgpLCBnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSgpKTsKK30KKwordGVtcGxhdGU8PiBKU0Z1
bmN0aW9uKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6
Y3JlYXRlSW5pdGlhbGl6ZUZ1bmN0aW9uKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5G
dW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRh
YmxlU3RyZWFtUmVhZGVyQ29kZUdlbmVyYXRvcih2bSksICZnbG9iYWxPYmplY3QpOworfQorCit0
ZW1wbGF0ZTw+IEpTRnVuY3Rpb24qIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclBy
aXZhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSW5pdGlhbGl6ZUZ1bmN0aW9uKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2
YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLCAm
Z2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBjcmVhdGVSZWFkYWJsZVN0cmVhbVJlYWRlclBy
aXZhdGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcmV0dXJuIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
Lm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBjcmVhdGVS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0J1aWx0aW5SZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNCdWlsdGlu
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSwgZ2xv
YmFsT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRl
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MDAwYTRiZWQ1YTc0YmYzN2Y4
ZDM5YTI3YmMwNDE4Y2U0MzZhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oCkBAIC0wLDAg
KzEsMzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgSlNS
ZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnNfaAorI2RlZmluZSBKU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9yc19oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNp
bmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworSlNDOjpKU1ZhbHVlIGNyZWF0ZVJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKK0pTQzo6SlNWYWx1ZSBjcmVhdGVSZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIFJlYWRhYmxlU3RyZWFtQ29uc3RydWN0b3Jz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJl
YW1SZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0
YjE2OTcyZTk3ODg1OTJhNDQyMzZiZDkyNWQ1ZTU5ZWMzNDg1MjMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgot
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgot
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgot
I2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFt
LmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSXRlcmF0
b3JPcGVyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKLXsKLSAgICBp
ZiAoIW1fY2xvc2VkKSB7Ci0gICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiBjbG9zZWRQcm9taXNl
ID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKLSAg
ICAgICAgbV9jbG9zZWQuc2V0KHN0YXRlLnZtKCksIHRoaXMsIGNsb3NlZFByb21pc2UtPnByb21p
c2UoKSk7Ci0gICAgICAgIGltcGwoKS5jbG9zZWQoRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCksIGNsb3NlZFByb21pc2UpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fY2xvc2Vk
LmdldCgpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVj
dG9yIHRha2VzIGEgUmVhZGFibGVTdHJlYW0gYXMgcGFyYW1ldGVyIikpKTsKLQotICAgIEpTUmVh
ZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4
ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoIXN0cmVhbSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJs
ZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJl
YW0iKSkpOwotCi0gICAgaWYgKHN0cmVhbS0+aW1wbCgpLmxvY2tlZCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBpcyBhIGxvY2tlZCBS
ZWFkYWJsZVN0cmVhbSIpKSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBFbmNv
ZGVkSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHN0cmVhbS0+Z2xv
YmFsT2JqZWN0KCksIHN0cmVhbS0+aW1wbCgpLmdldFJlYWRlcihlYykpKTsKLSAgICBBU1NFUlQo
IWVjKTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2M3N2ZlN2ZmMTI2NjIwN2YwZDNl
ODQzZjhkNGY4YmY5ODUxODI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fu
b24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCi0KLSNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKLSNpbmNs
dWRlICJEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKLSNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTmF0aXZlU3RkRnVu
Y3Rpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZS5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5s
aW5lIEpTVmFsdWUgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBqc0Z1bmN0
aW9uLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJndW1lbnRzKQotewotICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
anNGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIHJldHVybiBjYWxsKCZleGVjLCBqc0Z1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKLX0KLQotSlNQcm9t
aXNlKiBSZWFkYWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcikKLXsKLSAgICBKU1ZhbHVlIGZ1bmN0
aW9uID0gZ2V0UHJvcGVydHlGcm9tT2JqZWN0KHN0YXRlLCAqbV9zb3VyY2UuZ2V0KCksIHByb3Bl
cnR5TmFtZSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlm
ICghZnVuY3Rpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRocm93Vk1FcnJvcigmc3Rh
dGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0g
dHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKSk7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHBhcmFtZXRlcik7Ci0KLSAgICBKU1Byb21p
c2UqIHByb21pc2UgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGNhbGxGdW5jdGlvbihzdGF0
ZSwgZnVuY3Rpb24sIG1fc291cmNlLmdldCgpLCBhcmd1bWVudHMpKTsKLQotICAgIEFTU0VSVCgh
KHByb21pc2UgJiYgc3RhdGUuaGFkRXhjZXB0aW9uKCkpKTsKLSAgICByZXR1cm4gcHJvbWlzZTsK
LX0KLQotc3RhdGljIHZvaWQgdGhlblByb21pc2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNQcm9taXNl
KiBkZWZlcnJlZFByb21pc2UsIEpTVmFsdWUgZnVsbGZpbEZ1bmN0aW9uLCBKU1ZhbHVlIHJlamVj
dEZ1bmN0aW9uKQotewotICAgIEpTVmFsdWUgdGhlblZhbHVlID0gZGVmZXJyZWRQcm9taXNlLT5n
ZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPnRoZW4pOwotICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsbGZpbEZ1bmN0aW9uKTsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdEZ1bmN0aW9uKTsKLQotICAgIGNhbGxGdW5jdGlv
bihzdGF0ZSwgdGhlblZhbHVlLCBkZWZlcnJlZFByb21pc2UsIGFyZ3VtZW50cyk7Ci19Ci0KLUpT
RE9NR2xvYmFsT2JqZWN0KiBSZWFkYWJsZUpTU3RyZWFtOjpnbG9iYWxPYmplY3QoKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9zb3VyY2UtPmdsb2Jh
bE9iamVjdCgpKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVHZW5lcmlj
RXJyb3JSZWplY3RlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlYWRhYmxlSlNTdHJlYW0m
IHJlYWRhYmxlU3RyZWFtKQotewotICAgIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBzdHJlYW0g
PSAmcmVhZGFibGVTdHJlYW07Ci0gICAgcmV0dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0
ZShzdGF0ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygp
LCBbc3RyZWFtXShFeGVjU3RhdGUqIHN0YXRlKSB7Ci0gICAgICAgIHN0cmVhbS0+c3RvcmVFcnJv
cigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNGdW5j
dGlvbiogY3JlYXRlU3RhcnRSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRl
LCBSZWFkYWJsZVN0cmVhbSYgcmVhZGFibGVTdHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxl
U3RyZWFtPiBzdHJlYW0gPSAmcmVhZGFibGVTdHJlYW07Ci0gICAgcmV0dXJuIEpTTmF0aXZlU3Rk
RnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0
KCksIDEsIFN0cmluZygpLCBbc3RyZWFtXShFeGVjU3RhdGUqKSB7Ci0gICAgICAgIHN0cmVhbS0+
c3RhcnQoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICB9KTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3lu
YyhSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQotewotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4g
cHJvdGVjdGVkU3RyZWFtID0gJnN0cmVhbTsKLSAgICBzdHJlYW0uc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU3RyZWFtXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgewotICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPnN0YXJ0KCk7Ci0gICAgfSk7Ci19Ci0KLUpT
Qzo6SlNWYWx1ZSBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+
OjpyZWFkKCkKLXsKLSAgICBSZWFkYWJsZUpTU3RyZWFtVmFsdWUgY2h1bmsgPSBtX3F1ZXVlLnRh
a2VGaXJzdCgpOwotICAgIG1fdG90YWxRdWV1ZVNpemUgLT0gY2h1bmsuc2l6ZTsKLSAgICByZXR1
cm4gY2h1bmsudmFsdWUuZ2V0KCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08
UmVhZGFibGVKU1N0cmVhbVZhbHVlPjo6ZW5xdWV1ZUNodW5rKFJlYWRhYmxlSlNTdHJlYW1WYWx1
ZSYmIGNodW5rKQotewotICAgIG1fdG90YWxRdWV1ZVNpemUgKz0gY2h1bmsuc2l6ZTsKLSAgICBt
X3F1ZXVlLmFwcGVuZChXVEY6Om1vdmUoY2h1bmspKTsKLX0KLQotdm9pZCBSZWFkYWJsZUpTU3Ry
ZWFtOjpkb1N0YXJ0KEV4ZWNTdGF0ZSYgZXhlYykKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jaygm
ZXhlYyk7Ci0KLSAgICBKU1Byb21pc2UqIHByb21pc2UgPSBpbnZva2UoZXhlYywgInN0YXJ0Iiwg
anNDb250cm9sbGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpKSk7Ci0KLSAgICBpZiAoZXhlYy5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFwcm9taXNlKSB7Ci0gICAg
ICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYygqdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICB0aGVuUHJvbWlzZShleGVjLCBwcm9taXNlLCBjcmVhdGVTdGFydFJlc3VsdEZ1
bGZpbGxlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSwgY3JlYXRlR2VuZXJpY0Vycm9yUmVqZWN0ZWRG
dW5jdGlvbihleGVjLCAqdGhpcykpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTRnVuY3Rpb24qIGNy
ZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIFJlYWRhYmxl
U3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBwcm90ZWN0ZWRT
dHJlYW0gPSAmc3RyZWFtOwotICAgIHJldHVybiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUo
ZXhlYy52bSgpLCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksIFtw
cm90ZWN0ZWRTdHJlYW1dKEV4ZWNTdGF0ZSopIHsKLSAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5m
aW5pc2hQdWxsaW5nKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9QdWxsKCkKLXsK
LSAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0g
ICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0YXRlKTsKLQotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IGludm9rZShzdGF0ZSwgInB1bGwiLCBqc0NvbnRyb2xsZXIoc3RhdGUsIGdsb2JhbE9iamVjdCgp
KSk7Ci0KLSAgICBpZiAocHJvbWlzZSkKLSAgICAgICAgdGhlblByb21pc2Uoc3RhdGUsIHByb21p
c2UsIGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihzdGF0ZSwgKnRoaXMpLCBjcmVh
dGVHZW5lcmljRXJyb3JSZWplY3RlZEZ1bmN0aW9uKHN0YXRlLCAqdGhpcykpOwotCi0gICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHN0b3JlRXhjZXB0aW9uKHN0YXRlKTsK
LSAgICAgICAgQVNTRVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIHJldHVybiAhcHJvbWlzZTsKLX0KLQotc3RhdGljIEpTRnVuY3Rp
b24qIGNyZWF0ZUNhbmNlbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywg
UmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHBy
b3RlY3RlZFN0cmVhbSA9ICZzdHJlYW07Ci0gICAgcmV0dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246
OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJp
bmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhlY1N0YXRlKikgewotICAgICAgICBwcm90ZWN0ZWRT
dHJlYW0tPm5vdGlmeUNhbmNlbFN1Y2NlZWRlZCgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0pOwotfQotCi1zdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIFJlYWRh
YmxlSlNTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcHJv
dGVjdGVkU3RyZWFtID0gJnN0cmVhbTsKLSAgICByZXR1cm4gSlNOYXRpdmVTdGRGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmlu
ZygpLCBbcHJvdGVjdGVkU3RyZWFtXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgcHJvdGVj
dGVkU3RyZWFtLT5zdG9yZUVycm9yKCpleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgICAg
IHByb3RlY3RlZFN0cmVhbS0+bm90aWZ5Q2FuY2VsRmFpbGVkKCk7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhZGFi
bGVKU1N0cmVhbTo6ZG9DYW5jZWwoSlNWYWx1ZSByZWFzb24pCi17Ci0gICAgRXhlY1N0YXRlJiBl
eGVjID0gKmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxv
Y2soJmV4ZWMpOwotCi0gICAgSlNQcm9taXNlKiBwcm9taXNlID0gaW52b2tlKGV4ZWMsICJjYW5j
ZWwiLCByZWFzb24pOwotCi0gICAgaWYgKHByb21pc2UpCi0gICAgICAgIHRoZW5Qcm9taXNlKGV4
ZWMsIHByb21pc2UsIGNyZWF0ZUNhbmNlbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKGV4ZWMsICp0
aGlzKSwgY3JlYXRlQ2FuY2VsUmVzdWx0UmVqZWN0ZWRGdW5jdGlvbihleGVjLCAqdGhpcykpOwot
Ci0gICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgc3RvcmVFeGNlcHRpb24o
ZXhlYyk7Ci0gICAgICAgIEFTU0VSVCghZXhlYy5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gIXByb21pc2U7Ci19Ci0KLVJlZlB0cjxSZWFk
YWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKLXsK
LSAgICBKU09iamVjdCoganNTb3VyY2U7Ci0gICAgaWYgKHNvdXJjZS5pc09iamVjdCgpKQotICAg
ICAgICBqc1NvdXJjZSA9IHNvdXJjZS5nZXRPYmplY3QoKTsKLSAgICBlbHNlIGlmICghc291cmNl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsICJBcmd1
bWVudCAxIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gb2JqZWN0Iik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0gZWxzZQotICAgICAgICBqc1NvdXJjZSA9
IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShzdGF0ZS52bSgpLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoc3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCBqc051
bGwoKSwgMSkpOwotCi0gICAgZG91YmxlIGhpZ2hXYXRlck1hcmsgPSAxOwotICAgIEpTRnVuY3Rp
b24qIHNpemVGdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKCFzdHJhdGVneS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7Ci0gICAgICAgIGlmIChzdHJhdGVneS5nZXQoImhpZ2hXYXRlck1hcmsiLCBo
aWdoV2F0ZXJNYXJrKSkgewotICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFy
aykpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0
ZXJNYXJrJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5v
dCBiZSBOYU4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwgMCkgewotICAgICAgICAgICAgICAg
IHRocm93Vk1SYW5nZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBvZiBBcmd1bWVudCAy
IG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBuZWdhdGl2ZSIpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0g
ZWxzZSBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgICAgICBpZiAoc3RyYXRlZ3kuZ2V0KCJzaXplIiwgc2l6ZUZ1bmN0aW9uKSkgewot
ICAgICAgICAgICAgaWYgKCFzaXplRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgIidzaXplJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmVm
UHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFk
YWJsZUpTU3RyZWFtKHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6ZUZ1bmN0aW9u
KSk7Ci0gICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3RhdGUpOwotCi0gICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBy
ZWFkYWJsZVN0cmVhbTsKLX0KLQotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShF
eGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywg
SlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08
UmVhZGFibGVKU1N0cmVhbVZhbHVlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoJnN0YXRlKSwgaGlnaFdhdGVyTWFyaykKLXsKLSAgICBtX3NvdXJjZS5zZXQoc3RhdGUudm0o
KSwgc291cmNlKTsKLSAgICBpZiAoc2l6ZUZ1bmN0aW9uKQotICAgICAgICBtX3NpemVGdW5jdGlv
bi5zZXQoc3RhdGUudm0oKSwgc2l6ZUZ1bmN0aW9uKTsKLX0KLQotSlNWYWx1ZSBSZWFkYWJsZUpT
U3RyZWFtOjpqc0NvbnRyb2xsZXIoRXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQotewotICAgIGlmICghbV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4oKnRoaXMp
OwotICAgIHJldHVybiB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QsIG1fY29udHJvbGxlci5nZXQo
KSk7Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgaWYgKGlzQ2xvc2VSZXF1ZXN0ZWQoKSB8fCBpc0Vycm9yZWQoKSkgewotICAgICAg
ICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjaGFuZ2VTdGF0
ZVRvQ2xvc2VkKCk7Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6ZXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmICghaXNSZWFkYWJsZSgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIHN0b3JlRXJyb3Ioc3RhdGUsIHZhbHVlKTsKLX0KLQotdm9p
ZCBSZWFkYWJsZUpTU3RyZWFtOjpzdG9yZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUp
Ci17Ci0gICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzdGF0ZS5leGNlcHRpb24oKS0+dmFsdWUoKTsK
LSAgICBzdGF0ZS5jbGVhckV4Y2VwdGlvbigpOwotICAgIHN0b3JlRXJyb3Ioc3RhdGUsIGV4Y2Vw
dGlvbik7Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6c3RvcmVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgZXhlYywgSlNWYWx1ZSBlcnJvcikKLXsKLSAgICBpZiAobV9lcnJvcikKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fZXJyb3Iuc2V0KGV4ZWMudm0oKSwgZXJyb3IpOwotCi0gICAgY2hhbmdl
U3RhdGVUb0Vycm9yZWQoKTsKLX0KLQotdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjplbnF1ZXVlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGNodW5rKQotewotICAgIGlmIChpc0Vy
cm9yZWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBlcnJvcigpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNDbG9zZVJlcXVlc3RlZCgpKSB7Ci0gICAgICAg
IHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFR5cGVFcnJv
cikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghaXNSZWFkYWJsZSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVzb2x2ZVJlYWRDYWxsYmFjayhjaHVuaykpIHsKLSAg
ICAgICAgcHVsbCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZG91YmxlIHNpemUg
PSByZXRyaWV2ZUNodW5rU2l6ZShzdGF0ZSwgY2h1bmspOwotICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5xdWV1ZUNodW5rKHsgSlNDOjpTdHJv
bmc8SlNDOjpVbmtub3duPihzdGF0ZS52bSgpLCBjaHVuayksIHNpemUgfSk7Ci0KLSAgICBwdWxs
KCk7Ci19Ci0KLWRvdWJsZSBSZWFkYWJsZUpTU3RyZWFtOjpyZXRyaWV2ZUNodW5rU2l6ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGNodW5rKQotewotICAgIGlmICghbV9zaXplRnVuY3Rpb24p
Ci0gICAgICAgIHJldHVybiAxOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwotICAgIGFyZ3VtZW50cy5hcHBlbmQoY2h1bmspOwotCi0gICAgSlNWYWx1ZSBzaXplVmFsdWUg
PSBjYWxsRnVuY3Rpb24oc3RhdGUsIG1fc2l6ZUZ1bmN0aW9uLmdldCgpLCBqc1VuZGVmaW5lZCgp
LCBhcmd1bWVudHMpOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgewotICAgICAgICBz
dG9yZUVycm9yKHN0YXRlLCBzdGF0ZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIGRvdWJsZSBzaXplID0gc2l6ZVZhbHVlLnRvTnVtYmVyKCZz
dGF0ZSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHN0b3JlRXJy
b3Ioc3RhdGUsIHN0YXRlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKHNpemUpIHx8IHNpemUgPCAwKSB7Ci0g
ICAgICAgIHN0b3JlRXJyb3Ioc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFJhbmdl
RXJyb3IpKTsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgZXJyb3IoKSk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBzaXplOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODMxYjg5MTYzZDU1
YTI5Nzc1YjUxM2FhZDM3ODBmODdkZWQyNDhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNT
dHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyTzE1IENhbm9uIEluYy4gMjAxNQotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuIDIwMTUKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FO
T04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0g
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJsZUpTU3RyZWFtX2gKLSNkZWZpbmUgUmVhZGFi
bGVKU1N0cmVhbV9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJSZWFk
YWJsZVN0cmVhbS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8aGVhcC9T
dHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9Qcml2YXRlTmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU0Z1bmN0aW9uOwotY2xh
c3MgSlNQcm9taXNlOwotfQotICAgIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU0RP
TUdsb2JhbE9iamVjdDsKLWNsYXNzIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjsKLQotdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotc3RydWN0IFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSB7Ci0g
ICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiB2YWx1ZTsKLSAgICBkb3VibGUgc2l6ZTsKLX07
Ci0KLXRlbXBsYXRlPD4gY2xhc3MgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0
cmVhbVZhbHVlPiA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgZG91Ymxl
IGRlc2lyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoV2F0ZXJNYXJrIC0gbV90b3RhbFF1
ZXVlU2l6ZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91YmxlIGhpZ2hXYXRlck1hcmspCi0gICAg
ICAgIDogUmVhZGFibGVTdHJlYW0oY29udGV4dCkKLSAgICAgICAgLCBtX2hpZ2hXYXRlck1hcmso
aGlnaFdhdGVyTWFyaykgeyB9Ci0KLSAgICB2b2lkIGVucXVldWVDaHVuayhSZWFkYWJsZUpTU3Ry
ZWFtVmFsdWUmJik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyVmFsdWVzKCkg
b3ZlcnJpZGUgeyBtX3F1ZXVlLmNsZWFyKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdo
VmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNpemUoKSA8PSAwOyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9xdWV1
ZS5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7Ci0K
LSAgICBEZXF1ZTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+IG1fcXVldWU7Ci0gICAgZG91YmxlIG1f
dG90YWxRdWV1ZVNpemUgeyAwIH07Ci0gICAgZG91YmxlIG1faGlnaFdhdGVyTWFyazsKLX07Ci0K
LWNsYXNzIFJlYWRhYmxlSlNTdHJlYW0gZmluYWwgOiBwdWJsaWMgUmVhZGFibGVFbnF1ZXVpbmdT
dHJlYW08UmVhZGFibGVKU1N0cmVhbVZhbHVlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxSZWFkYWJsZUpTU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUs
IGNvbnN0IERpY3Rpb25hcnkmKTsKLQotICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlND
OjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAgIHZvaWQgY2xvc2UoRXhjZXB0
aW9uQ29kZSYpOwotCi0gICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKLSAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX2Vy
cm9yLmdldCgpOyB9Ci0KLSAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUpOwotICAgIHZvaWQgZXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEV4
Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpTU3RyZWFtKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU09iamVjdCosIGRvdWJsZSwgSlNDOjpKU0Z1bmN0aW9uKik7Ci0KLSAg
ICB2b2lkIGRvU3RhcnQoSlNDOjpFeGVjU3RhdGUmKTsKLQotICAgIEpTQzo6SlNQcm9taXNlKiBp
bnZva2UoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRl
cik7Ci0gICAgdm9pZCBzdG9yZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOwotCi0gICAgdmly
dHVhbCBib29sIGRvUHVsbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkb0NhbmNlbChK
U0M6OkpTVmFsdWUpIG92ZXJyaWRlOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCgpOwotCi0gICAgZG91YmxlIHJldHJpZXZlQ2h1bmtTaXplKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNvbnNpZGVyIG5v
dCB1c2luZyBKU0M6OlN0cm9uZywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDYyNzgKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7Ci0K
LSAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKLSAgICBKU0M6OlN0cm9u
ZzxKU0M6OkpTRnVuY3Rpb24+IG1fc2l6ZUZ1bmN0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQotCi0jZW5kaWYgLy8gUmVh
ZGFibGVKU1N0cmVhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk5ZTA2OWZlY2NjODU2MGE4MDdhMmM2ZmMzNGMz
ZDlhMjYwOTQ5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8
c2FtQHdlYmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRl
ZiBXZWJDb3JlQnVpbHRpbk5hbWVzX2gKKyNkZWZpbmUgV2ViQ29yZUJ1aWx0aW5OYW1lc19oCisK
KyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjZGVmaW5lIFdFQkNPUkVfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKG1hY3JvKVwKKyAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHVuZGVybHlp
bmdTb3VyY2UpIFwKKyAgICBtYWNybyhxdWV1ZSkgXAorICAgIG1hY3JvKHF1ZXVlU2l6ZSkgXAor
ICAgIG1hY3JvKHN0YXJ0ZWQpIFwKKyAgICBtYWNybyhjbG9zZVJlcXVlc3RlZCkgXAorICAgIG1h
Y3JvKHB1bGxBZ2FpbikgXAorICAgIG1hY3JvKHB1bGxpbmcpIFwKKyAgICBtYWNybyhyZWFkZXIp
IFwKKyAgICBtYWNybyhzdG9yZWRFcnJvcikgXAorICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKKyAg
ICBtYWNybyhzdHJhdGVneVNpemUpIFwKKyAgICBtYWNybyhoaWdoV2F0ZXJNYXJrKSBcCisgICAg
bWFjcm8ocmVhZFJlcXVlc3RzKSBcCisgICAgbWFjcm8ob3duZXJSZWFkYWJsZVN0cmVhbSkgXAor
ICAgIG1hY3JvKGNsb3NlZFByb21pc2UpIFwKKyAgICBtYWNybyhjbG9zZWRQcm9taXNlUmVzb2x2
ZSkgXAorICAgIG1hY3JvKGNsb3NlZFByb21pc2VSZWplY3QpIFwKKyAgICBtYWNybyhjb250cm9s
bGVkUmVhZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0cmVhbUNsb3NlZCkgXAor
ICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFtUmVhZGFibGUpIFwKKyAgICBtYWNybyhyZWFkYWJsZVN0
cmVhbUVycm9yZWQpIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbVJlYWRlcikgXAorICAgIG1h
Y3JvKFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcikgXAorCitjbGFzcyBXZWJDb3JlQnVpbHRpbk5h
bWVzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJDb3JlQnVpbHRpbk5hbWVzKEpTQzo6Vk0q
IHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMp
CisgICAgeworI2RlZmluZSBFWFBPUlRfTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFw
cGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkp
OworICAgICAgICBXRUJDT1JFX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShFWFBPUlRfTkFNRSkKKyN1bmRlZiBFWFBPUlRfTkFNRQorICAgIH0KKworICAgIFdF
QkNPUkVfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCitwcml2YXRlOgorICAgIEpTQzo6Vk0m
IG1fdm07CisgICAgV0VCQ09SRV9DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gV2ViQ29yZUJ1aWx0aW5OYW1lc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAKaW5kZXggMGNjYjQxMWZhMjg0
ZTZjM2VlMWE5MjIxYTgyOGVjODQyZWUxMTMyNy4uOTZjN2UwZTk3ZTcxODcwMDBjYzBhMTVhMWRk
YTk3YzQ1MGFhYmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVKU0J1aWx0aW5zLmNwcApAQCAtMjksNSArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAiCiAjaW5jbHVkZSAiQ291bnRRdWV1aW5nU3RyYXRl
Z3lCdWlsdGlucy5jcHAiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHAiCisj
aW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuY3BwIgogI2luY2x1ZGUg
IlJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwIgorI2luY2x1ZGUgIlJlYWRhYmxl
U3RyZWFtUmVhZGVyQnVpbHRpbnMuY3BwIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKaW5kZXggMDNkYzY0MTdjNTZjY2I4MGYy
MTViOGE3MWYwMDdkN2Y0MmRiY2I1Yi4uODcwZGQ4MThlYjgyOTQ1N2VhODBlMzUzOGE4NzFkNDk5
NTI3NGMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBXZWJDb3JlSlNDbGllbnREYXRh
X2gKIAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIldlYkNvcmVCdWls
dGluTmFtZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTMxLDcg
KzMyLDkgQEAKICNpbmNsdWRlICJCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFw
cGVyLmgiCiAjaW5jbHVkZSAiQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCIK
ICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oIgorI2luY2x1ZGUgIlJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oIgogI2luY2x1ZGUgIlJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgiCisjaW5jbHVkZSAiUmVhZGFibGVT
dHJlYW1SZWFkZXJCdWlsdGluc1dyYXBwZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00MiwxNCArNDUsMTUgQEAgY2xhc3MgV2ViQ29yZUpTQ2xpZW50RGF0YSA6IHB1Ymxp
YyBKU0M6OlZNOjpDbGllbnREYXRhIHsKICAgICBmcmllbmQgdm9pZCBpbml0Tm9ybWFsV29ybGRD
bGllbnREYXRhKEpTQzo6Vk0qKTsKIAogcHVibGljOgotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkK
ICAgICBleHBsaWNpdCBXZWJDb3JlSlNDbGllbnREYXRhKEpTQzo6Vk0mIHZtKQotICAgICAgICA6
IG1fcmVhZGFibGVTdHJlYW1CdWlsdGlucygmdm0pCisgICAgICAgIDogbV9idWlsdGluTmFtZXMo
JnZtKQorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKyAgICAgICAgLCBtX3JlYWRhYmxlU3RyZWFt
QnVpbHRpbnMoJnZtKQorICAgICAgICAsIG1fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRp
bnMoJnZtKQogICAgICAgICAsIG1fcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygmdm0p
CisgICAgICAgICwgbV9yZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zKCZ2bSkKICAgICAgICAg
LCBtX2J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucygmdm0pCiAgICAgICAgICwgbV9j
b3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zKCZ2bSkKLSNlbHNlCi0gICAgV2ViQ29yZUpTQ2xp
ZW50RGF0YShKU0M6OlZNJikKICNlbmRpZgogICAgIHsKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CkBAIC04OSw5ICs5MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd29ybGRTZXQucmVtb3ZlKCZ3
b3JsZCk7CiAgICAgfQogCisgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyYgYnVpbHRpbk5hbWVzKCkg
eyByZXR1cm4gbV9idWlsdGluTmFtZXM7IH0KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAg
ICBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlciYgcmVhZGFibGVTdHJlYW1CdWlsdGlucygp
IHsgcmV0dXJuIG1fcmVhZGFibGVTdHJlYW1CdWlsdGluczsgfQorICAgIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckJ1aWx0aW5zV3JhcHBlciYgcmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRp
bnMoKSB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zOyB9CiAgICAg
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXImIHJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMoKSB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnM7IH0KKyAgICBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlciYgcmVhZGFibGVT
dHJlYW1SZWFkZXJCdWlsdGlucygpIHsgcmV0dXJuIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJCdWls
dGluczsgfQogICAgIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXImIGJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucygpIHsgcmV0dXJuIG1fYnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zOyB9CiAgICAgQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlu
c1dyYXBwZXImIGNvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMoKSB7IHJldHVybiBtX2NvdW50
UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnM7IH0KICNlbmRpZgpAQCAtMTAwLDkgKzEwOCwxMyBAQCBw
cml2YXRlOgogICAgIEhhc2hTZXQ8RE9NV3JhcHBlcldvcmxkKj4gbV93b3JsZFNldDsKICAgICBS
ZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX25vcm1hbFdvcmxkOwogCisgICAgV2ViQ29yZUJ1aWx0
aW5OYW1lcyBtX2J1aWx0aW5OYW1lczsKKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlciBtX3JlYWRhYmxlU3RyZWFtQnVpbHRpbnM7Cisg
ICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFwcGVyIG1fcmVhZGFibGVTdHJl
YW1Db250cm9sbGVyQnVpbHRpbnM7CiAgICAgUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
c1dyYXBwZXIgbV9yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zOworICAgIFJlYWRhYmxl
U3RyZWFtUmVhZGVyQnVpbHRpbnNXcmFwcGVyIG1fcmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlu
czsKICAgICBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyIG1fYnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zOwogICAgIENvdW50UXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnNXcmFwcGVyIG1fY291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluczsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDM1MjRhOGVkOGNmMWZmY2Q1NGI2YWUyNmFmNDNkNTlhNmM2ZWRkMTEuLmVjYTJlMThmMzQ1
N2I3YzgxNzczY2RiYzQ0NmMyNTI5NDQ0YThkNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0xMC0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisg
ICAgICAgIE1pZ3JhdGUgc3RyZWFtcyBBUEkgdG8gSlMgQnVpbHRpbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzA5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzaW5nIHNvbWUgdGVzdHMsIG9u
ZSBzdWJ0ZXN0IHBhc3NpbmcsIHR3byBvdGhlcnMgc3RpbGwgZmFpbGluZyBidXQgd2l0aCBkaWZm
ZXJlbnQgcmVhc29ucy4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQ6CisK
IDIwMTUtMTAtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFyayB0ZXN0cyBhcyBmbGFreSBmb3IgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tz
LWV4cGVjdGVkLnR4dAppbmRleCA1MGFkMTdmYzY1OGQwMzQ4MDkwYjNiYjViMjM1ZDU3OGUzODk1
MjgyLi5jNTZiMGY4ZDQyMDFmZWRjOTg2ZWE3N2FkZDdiM2ZhMDIyODU2ZWM1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVj
a3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKQEAgLTQsMTAgKzQsMTAgQEAgUEFT
UyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJl
Y3RseQogRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KIEZBSUwgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCiBQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5waXBlVGhyb3VnaCB3b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFy
Z3VtZW50cyAKLUZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUbyB3b3JrcyBnZW5l
cmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyBDYW4gb25seSBjYWxsIFJlYWRh
YmxlU3RyZWFtLnBpcGVUbyBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUbyB3b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhp
cyBhbmQgaXRzIGFyZ3VtZW50cyBwaXBlVG8gaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW1S
ZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG9iaiwgZ2V0dGVyTmFtZSkuZ2V0JykKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJv
dG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
CiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItZXhwZWN0ZWQudHh0CmluZGV4IDI2NDBjZDIwYTJiZTMwYTA2NDVhMDA3YzE2ODRiNWZiODYw
YzU4NzYuLjU4YWM5NGMzZmViNjZkZmI1MzRhOGU4NmMxOTEwZDViZGY0NzkxMDcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNyBAQAogCiBQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0
cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1lbnQgCi1G
QUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVj
dCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIs
IGV4cGVjdGVkIDUgZ290IDQKK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNo
b3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBt
ZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1
ZQogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4g
dGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBs
b2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKIFBBU1MgR2V0dGluZyBhIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBh
bHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>